WWW_PLCJS_COM-PLC-技.术_网
String str1="abc";WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
String str2="abc";WWcW_PLCJS_COM-PLC-技.术_网
System.out.println("str1==str2");//tureWWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
String str1=new String("abc");W1WW_P4LCJS_COM-PLC-技.术_网
String str2=new String("abc");WWW_PLCJS_COM-PLC-技.术_网
System.out.println("str1=str2");//falseWWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWW_P※LCJS_COM-PLC-)技.术_网
这是俩中创建String类变量的方法!看上去会有很多的相识,却有着本质的不同。用内存的存储来解释俩种方法的不同!WWW_P※LCJS_COM-PLC-)技.术_网
WWW_PLC※JS_COM-PmLC-技.术_网
第一种方法String str="abc"格式类仅在栈内存内完成!开始寻找在栈内存中是否有与"abc"值相等的值!若有就直接指向拥有"abc"值的内存空间!这样可以节约内存的空间!若在栈中没有找到与"abc"相等的值,就把"abc"存储在栈里面!这样表明不管创建多少个等于"abc"的变量,其实仅创建了一个对象!plcjs.技.术_网
WWW_P※LCJS_COM-PLC-)技.术_网
下面看看栈与堆的分配图!P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WW.W_PLC※JS_C,OM-PL,C-技.术_网
在String str="new" String("abc")格式内,用到对内存!也就是上图下面的一组!WWW_PLCJS@_COM%-PLC-技.术_网
表明用new创建的数组和对象的数据是存放在堆内存的!WWW.PLCJS.COM——可编程控制器技术门户
在栈内存内仅存放首地址!WWW_PLCJS@_COM%-PLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
这样俩种形式创建的对像是不同的!WWW_PLC※JS_COM-PmLC-技.术_网
第一种可能值创建了一个对象,而第二种用到了new表明就创建了对象!WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WWW_P※LCJS_COM-PLC-)技.术_网
WWW_PLCJS@_COM%-PLC-技.术_网
WWcW_PLCJS_COM-PLC-技.术_网