int a=1;
int b=1;
String s2="hello";
String s3 = newString("hello"); //又如何理解呢?
s2="hello",字符串常量存放在字符串池中,如果s3="hello".
将会在字符串池中找有没有"hello",有的话,将其赋值给s3。
new String()创建字符串,新建一个堆内存,不在字符串池中查找。
建议给字符串初始化用第一种方法。
a、b是基本数据类型的变量,所以是直接存放在栈内存里的,并且当a和b
数据相同时,他们指向常量池里的同一个地址。当值发生改变时,那么指
向的地址会发生改变,栈内存会创建一个新的内存存放已经改变后的值。
如果这个值在常量池里已经存在,那么就不会新建,而是把地址又指向该相同的值。
变量练习
String str1 = 4; //判断对错:错
String str2 = 3.5f + ""; //判断str2对错:对System.out.println(str2); //输出:3.5
System.out .println(3+4+"Hello!"); //输出:7Hello!
System.out.println("Hello!"+3+4); //输出:Hello!34
System.out.println('a'+1+"Hello!"); //输出:98Hello!
System.out.println("Hello!"+'a'+1); //输出:Hello!a11) short s = 5;
s = s-2; //判断:no2) byte b = 3;
b = b + 4; //判断:no
b = (byte)(b+4); //判断:yes3) char c = ‘a’;
int i = 5;
double d = .314;
double result = c+i+d; //判断:yes4) byte b = 5;
short s = 3;
short t = s + b; //判断:no