基本数据类型、包装类和String之间的相互转化及常用面试题

1、基本数据类型 ---- > 包装类,调用包装类的构造器

    @Test
    public void test1(){
        int num = 10;
      //  System.out.println(num.toString());
        Integer int1 = new Integer(num);
        System.out.println(int1.toString());

        Integer int2 = new Integer("123");
        System.out.println(int2.toString());

        Float f1 = new Float(12.3f);
        Float f2 = new Float("12.3");
        System.out.println(f1);
        System.out.println(f2);
    }

2、包装类 ---> 基本数据类型:调用包装类的XXXValue()

    @Test
    public void test2(){
        Integer in1 = Integer.valueOf(12);
        int i = in1.intValue();
        System.out.println(i+1);

        Float f1 = Float.valueOf(13.2f);
        float f = f1.floatValue();
        System.out.println(f + 1);
    }

3、自动装箱与自动拆箱

    @Test
    public void test3(){
//        int num1 = 20;
//        // 基本数据类型 -- > 包装类的对象
//        method(num1);

        // 自动装箱
        int num2 = 10;
        Integer in1 = num2; // 自动装箱

        boolean b1 =true;
        Boolean b2 = b1;   // 自动装箱

        // 自动拆箱:包装类--->基本数据类型
        System.out.println(in1.toString());

        int num3 = in1;  // 自动拆箱

    }

4、基本数据类型、包装类---->String类型:调用String重载的valueOf(xxx xxx)

    @Test
    public void test4(){
        int num1 = 10;
        // 方式1:连接运算
        String str1 = num1 + "";
        // 方式2: 调用String的valueof(xxx xxx)
        float f1 = 12.3f;
        String s = String.valueOf(f1); // "12.3"
        
        Double d1 = new Double(12.3);
        String s1 = String.valueOf(d1);
        System.out.println("s = " + s);
        System.out.println("s1 = " + s1); // "12.3"
    }

5、String类型 ---> 基本数据类型、包装类:调用包装类的parseXX()

@Test
    public  void test5(){
        String str1 = "123";

        int i = Integer.parseInt(str1);
        System.out.println(i+1);

        String str2 = "true";
        boolean b = Boolean.parseBoolean(str2);
        System.out.println(b);
    }

 常见面试题

1、下面代码输出的结果是否一样?各是什么?

         // 三元运算符 要去前后执行的连个语句的格式相同 所以Integer 会提升为Double类型
        Object o1 = true ? new Integer(1) : new Double(2.0);
        System.out.println(o1);  // 1.0

        Object o2;
        if (true)
            o2 = new Integer(1);
        else
            o2 = new Double(2.0);
        System.out.println(o2);  // 1

2、下面的代码结果为什么

        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内部定义了IntegerCache结构,IntegerCache中定义了Integer[]
             保存了从-128 - 127范围的整数。如果我们使用自动装箱的方式,给Integer
             赋值范围再-123 - 127范围内时,可以直接使用数组中的元素,不用再去new了。
             目的:提高效率
         */
        Integer x = 128;
        Integer y = 128;
        System.out.println(x == y); // false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值