首页 > 代码库 > 基本数据类型的包装类和随机数

基本数据类型的包装类和随机数

/**
 *                     
 *   包装类/封装类:  把基本数据类型转换成对象!  
 *               每一个基本数据类型都有一个对应的包装类!都是位于java.lang包中!               
 *          作用: 提供我们操作的一系列方法!      
 *           例子:集合中能存放基本数据类型吗???不能! 必须是包装类! 
 *           
 *   基本数据类型                             包装类
 *   byte                Byte   
 *   short               Short  
 *   int                 Integer    
 *   long                Long   
 *   float               Float  
 *   double              Double 
 *   char                Character   
 *   boolean             Boolean 
 *                 
 */
public class BasisTest {

    @Test
    public  void  test01(){
        //所有的包装类都有将对应的基本数据类型作为参数!来构造实例!
         Integer  i=new Integer(1);
         Double   d=new Double(5);
         Boolean b=new Boolean(true);
         Character c=new Character(‘a‘);
    }
    
    
    @Test
    public  void  test02(){
        //除了Character类,其他所有的包装类都可以传一个字符串作为参数!
         Integer  i=new Integer("1");
         Double   d=new Double("5");
         Boolean b=new Boolean("true");
         //Character c=new Character("a");  编译报错
    }
    
    /*
     * Byte,Short,Integer,Float,Double,Long
     * 都继承了 Number这个父类
     * 当他们的参数是String来构造实例的时候  ,如果传递Null都抛出 NumberFormatException
     * 
     * Boolean    传Null是   能正常运行
     * Character  编译就报错了
     */
    @Test
    public  void  test03(){
        //Integer  i=new Integer(null);
        //Double   d=new Double(null);
        //Character c=new Character(null); 编译报错
        //在参数是String的类型时,除了 大小写的TRUE,其余的都是false
        Boolean b=new Boolean(null);
        System.out.println(b);
    }
    
    @Test
    public  void  test04(){
        String  num="12345a";
        System.out.println(num+1);  //123451  
        //使用Integer的paseInt(数值类型的String)
        System.out.println(Integer.parseInt(num)+1);
    }
    
    /*
     * valueOf() 只能传递可以转换成对应基本数据类型的值  
     * 除Character类外,其他包装类都有方法(字符串->包装类)
     */

    @Test
    public  void  test05(){
        Integer i=Integer.valueOf(20);  
        Integer a=Integer.valueOf("20"); 
        Integer b=Integer.valueOf("abc");  //NumberFormatException
        Integer c=Integer.valueOf("20.0");  //NumberFormatException
    }
    
    
    //基本数据类型和对应包装类之间的转换 我们称之为  装箱和拆箱操作
    @Test
    public  void  test06(){
        int a =5;
        Integer i=new Integer(a);   //相当于装箱
        a=i.intValue(); //相当于拆箱
        Integer b=5; //相当于装箱
        int  num=b;  //相当于拆箱
    }
    
    
    
    //所有的包装类 都有对应的方法叫做    包装类Value()  作用:转换成基本数据类型 (拆箱)
    @Test
    public  void  test07(){
        Double a=new Double(50);
        Double b=new Double(50.5);
        Double c=new Double("50.5");
        double d=c.doubleValue();  //转换成基本数据类型 
        System.out.println(d);
        Float f=new Float(58.0);
        float e=f.floatValue(); //转换成基本数据类型 
        Character t =new Character(‘a‘);
        System.out.println(t.charValue()+1);
        
        Boolean l=new Boolean("true");
        System.out.println(l.booleanValue());
    }
    
    
    @Test
    public  void  test08(){
        /*
         * 除了 Character之外 ,每个包装类都有对应的parse方法
         */
        System.out.println(Integer.parseInt("123"));
        System.out.println(Double.parseDouble("123"));
        System.out.println(Boolean.parseBoolean("123"));
        System.out.println(Long.parseLong("123"));
        /*int  n =null;   编译报错
        Integer an=null;*/
    }
    
    
    
    @Test
    public  void  test09(){
        Integer a=50;
        Integer b=new Integer(50);
        int     c=50;
        System.out.println(a==b);  //false
        System.out.println(c==b);  //true    基本数据类型和对应的包装类比较 都是true
        System.out.println(c==a);  //true
    }
    
    
    @Test
    public  void  test10(){
        /*Integer a=new Integer(50);
        Integer b=new Integer(50);
        System.out.println(a==b);  //false*/
    /*    Integer a=127;
        Integer b=127;
        System.out.println(a==b); //true*/    
    
        Integer a=128;  //底层 执行了  valueOf()   new  Integer(128)
        Integer b=128;
        System.out.println(a==b); //false
        
    }
    
    
    
    
    @Test
    public  void  test11(){
        System.out.println("向上取值:"+Math.ceil(50.1));
        System.out.println("向下取值:"+Math.floor(50.2));
        System.out.println("绝对值:"+Math.abs(-50));
        System.out.println("最大值:"+Math.max(50, 60));
        System.out.println("最小值:"+Math.min(50, 60));
        System.out.println("随机数:"+(int)(Math.random()*10));
        
        Random random=new Random();
        for (int i = 1; i <=100; i++) {
            System.out.println(random.nextInt());  //int值的区间
        }
        System.out.println("*********************");
        for (int i = 1; i <=100; i++) {
            System.out.println(random.nextInt(100));  //0-99  不包含100
        }
    }
    
    
    
    //随机数
    @Test
    public   void  test12(){
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个4位数字:");
        String num=scanner.next();
        //把String类型的num转换成int
        int realNum=Integer.parseInt(num);
        //获取百位
        int bai=realNum/100%10;
        Random random=new Random();
        //定义一个标记
        boolean flag=false;
        for (int i = 1; i <=100; i++) {
        int a=    random.nextInt(10);
        System.out.println("第"+i+"次的随机数:"+a);
            if (a==bai) {
                //找到了
                flag=true;
                break;
            }
        }
        if (flag) {
            System.out.println("中奖了");
        }else {
            System.out.println("下次努力...");
        }
    }
    
}

  

基本数据类型的包装类和随机数