美文网首页Java学习笔记
Java中的“基本类型”、“包装类型”和“String类型”之间

Java中的“基本类型”、“包装类型”和“String类型”之间

作者: 帕博雷克斯丢丢 | 来源:发表于2018-07-30 18:41 被阅读0次

    一切尽在代码中


    package package0002;
    
    public class WrapperClass {
        public static void main(String[] args) {
    
    
            /* 基本类型————>包装类型 */
    
            /**
             * 可以直接把基本类型的变量赋值给包装类(或者说引用);
             * 实际上在这里,编译器自动地调用了包装类的{@code valueOf()}方法;
             * 这只是一个语法糖,而非真正的把基本类型赋值给了包装类型。
             */
            //#statement001-001
            Integer intNum1 = 23;
            //#statement001-002
            Float floatNum1 = 3.14F;
            //#statement001-003
            Double doubleNum1 = 3.1415926;
            //#statement001-004
            Short shortNum1 = 223;
            //#statement001-005
            Long longNum1 = 666L;
            //#statement001-006
            Byte byteNum1 = 127;
            //#statement001-007
            Character charWord1 = 'k';
            //#statement001-008
            Boolean bool1 = true;
    
            /**
             * 用包装类的构造方法实例化一个包装类对象,入参为对应的基本类型;
             * 值得一提的是:java的基本数据类型中,整型的默认类型是{@code int},浮点型的默认类型是{@code double}。
             */
            //#statement002-001
            Integer intNum2 = new Integer(23);
            //#statement002-002
            Float floatNum2 = new Float(3.14F);
            //#statement002-003
            Double doubleNum2 = new Double(3.1415926);
            //#statement002-004
            short shortValue2 = 223;
            Short shortNum2 = new Short(shortValue2);    //这里直接在括号内写数值的话,编译器会把它认作 int 类型,什么鬼???
            //#statement002-005
            Long longNum2 = new Long(666L);
            //#statement002-006
            byte byteValue2 = 127;  //必须注意的是 byte 类型的取值是 -128~127,超过这个数值会被默认为 int 类型
            Byte byteNum2 = new Byte(byteValue2);   //同上#statement002-004,真奇葩!
            //#statement002-007
            Character charWord2 = new Character('k');
            //#statement002-008
            Boolean bool2 = new Boolean(true);
    
            /**
             * 使用包装类的静态方法{@code valueOf()},入参为对应的基本类型;
             */
            //#statement003-001
            Integer intNum3 = Integer.valueOf(23);
            //#statement003-002
            Float floatNum3 = Float.valueOf(3.14F);
            //#statement003-003
            Double doubleNum3 = Double.valueOf(3.1415926);
            //#statement003-004
            short shortValue3 = 223;
            Short shortNum3 = Short.valueOf(shortValue3);
            //#statement003-005
            Long longNum3 = Long.valueOf(666L);
            //#statement003-006
            byte byteValue3 = 127;
            Byte byteNum3 = Byte.valueOf(byteValue2);
            //#statement003-007
            Character charWord3 = Character.valueOf('k');
            //#statement003-008
            Boolean bool3 = Boolean.valueOf(true);
    
    
            /* 包装类型————>基本类型 */
    
            /**
             * 使用包装类的实例方法{@code *Value()};
             */
            //#statement006-001
            int intvalue6 = intNum3.intValue();
            //#statement006-002
            float floatValue6 = floatNum3.floatValue();
            //#statement006-003
            double doubleValue6 = doubleNum3.doubleValue();
            //#statement006-004
            short shortValue6 = shortNum3.shortValue();
            //#statement006-005
            long longValue6 = longNum3.longValue();
            //#statement006-006
            byte byteValue6 = byteNum3.byteValue();
            //#statement006-007
            char charValue6 = charWord3.charValue();
            //#statement006-008
            boolean boolValue6 = bool3.booleanValue();
    
    
            /* String类型————>包装类型 */
    
            /**
             * 同样用构造方法来实现;是以{@code value}为入参的构造方法的重载;
             * 用包装类的构造方法实例化一个包装类对象,入参为字面量对应的{@code String}类型;
             * 必须注意的是:{@code Character}类是没有这个方法的,因为String怎么可以转成char嘛!
             * 还有就是:字符串字面量是不能超出类型本身的取值范围或者类型不匹配的,否则会报错;
             * 比如:{@code Integer intNum3 = new Integer("sug")},肯定会报错,因为{@code "sug"}不是一个合法的int类型;
             * 再比如{@code Byte byteNum3 = new Byte("369")}也会报错,因为{code 369}超过了byte类型的取值范围,
             */
            //#statement004-001
            Integer intNum4 = new Integer("23");
            //#statement004-002
            Float floatNum4 = new Float("3.14F");
            //#statement004-003
            Double doubleNum4 = new Double("3.1415926");
            //#statement004-004
            Short shortNum4 = new Short("223");
            //#statement004-005
            Long longNum4 = new Long(666L);
            //#statement004-006
            Byte byteNum4 = new Byte("127");
            //#statement004-008
            Boolean bool4 = new Boolean("true");
    
            /**
             * 使用包装类的静态方法{@code valueOf()},入参为字面量对应的{@code String}类型;
             * 同理,{@code Character}类没有这个方法;
             */
            //#statement005-001
            Integer intNum5 = Integer.valueOf("23");
            //#statement005-002
            Float floatNum5 = Float.valueOf("3.14F");
            //#statement005-003
            Double doubleNum5 = Double.valueOf("3.1415926");
            //#statement005-004
            Short shortNum5 = Short.valueOf("223");
            //#statement005-005
            Long longNum5 = Long.valueOf("666L");
            //#statement005-006
            Byte byteNum5 = Byte.valueOf("127");
            //#statement005-008
            Boolean bool5 = Boolean.valueOf("true");
    
    
            /* 包装类型————>String类型 */
            /* 基本类型————>String类型 */
    
            /**
             * 使用包装类的静态方法{@code toString()};
             */
            //#statement007-001
            String intStr7 = intNum2.toString();
            String intStr71 = Integer.toString(23);
            //#statement007-002
            String floatStr7 = floatNum2.toString();
            String floatStr71 = Float.toString(3.14F);
            //#statement007-003
            String doubleStr7 = doubleNum2.toString();
            String doubleStr71 = Double.toString(3.1415926);
            //#statement007-004
            String shortStr7 = shortNum2.toString();
            short shortValue71 = 223;
            String shortStr71 = Short.toString(shortValue71);
            //#statement007-005
            String longStr7 = longNum2.toString();
            String longStr71 = Long.toString(666L);
            //#statement007-006
            String byteStr7 = byteNum2.toString();
            byte byteValue71 = 127;
            String byteStr71 = Byte.toString(byteValue71);
            //#statement007-007
            String charStr7 = charWord2.toString();
            String charStr71 = Character.toString('k');
            //#statement007-008
            String boolStr7 = bool2.toString();
            String boolStr71 = Boolean.toString(true);
    
    
            /* String类型————>基本类型 */
    
            /**
             * 使用包装类的静态方法{@code parse*()};
             * 同理,{@code Character}类没有这个方法;
             */
            //#statement008-001
            int intNum8 = Integer.parseInt("23");
            //#statement008-002
            float floatNum8 = Float.parseFloat("3.14F");
            //#statement008-003
            double doubleNum8 = Double.parseDouble("3.1415926");
            //#statement008-004
            short shortNum8 = Short.parseShort("223");
            //#statement008-005
            long longNum8 = Long.parseLong("666L");
            //#statement008-006
            byte byteNum8 = Byte.parseByte("127");
            //#statement008-008
            boolean bool8 = Boolean.parseBoolean("true");
            
            /**
             * 其实在这么多方法的背后,更多的是原理;
             * 在平时的代码中,若非必须,可以直接用“=”来连接包装类型和基本类型;
             * 因为在Java5以后的版本中,编译器会自动帮你装箱拆箱。
             */
        }
    }
    

    相关文章

      网友评论

        本文标题:Java中的“基本类型”、“包装类型”和“String类型”之间

        本文链接:https://www.haomeiwen.com/subject/kkfqvftx.html