• 枚举,Math和Random


    1.
    实用类: 01.枚举 enum Student stu=new Student(); 我们为了保证用户一个健康的输入! 我们使用了封装特性! 用户就不能直接访问我们的属性了!! private char sex; 提供了一个对外访问的接口! getSex() setSex(char sex) 在setSex()中书写我们的逻辑!如果用户输入的不健康,有默认值! 001.枚举是一种数据类型,名称就是enum! public class Hello{} public interface Hello{} public enum Hello{} 002.可以限定用户的输入 虽然之前学的封装,能保证我们数据的准确性!但是阻挡不了用户的输入! 003.所有的 枚举值 都是static final 修饰的(静态常量) 004.构造方法必须是私有的! 防止外部访问! 02.基本数据类型对应的包装类(封装类) 包装类: 001.基本数据类型能点出来方法吗? 不能!! 对应的包装类可以! 002.集合中可以存放基本数据类型吗? 不能!! 对应的包装类可以! 003.就是把基本数据类型转换成对象! 004.所有的包装类都是由fianl修饰的,不能创建子类 005.在基本数据类型需要用对象来表示的时候使用 006.jdk1.5之后,允许了基本数据类型和包装类的混合算术运算 byte Byte short Short int Integer long Long float Float double Double 上面的六种,都是数值类型! 都继承了Number类! 然后Number实现了Serializable接口! boolean Boolean char Character 他们两个都实现 了Serializable接口! 如果有个方法让我们传递一个Serializable类型的参数! 我们可不可以传递8种基本数据类型的封装类呢? 可以! 装箱和拆箱操作 (基本数据类型和对应的包装类做转换) 装箱:把基本数据类型转换成对应的包装类 拆箱:把包装类转换成对应的基本数据类型 基本数据类型中叫: 自动类型转换和 强制类型转换 引用数据类型中叫: 向上转型和向下转型! 03.Math 001.java.lang包下的一个算术类! 002.是final修饰的 003.除了构造方法之外的所有方法都是静态的!可以通过类名直接访问 天花板函数 ceil 天 向上取整 floor 地 向下取整 04.Random 随机数
    2.枚举
    /**
     * 学生的实体类
     */
    public class Student {
    
        private String name;
        private Gender sex; // 枚举类型的性别
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Gender getSex() {
            return sex;
        }
    
        public void setSex(Gender sex) {
            this.sex = sex;
        }
    
        public Student(String name, Gender sex) {
            super();
            this.name = name;
            this.sex = sex;
        }
    
        public Student() {
            super();
        }
    
        @Override
        public String toString() {
            return "Student [name=" + name + ", sex=" + sex + "]";
        }
    
    }
    student
    /**
     * 针对于性别的枚举类
     */
    public enum Gender {
    
        // 需要创建枚举值
        MAN("男"), WOMAN("女");
    
        private String genderSex;
    
        private Gender(String name) {
            this.genderSex = name;
    
        }
    
        public String getGenderSex() {
            return genderSex;
        }
    
        public void setGenderSex(String genderSex) {
            this.genderSex = genderSex;
        }
    
    }
    Gender枚举
    public class EnumTest {
    
        public static void main(String[] args) {
            // 创建学生对象
            Student stu = new Student();
            // 通过set()给stu对象赋值
            stu.setName("小黑黑");
            stu.setSex(Gender.WOMAN); // 只能是MAN和WOMAN
            System.out.println(stu.getName() + "的性别是:"
                    + stu.getSex().getGenderSex());
    
        }
    
    }
    Test

    3.包装类

    import org.junit.Test;
    
    public class PackageTest {
    
        // 所有的封装类 都有将对应的基本数据类型作为参数的方法 来构造实例
        @Test
        public void test01() {
            /**
             * Float有三个实例化构造方法  分别是  传递 double  float  String
             * 其他的数值类型都是两种构造!
             * Character只有一个构造!
             */
            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中存放的必须是数值类型的字符串
         * 除了Character来构造实例的时候,没有String类型的参数!
         * 其它7种封装类 都可以传递一个Stirng类型的变量,来构造实例!
         * 注意点:
         *    Stirng类型的变量必须能转换成数值类型,否则会抛出异常(NumberFormatException)!
         */
        @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");
        }
    
        /**
        *除了Character,都有对应的parse的方法
        */
        @Test
        public void test03() {
            Integer i = new Integer("5");
            System.out.println(i + 1);
            System.out.println(Integer.parseInt("54321") + 1);
            // 转换进制 把2进制的1011转换成10进制的数字
            System.out.println("10对应的2进制:" + Integer.parseInt("1011", 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"+1); // 221
                System.out.println("1" + (1 + 2)); // 13
            */
        }
    
        @Test
        public void test04() {
            System.out.println(Integer.toBinaryString(28)); // 转换成2进制
            System.out.println(Integer.toHexString(28)); // 转换成16进制
            System.out.println(Integer.toOctalString(28)); // 转换成8进制
        }
    
        /**
        * valueOf 
        * 把基本数据类型转换成对应的封装类
        * 除了Character没有传递String类型的参数
        * 
        * xxxValue
        * 把xxx类型转换成xxx对应的基本数据类型
        */
        @Test
        public void test05() {
            // 基本数据类型和对应封装类之间的转换 我们称之为 装箱和拆箱操作
            int a = 5;
            Integer integer = Integer.valueOf(a); // 装箱 把基本数据类型a转换成了包装类integer
            integer.intValue(); // 拆箱 把包装类integer转换成基本数据类型
    
            Double d = Double.valueOf(20.0);
            double h = d.doubleValue();
    
            Character character = Character.valueOf('a');
            character.charValue();
        }
    
        @Test
        public void test06() {
            int a = 127;
            int b = 127;
            System.out.println(a == b);
        }
    
        @Test
        public void test07() {
            Integer a = new Integer(1);
            Integer b = new Integer(1);
            System.out.println(a == b);
        }
    
        @Test
        public void test08() {
            /**
             * Integer a = 127;
            Integer b = 127;
            System.out.println(a == b);  //true
             */
    
            Integer a = 128;
            Integer b = 128;
            /**
             * 01.128是int类型  是基本数据类型
             * 02.a是integer类型 是包装类
             * 03.想把基本数据类型转换成包装类
             * 04.就需要使用valueOf(128)
             * 05.观看底层代码得知
             *  
            public static Integer valueOf(int i) {
            assert IntegerCache.high >= 127;
            if (i >= IntegerCache.low && i <= IntegerCache.high)
                return IntegerCache.cache[i + (-IntegerCache.low)];
            return new Integer(i);    当我们传入的值 大于127或者小于-128就会创建新对象
            }
             */
            System.out.println(a == b);
        }
    
    }
    包装类

    4.Math     Random

    public class MathTest {
    
        public static void main(String[] args) {
    
            System.out.println("向上取整:" + Math.ceil(20.001));
            System.out.println("向下取整:" + Math.floor(20.999));
            System.out.println("四舍五入:" + Math.round(20.5));
            System.out.println("四舍五入:" + Math.round(20.4));
            System.out.println("最大值:" + Math.max(5, 20));
            System.out.println("最小值:" + Math.min(20.4, 0.1));
            System.out.println("绝对值:" + Math.abs(-52));
            System.out.println("绝对值:" + Math.random());
            /**
             * Math.random() 底层是执行了Random类中的nextDouble()
             * 
            public static double random() {
            Random rnd = randomNumberGenerator;
            if (rnd == null) rnd = initRNG();
            return rnd.nextDouble();
            }
             */
    
        }
    
    }
    Math
    import java.util.Random;
    
    public class RandomTest {
    
        public static void main(String[] args) {
            // 创建随机数对象
            Random random = new Random();
            for (int i = 0; i < 100; i++) {
                // System.out.println(random.nextBoolean());随机输入boolean值
                // System.out.println(random.nextDouble()); 返回0-1但不包含1的随机小数
                // System.out.println(random.nextInt()); 返回int类型最小值到最大值之间的随机整数
                // System.out.println(random.nextInt(10));返回0-10之间的整数 不包含10
            }
    
        }
    
    }
    Random
  • 相关阅读:
    双向链表
    单链表实例+反转
    const,static,volatile
    html基础知识
    linux知识
    2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) D. Delivery Delays (二分+最短路+DP)
    2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) A. Altruistic Amphibians (DP)
    BZOJ 1453 (线段树+并查集)
    HDU 5634 (线段树)
    BZOJ 2124 (线段树 + hash)
  • 原文地址:https://www.cnblogs.com/wwlw/p/7490527.html
Copyright © 2020-2023  润新知