关于==
我们知道=为赋值符,而==则为关系运算符(即“ == ” 两边是否相等)

public static void main(String [] args){
	int a=2;
	int b=2;
	int c=4;
	System.out.println(a==b);//结果为true
	System.out.println(a==c);//结果为false

基本数据类型中:由于值直接存储在栈中,所以可以直接比较值的大小;
而对象的比较,则不同于基本数据类型。
String中有如下两类:

直接赋值的方式例:String name="xiaoming";
在这种方式中,对象存入堆中的常量池中,当JVM创建字符串对象前会先去常量池中找有没有一个字符串内容与当前字符串相同,有:将已有的地址赋值给变量;无,创建新的对象。
例:

public static void main(String [] args){
	String name1="xiaoming";
	String name2="xiaoming";/*常量池中name1内容与当前字符串相同,所以直接把name1地址赋值给name2*/
	String name3="xiaohong";/*常量池中没有相同的,就创建新的*/
	System.out.println(name1==name2);
	System.out.println(name1==name3);
}
运行结果:
true
false

new语句的方式例:String name=new String("xiaoming");
在这种方式中:存储方式跟正常的类对象一样,堆中创建对象空间,name存储对象的地址放在栈中;每实例化一个对象,就会创建一个新的对象。
例:

public static void main(String [] args){
	String name1=new String("xiaoming");//new语句创建新的对象,拥有新的内存空间和地址
	String name2=new String("xiaoming");//new语句创建新的对象,拥有新的内存空间和地址
	String name3=new String("xiaohong");//new语句创建新的对象,拥有新的内存空间和地址
	System.out.println(name1==name2);//地址不同
	System.out.println(name1==name3);//地址不同
}
运行结果:
false
false
08-06 01:57