测试代码为:
String str = "ab"; /*在常量池中看是否有ab这个值,要是有str就指向ab,如果没有就在常量池中创建ab,并且指向它*/
String str1 = new String ("ab");/*这里"ab"本身就是常量池中的一个对象,而在运行时执行new String()时,将常量池中的对象复制一份放到堆中,并且把堆中的这个对象的引用交给s持有。所以这条语句就创建了2个String对象。。*/
String s1 = "a";
String s2 = "b";
String s = s1 + s2;/*因为s1,s2在编绎时无法知道确定的值所以在运行时才执行故在内存的堆中。
// 等价于 StringBuffer s = new StringBuffer();
// s.append(s1).append(s2);
// String s = s.toString();*/ String s3 = "a"+"b";/*在编译时就确定了s3=ab,所以s3指向常量池中的ab而不是指向堆。*/
System.out.println(s == str);//false
System.out.println(s.intern() == str); //true /*而当调用s.intern()方法,却可以返回s在常量池中的地址值*/
System.out.println(s == str1);//false//false
System.out.println(s.intern() == str1); //false
分享到:
相关推荐
String a="abc";//创建字符串方式1 String b =new String("abc"); //创建字符串方式2 System.out.println(a==b); //false,内存地址不相等 String c =new String("abc"); String d =new String...
b=new String("abc") typeof b // object a==b //true a===b //false 但是为什么呢?看了很多书,问了好几个大神,其实自己还是稀里糊涂的。这里记录一下,备查。 在js中,区分原始资料类型和包装类型。数字、字符串...
主要介绍了为什么a="abc" 不等于 a=new String("abc"),需要的朋友可以参考下
String s=new String("abc"); System.out.println(s); String s1="abc"; String s2=new String("abc"); System.out.println(s==s1);//false System.out.println(s==s2);//false System.out.println(s1==s2);...
我想问stu1的String name="hck",这个"hck"存在常量池中,它和String s=new String("hck")有什么区别! String s1=new String("abc"); String s2=new String("abc"); s1.equals(s2);结果为true Student stu1=new ...
String s1 = new String(chs); String s2 = new String(chs); //直接赋值的方式得到对象 String s3 = "abc"; String s4 = "abc"; //比较字符串对象地址是否相同 System.out.println(s1 == s2); System.out....
答:首先创建一个字符串变量有两种方式: String str = new String<"abc">; String str = "abc"; 使用"= ="会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; System.out....
String str1 = new String(“abc”); 有什么区别 ? String类部分方法 char charAt(int index) int length() char[] toCharArray(); int indexOf(String str); boolean endsWith(String str); String[] split...
Dog d=a.new Dog("Tom",3); d.step=25; d.run(d); System.out.println(d.step); } } <br>答案::填空第1题 x=10,a=3,b=4,c=5 填空第2题 java.util 填空第3题 ...
string MyFileName = @"C:\\abc.XLS"; string MyTableName = "Sheet1"; try { string MyConnectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\abc.XLS;Extended Properties='Excel 8.0;HDR...
java面试的疑惑剪辑 博文链接:https://z-jq1015.iteye.com/blog/248599
在进行C#程序设计时,用的最多的莫过于string了,但有些时候由于不仔细...string strB=abc; string strC=de; Console.WriteLine(strA == (strB+strC));//true Console.WriteLine((object)strA == (object)(strB+strC
利用影射,通过查询数据库里的方法名称,来调用方法 SqlConnection conn = new ... asac.abc c = new asac.abc(); TextBox1.Text = c.abcd(dr); conn.Close(); // str1 = str1.Substring(0, str1.Length - 1);
通过new对象 String str = new String(“abc”); String不可变特性:长度、内容 Private final char value[]; 内容不是真的不可变,可以通过反射的技术进行修改 反射 reflect 类是用来描述一组对象 反射机制...
'/>aaaa< /a ><img src='abc.jpg' name='myimg' id='abcd' alt='abc你好' /><a href='index.php'>你好</a></body></html>"; * var reg=new RegExps(); * var img=reg.GetTag(str,'img'); * var imgObj=...
A、 ArrayList myList=new Object(); B、 List myList=new ArrayList(); C、 ArrayList myList=new List(); D、 List myList=new List(); 2.paint()方法使用哪种类型的参数? A、 Graphics B、 ...
对象的创建方式 1、new创建 堆;至少创建一个对象,也可能两... String str1 = new String("ABC"); String str2 = new String("ABC"); System.out.println(str1 == str2); // 比较对象的指针,false
String a = "53c015"; //Integer.parseInt(s, radix) radix设置为10,表示10进制,16表示16进制啦 int i = Integer.parseInt(a, 16); 1、length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=...
*/ //=================================// /* GetTagName(str,new Array(),0)*/ //=================================// /* getElememtById(string,id); */ //=================================//...
SQLstring12:="select 选项A from ceshi where 题号="^no^";" SQLstring13:="select 选项B from ceshi where 题号="^no^";" SQLstring14:="select 选项C from ceshi where 题号="^no^";" SQLstring15:="select 选项D...