==和equals

基本数据类型在栈中分配的,在栈中(i=1),==比较的是1
在栈中,引用类型String在堆中new对象,String指向的是堆中的地址
对象的引用存在栈中,对象存在堆中。
string0和string1(==)比较的时候,比较的是引用的地址,所以false
java中的堆、栈和常量池简介
堆:存放所有new出来的对象。
栈:存放基本类型的变量数据和对象的应用,对象(new出来的对象)本身并不存在栈中,而是存放在堆中或者常量池中(字符串常量对象存放在常量池中);局部变量(形式参数)的数据存于栈内存中,并且它(局部变量)随方法的消失而消失。
常量池:存放基本类型常量和字符串常量。
对于浅蓝色箭头,通过new操作产生一个字符串(“abc”)时,会先去常量池中查找是否有“abc”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此“abc”对象的拷贝对象,所以,对于String str=new String(“abc”),如果常量池中原来没有”abc”则产生两个对象,否则产生一个对象。
而对于基础类型的变量和常量,变量和引用存储在栈中,常量存储在常量池中。例如:
