我的定位:中高级人才(框架熟练、Java语法精通、数据库会用、Linux会用、中间件会用、有大数据经验!)
开始,我以为自己什么都知道。后来发现,其实我什么都不知道。

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

public class BasisTest {

    /**
     *  封装类/包装类 :  把 基本数据类型转换成对象!
     * 
     *  基本数据类型               包装类
     *  byte           Byte
     *  short          Short
     *  int            Integer
     *  long           Long
     *  float          Float
     *  double         Double
     *  char           Character
     *  boolean        Boolean
     *  
     *  使用我们的封装类 ,就可以使用类中对应的方法
     *  集合中在存储基本数据类型时!只能存放封装类!
     */

    // 所有的封装类 都有将对应的基本数据类型作为参数的方法 来构造实例
    @Test
    public void test01() {
        /**
         * 除了Character来构造实例的时候,没有String类型的参数!
         * Float有三个实例化构造方法  分别是  传递 double  float  String
         */
        Byte a = new Byte((byte) 1);
        Short s = new Short((short) 1);
        Integer b = new Integer(5);
        Long l = new Long(1);
        Float f = new Float(2);
        Double c = new Double(5);
        // 上面的六个封装类都继承了Number
        Boolean boolean1 = new Boolean(true);
        Character character1 = new Character((char) 1);
        Character character2 = new Character('1');
    }

    /**
     * 六个封装类继承了Number
     * 用String来构造实例的时候,String中存放的必须是数值类型的字符串
     */
    @Test
    public void test02() {
        Byte a = new Byte("1");
        Short s = new Short("1");
        Integer b = new Integer("1");
        Long l = new Long("1");
        Float f = new Float("1");
        Double c = new Double("1");
        // 除了大小写的true 其它都返回false
        Boolean boolean1 = new Boolean("");
        System.out.println(boolean1);
        // 编译报错 Character character1 = new Character("1");
    }

    @Test
    public void test03() {
        System.out.println(Integer.toBinaryString(28)); // 转换成2进制
        System.out.println(Integer.toHexString(28)); // 转换成16进制
        System.out.println(Integer.toOctalString(28)); // 转换成8进制
    }

    /**
     * 六个封装类继承了Number,只要不是传递 字符串类型的数值
     * 都会抛出NunberFormatException
     */
    @Test
    public void test04() {
        // Integer integer = new Integer(null);
        double a = 1;
        System.out.println(a);
        Double double1 = new Double(1);
        System.out.println(double1);
    }

    /**
     * 
     *除了Character,都有对应的parse的方法
     */
    @Test
    public void test05() {
        Integer integer = new Integer(5);
        //第一个参数是对应进制的写法
        System.out.println(integer.parseInt("11011", 2));
        /**    String num = "27";
            System.out.println(Integer.parseInt(num) + 1);

            Double.parseDouble("20");
            Byte.parseByte("1");
            Short.parseShort("1");

            System.out.println(1 + 1 + "2"); // 22
            System.out.println("1" + (1 + 2)); // 13
        */
    }

    /**
     * valueOf 
     * 把基本数据类型转换成对应的封装类
     * 除了Character没有传递String类型的参数
     * 
     * xxxValue
     * 把xxx类型转换成xxx对应的基本数据类型
     */
    @Test
    public void test06() {

        // 基本数据类型和对应封装类之间的转换 我们称之为 装箱和拆箱操作
        int a = 5;
        Integer integer = Integer.valueOf(a);
        integer.intValue();

        Double double1 = Double.valueOf(20);
        double1.doubleValue();

        Character character = Character.valueOf('a');
        character.charValue();
    }

    @Test
    public void test07() {
        Integer a = new Integer(1);
        Integer b = new Integer(1);
        int c = 1;
        System.out.println(a == b); // false 都是new出来的对象
        System.out.println(a == c);
    }

    @Test
    public void test08() {
        /**
         *底层默认执行了valueOf() 
         *如果值在  -128到127 之间  则不会new对象
         *否则 会new出来新的对象
         */
        Integer a = 128;
        Integer b = 128;
        System.out.println(a == b); // false
    }

}
@Test
    public void testMath() {
        System.out.println("向上取值:" + Math.ceil(50.1));
        System.out.println("向下取值:" + Math.floor(50.9));
        System.out.println("绝对值:" + Math.abs(-50.9));
        System.out.println("最大值:" + Math.max(50, 60));
        System.out.println("最小值:" + Math.min(50, 60));
        System.out.println("随机数:" + (int) (Math.random() * 10));
        // 之前使用的Math.random() 其实是调用了Random.nextDouble();
    }

    @Test
    public void testRandom() {
        Random random = new Random();
        for (int i = 0; i < 100; i++) {
            // System.out.println(random.nextBoolean()); 随机boolean类型的值
            // System.out.println(random.nextDouble()); 0-1之间
            // System.out.println(random.nextInt()); int取值范围
            System.out.println(random.nextInt(10)); // 参数的范围 但是不包含本身 参数必须大于0
        }
    }
//随机数
    @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("下次努力...");
        }
    }
    
}

 

posted @ 2017-06-29 13:01  想太多先森  阅读(136)  评论(0编辑  收藏  举报