民工心事 发表于 2022-8-27 06:37:47

Java面向对象(六)

Java面向对象(六)


目录

[*]Java面向对象(六)

[*]

[*]十九、包装类

[*]19.1 八种基本类型包装类
[*]19.2 基本类型、包装类与 String 类间的转换。
[*]19.3 基本数据类型转换为包装类(装箱)
[*]19.4 包装类转换为基本数据类型(拆箱)
[*]19.5 自动装箱拆箱
[*]19.6 基本数据类型、包装类转换为String类型
[*]19.7 String类型转换为基本数据类型、包装类
[*]19.8 特殊例子




十九、包装类

19.1 八种基本类型包装类

java 提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征。
https://img2022.cnblogs.com/blog/2746686/202205/2746686-20220529142439354-1402963878.png
19.2 基本类型、包装类与 String 类间的转换。

https://img2022.cnblogs.com/blog/2746686/202205/2746686-20220529142729930-1617391655.png
19.3 基本数据类型转换为包装类(装箱)

public void test1(){
        public static void main(String[] args){
             
                int num1 = 10;
//                System.out.println(num1.toString());                报错
                Integer in1 = new Integer(num1);                        //通过构造器装箱
                System.out.println(in1.toString());
               
                Integer in2 = new Integer("123");                        //通过字符串参数装箱
                System.out.println(in2.toString());
   
               
                //报异常
//                Integer in3 = new Integer("123abc");
//                System.out.println(in3.toString());
               
                Float f1 = new Float(12.3f);                                //通过构造器装箱
                Float f2 = new Float("12.3");                                //通过字符串参数装箱
                System.out.println(f1);
                System.out.println(f2);
               
                Boolean b1 = new Boolean(true);
                Boolean b2 = new Boolean("TrUe");
                System.out.println(b2);                                                //true
/*                b2 返回 true 原因:
                   public Boolean(String s) {
              this(parseBoolean(s));
            }
           
                public static boolean parseBoolean(String s) {
              return ((s != null) && s.equalsIgnoreCase("true"));
            }
           
                equalsIgnoreCase() 方法用于将字符串与指定的对象比较,不考虑大小写。
                如果给定对象与字符串相等,则返回 true,否则返回 false。
*/
                Boolean b3 = new Boolean("true123");
                System.out.println(b3);                                                //false       
               
                Order order = new Order();
                System.out.println(order.isMale);                        //false(基本数据类型默认值)
                System.out.println(order.isFemale);                        //null(引用数据类型默认值)

    }
}

class Order{
        boolean isMale;
        Boolean isFemale;
}19.4 包装类转换为基本数据类型(拆箱)

public void test2(){
    public static void main(String[] args){
               
      Integer in1 = new Integer(12);
               
                int i1 = in1.intValue();                        //调用类方法xxxValue()
                System.out.println(i1 + 1);                        // 13
               
               
                Float f1 = new Float(12.3);
                float f2 = f1.floatValue();                        //调用类方法xxxValue()
                System.out.println(f2 + 1);                        // 13.3
    }
}19.5 自动装箱拆箱

//        JDK 5.0 新特性:自动装箱 与自动拆箱
public void test3(){

                int num1 = 10;
                Integer in1 = num1;        //自动装箱
               
                boolean b1 = true;
                Boolean b2 = b1;        //自动装箱
               
                System.out.println(in1.toString());
   
                int num3 = in1;                //自动拆箱
               
}19.6 基本数据类型、包装类转换为String类型

// String类型:调用String重载的valueOf(Xxx xxx)
public void test4(){
        public static void main(String[] args){       
                int num1 = 10;
                //方式1:连接运算
                String str1 = num1 + "";
      
                //方式2:调用String的valueOf(Xxx xxx)
                float f1 = 12.3f;
                String str2 = String.valueOf(f1);       
               
                Double d1 = new Double(12.4);
                String str3 = String.valueOf(d1);
                System.out.println(str2);                        //"12.3"
                System.out.println(str3);                        //"12.4"
    }       
}19.7 String类型转换为基本数据类型、包装类

// 调用包装类的parseXxx(String s)
public void test5(){
        public static void main(String[] args){
      
                String str1 = "123";
                //错误的情况:
//                int num1 = (int)str1;
//                Integer in1 = (Integer)str1;
               
                int num2 = Integer.parseInt(str1);
      //当字符串中不是纯数字时,可能会报NumberFormatException
                System.out.println(num2 + 1);
               
                String str2 = "true1";
                boolean b1 = Boolean.parseBoolean(str2);
                System.out.println(b1);                //false
    }
}19.8 特殊例子

public void test6(){
        public static void main(String[] args){
      
                Object o1 = true ? new Integer(1) : new Double(2.0);
                System.out.println(o1);
      //        输出 1.0,三元运算符要求两边表达式数据类型一致,左边 Integer 类型自动类型转换为 Double      
      
    }
}public void method1() {
    public static void main(String[] args){
                Integer i = new Integer(1);
                Integer j = new Integer(1);
                System.out.println(i == j);                //false
                Integer m = 1;
                Integer n = 1;
                System.out.println(m == n);                //true
                Integer x = 128;                                //相当于new了一个Integer对象
                Integer y = 128;                                //相当于new了一个Integer对象
                System.out.println(x == y);                //false
    }
}
/*
        Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[],保存了从-128~127范围的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在-128~127范围内时,可以直接使用数组中的元素,不用再去new了。
        目的:提高效率
        详细可以看 Integer 源码
*/
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Java面向对象(六)