JAVA小测试(基础篇)

JAVA小测试(基础篇)

1.Integer a=1000,b=1000;
Integer c=100,d=100;

System.out.println(a==b);System.out.println(c==d);

false,true

按照常理来说,这四个数都是新建的对象,应该是false才对,官方的解释是:
由于小数使用的较多,所以把-128--127之间的数缓存了下来,这时引用的就是同一个对象,所以是false和true;
  1. String s1=“abc”;
    String s2=“abc”;
    String s3=new String(“abc”);
    System.out.println(s1==s2);

    System.out.println(s1==s3);
    结果是true,false
    我们知道:基本类型变量和对象的引用变量都是在函数的栈内存中分配的,而堆内存中则存放new出来的对象和数组,其实还有一块区域叫常量池;
    当我们创建String s1=“abc”;时,其实abc被存到了字符串常量池中,这样当我们再次创建Strings2=“abc”;时,此时的abc也是来自常量池。
    而new出来的字符串是在堆中存储的;
    3.Integer a=new Integer(1000);
    int b=1000;

    System.out.println(a==b);

    true;
    原因:由于是1000,所以不存在缓存问题,Integer和int比较时,会将Integer拆箱为int,所以是true;

4、int[]arr1={1,2,3,4,5,6};int[]arr2={1,2,3,4,5,6};

 System.out.println(arr1==arr2);
 System.out.println(arr1.equals(arr2));

false;false

因为数组没有重写equals方法,所以和==是一样的;

那么比较两个数组是否相等用Arrays.equals(arr1,arr2); true 而且此方法只能比较一层,多层嵌套的数组就不起作用了;

深层嵌套数组的比较Arrays.deeEquals(arr1,arr2);就像下面这样,但是此方法参数必须是包装类,

int[]arr1={1,2,3,4,5,6};

int[]arr2={1,2,3,4,5,6};

System.out.println(Arrays.deeoEquals(arr1,arr2));


作者:-囍
来源:优快云
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值