此题怎么做哦?
(1) 开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?提示:String tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");可以进行字符
我对这个很不熟悉了 还有个很低级的问题
(3) 下面代码一共创建了几个对象?
String s1 = "zah";
String s2 = s1;
String s3 = "zah";
String s3 = new String("zah");
请问应该是多少了 模糊了 请大家给点解答嘛 呵呵
String s1 = "zah"; //他不是对象是在内存中的string池中存放的数据
String s2 = "s1"; //他不是对象是在内存中的string池中存放的数据
String s3 = "zah";//他不是对象存放在String池中的数据首先会去到池中找有没有相同的数据如果有就把数据的引用拿来,如果没有再次创建
String s3 = new String("zah");//他有两个对象一个是Object对象,一个String对象,String对象在内存的堆栈中创建了String对象至于网上说的他在内存池先存放了一份,在把副本放到堆中这个事情我不做评论应为理解不同作出的解释也不同但是很多书上也没有像他说在池中放了一份,有做副本放在了堆中。
后面一个问题是4个 有3个字符对象引用对象 S1,S2,S3, 一个字符对象"zah";
是两个对象 前三个都是指向Stirng对象“zah”的变量 第4个又构造了一个新的String对象“zah" 在内存堆中实际只有两个”zah“ 而s1234 只是指向他们的变量
String tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
str.getBytes("ISO-8859-1"), 是将str转换成ISO-8859-1的字节集合
然后把这个集合从新组件成GBK的字符串
下面那个问题 是三个对象 分别是是s1 s2 s3
只是s1 s2都是引用了同一个资源 而在最后是new 从新在开辟了一个资源而已