2016年1月16日 关于String类的学习
2016-03-15 21:29
274 查看
关于String的知识
public class StringDemo02 {
public static void main(String args[]){
String str1="hello";//通过直接复制的方式
String str2=new String("hello");//通过构造方法
String str3=str2;
System.out.println("str1 == str2
-->"+(str1==str2));//false
System.out.println("str2 == str3
-->"+(str2==str3));//true
System.out.println("str1 == str3
-->"+(str1==str3));//false
}
}
通过以上代码的比较,结果发现str1和str2所存储的字一样时,==却显示false是因为
==比较的是内存的地址,str1与str2开辟不同的空间,所以地址不同。
所以使用String的方法equals(equal 相等)
public class StringDemo03 {
public static void main(String args[]){
String str1="hello";//通过直接复制的方式
String str2=new String("hello");//通过构造方法
String str3=str2;
System.out.println("str1 equals str2
-->"+str1.equals(str2));
System.out.println("str2 equals str3
-->"+str2.equals(str3));
System.out.println("str1 equals str3
-->"+str1.equals(str3));
}
}
运行结果如下:
str1 equals str2 -->true
str2 equals str3 -->true
str1 equals str3 -->true
此时才真正的比较字符串的内容
public class StringDemo04 {
public static void main(String args[]){
String str1="hello";//通过直接赋值的方式
String str2="hello";//通过直接赋值的方式
String str3="hello";//通过直接赋值的方式
System.out.println("str1 == str2 -->"+(str1==str2));
System.out.println("str2 == str3 -->"+(str2==str3));
System.out.println("str1 == str3 -->"+(str1==str3));
}
}
运行结果:
str1 == str2 -->true
str2 == str3 -->true
str1 == str3 -->true
直接赋值的方法,会把字符保存在字符池中,当出现重复的字符时,不用申请新的堆内存空间。
public class StringDemo06 {
public static void main(String args[]){
String str="hello";//通过直接赋值的方式
str +=" world";
System.out.println(str);
}
}
运行结果:
hello world
public class StringDemo07 {
public static void main(String args[]){
String str="hello";//通过直接赋值的方式
for(int i=0;i<100;i++){
str +=i;
}
System.out.println(str);
}
}
以上操作会不断断开已有的连接,并指向新链接100次。不要使用此种方法
public class StringDemo02 {
public static void main(String args[]){
String str1="hello";//通过直接复制的方式
String str2=new String("hello");//通过构造方法
String str3=str2;
System.out.println("str1 == str2
-->"+(str1==str2));//false
System.out.println("str2 == str3
-->"+(str2==str3));//true
System.out.println("str1 == str3
-->"+(str1==str3));//false
}
}
通过以上代码的比较,结果发现str1和str2所存储的字一样时,==却显示false是因为
==比较的是内存的地址,str1与str2开辟不同的空间,所以地址不同。
所以使用String的方法equals(equal 相等)
public class StringDemo03 {
public static void main(String args[]){
String str1="hello";//通过直接复制的方式
String str2=new String("hello");//通过构造方法
String str3=str2;
System.out.println("str1 equals str2
-->"+str1.equals(str2));
System.out.println("str2 equals str3
-->"+str2.equals(str3));
System.out.println("str1 equals str3
-->"+str1.equals(str3));
}
}
运行结果如下:
str1 equals str2 -->true
str2 equals str3 -->true
str1 equals str3 -->true
此时才真正的比较字符串的内容
public class StringDemo04 {
public static void main(String args[]){
String str1="hello";//通过直接赋值的方式
String str2="hello";//通过直接赋值的方式
String str3="hello";//通过直接赋值的方式
System.out.println("str1 == str2 -->"+(str1==str2));
System.out.println("str2 == str3 -->"+(str2==str3));
System.out.println("str1 == str3 -->"+(str1==str3));
}
}
运行结果:
str1 == str2 -->true
str2 == str3 -->true
str1 == str3 -->true
直接赋值的方法,会把字符保存在字符池中,当出现重复的字符时,不用申请新的堆内存空间。
public class StringDemo06 {
public static void main(String args[]){
String str="hello";//通过直接赋值的方式
str +=" world";
System.out.println(str);
}
}
运行结果:
hello world
public class StringDemo07 {
public static void main(String args[]){
String str="hello";//通过直接赋值的方式
for(int i=0;i<100;i++){
str +=i;
}
System.out.println(str);
}
}
以上操作会不断断开已有的连接,并指向新链接100次。不要使用此种方法
相关文章推荐
- 2016年1月16日&nbsp;关于String类…
- 2016年1月16日&nbsp;关于String类…
- 2016年1月18日&nbsp;String练习题
- 2016年1月18日&nbsp;15:31:19关于引用传…
- 2016年1月18日&nbsp;19:07:22人与书的类
- 2016年1月18日&nbsp;21:47:46关于this_2…
- 2016年1月19日&nbsp;static声明属…
- 2016年1月20日&nbsp;代码块的类别
- 2016-01-20&nbsp;java中的链表设计…
- 2016年1月22日&nbsp;关于继承(重点)
- 2016-01-23
- 2016-01-27&nbsp;关于抽象类
- 2016-01-29&nbsp;接口实现的方法
- 2016-02-01
- 2016-02-01_2&nbsp;&nbsp;Object类
- 2016-02-01_3&nbsp;关于匿名内部类
- 2016-02-01_4&nbsp;&nbsp;包装类
- 2016-02-01&nbsp;异常处理
- 2016-02-04&nbsp;&nbsp;泛型的产生
- 蓝桥杯&nbsp;基础训练02&nbsp;字串