2019-04-23 Java基础复习

途中、感受

进行了一段时间的学习,真是收益良多。记录一些忘记的、新学的知识点。

Integer

    Integer i4 = 1;
    Integer i5 = 1;
    System.out.println(i4 == i5); // true

    Integer i6 = 127;
    Integer i7 = 127;
    System.out.println(i6 == i7); // true

    Integer i8 = 128;
    Integer i9 = 128;
    System.out.println(i8 == i9); // false

    Integer i1 = new Integer(1);
    Integer i2 = 1;
    System.out.println(a1 == a2); // false

Integer类中缓存了[-128, 127]的声明。所以i4跟i5并不是新建对象,而是从缓存中取的对象,地址值是相同。
i1 != i2是由于 i1 并不是取的缓存,而是新建对象。

String

    String s1 = "Hello";
    String s2 = "World";
    String s3 = "Hello" + "World";
    String s4 = s1 + s2;
    String s5 = s1 + "World";
    String s6 = "Hello" + s2;
    String s7 = "HelloWorld";
    System.out.println(s3 == s7); // true
    System.out.println(s3 == s4); // false
    System.out.println(s3 == s5); // false
    System.out.println(s3 == s6); // false
    System.out.println(s4 == s5); // false
    System.out.println(s4 == s6); // false
    System.out.println(s5 == s6); // false

String拼接运算全是常量时,结果对象在常量池中,地址值相同。
运算中有对象时,结果对象在堆中,导致地址不相同。

你可能感兴趣的:(2019-04-23 Java基础复习)