1.什么是java字符串
java中数据类型分为:基本数据类型,共8种(int,short, long, byte, float, double, boolean, char),另一种是包装类数据 ,如 Integer, String, Double 等将相应的基本数据类型包装起来的类。这些类数据全部存在于堆中, Java 用 new() 语句来显示地告诉编译器,在运行时才根据需要动态创建,因此比较灵活,但缺点是要占用更多的时间。
2.String是一个特殊的包装类数据
创建String类型数据主要有一下几种方式 :
String strEn = "hello" ;//创建一个字符串变量hello,名为strEn
String strCn = new String("你好") ;//创建一个字符串变量你好,名为strCn
String str = new String() ;//创建一个空字符串变量,名为str
3.java中字符串的不变性
String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。如下所示:
String s1 = "hello" ;
String s2 = "hello" ;
String s3 = new String("hello") ;
String s4 = new String("hello") ;
//多次出现的字符常量,java编译程序只创建一个,所以返回true
System.out.println(s1 == s2) ;
//s1和s3是不同的对象,所以返回false
System.out.println(s1 == s3) ;
//s3和s4是不同的对象,所以返回false
System.out.println(s3 == s4) ;
//字符串s1被修改,指向新的内存空间
s1 = s1 + "world" ;
System.out.println(s1) ;
String s5 = s2 + "world" ;
String s6 = s2 + "world" ;
//s2是变量,s5在运行时才知道具体值,所以s5和s6是不同的对象
System.out.println(s5 == s6) ;
注 :
1. 通过 String s1="hello"; 声明了一个字符串对象, s1 存放了到字符串对象的引用,然后通过 s1=s1 + "world";
改变了字符串 s1 ,其实质是创建了新的字符串对象,变量 s1 指向了新创建的字符串对象
2. 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串, 可以使用
StringBuffer、StringBuilder
3.每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false,
如果只需比较内容是否相同,应使用 equals()方法