package AdvanceJava;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Compile {
/*public static void say1(List<Integer> list)
{
System.out.println("list<Integer>");
}
public static int say1(List<String> list)
{
System.out.println("list<String>");
return 1;
}*/
public static void main(String args[])
{
/*List<Integer> list = Arrays.asList(1,2,3,4);
int sum = 0;
for(int i:list)
sum+=i;
//say1(new ArrayList<String>());
System.out.println(sum);*/
String a ="ab";
String b = "a"; // 如果定义为final ,则会返回 true
System.out.println(a==b+"b");// false 对于字符串 + 如果是两个字面量 + ,会在编译时期就放入 常量 池中
String aa = "ab"; // 而如果 里面含有 变量引用,那么就不能在编译时期优化,只有在运行的时候new 一个新的
System.out.println(a == "a"+"b");
Integer c = 222;
Integer d = 222;
System.out.println(c==d); //false 因为它们不会自动拆箱,所以比较的就是两个存在堆上的两个对象(大于一个字节存储在堆上,小于一个字节在常量池中)
Integer e = 221;
Integer f = 220;
System.out.println(e==f+1); //true == 在遇到运算符之前不会自动拆箱装箱,它们编译后调用 intValue() 来比较它们的数值,而不是对象
}
}
拆箱、字面量、字符串+等细节问题
最新推荐文章于 2020-10-01 16:33:55 发布