字符串
java中的字符串:
字符串常量:要用双引号引起来(英文双引号):例如:"2333","dalao","orz"等等。若要换行,可以在中间加转义字符。例如:"yy\nds".
字符串变量:这里需要用到一个类,叫做String类。可像下面这样定义:
1 String str = "tql"; 2 //或者 3 String str = new String("tql");
上面的第二种方法:用String类创建的变量str叫做对象。字符串之间可实现组拼:
1 public class String01 { 2 public static void main(String[] args) 3 { 4 String str1 = new String("tql"); 5 String str2 = new String("yyds"); 6 System.out.println(str1+str2); 7 } 8 }
运行效果如下:

注意:字符串无法被修改!这是因为:
类、接口和数组都是属于引用数据类型,而像int这样的叫做基本数据类型。在内存中,有堆区和栈区,当声明一个基本数据类型的时候,都是存储在栈区,栈区比较小。若声明一个a,并初始化为100,然后再修改为90:
1 int a = 100; 2 a = 90;
90会把之前100的值直接覆盖,a就是90了,它们两个都是存储在栈区的。而字符串的话,比如上面的str1,它是"tql",str1是存储在栈区的,而"tql"则是存储在堆区,堆区比较大。在栈区的str这个变量里保存的是一个地址,指向堆区的"tql".这个地址称之为内存地址。假设"tql"的地址是001.则这个地址指向了其实际的值"tql".总的来说,引用数据类型变量里存储的是地址,访问变量时通过这个地址访问其指向那块数据。计算机之所以把"tql"存储在堆区,是因为字符串可以很长,很长的字符串所占的字节数也会很多,栈区里会存不下。而int类型就只占4个字节,所以可以都存在栈区。把str1存在栈区并存一个地址,可以很方便通过这个地址去访问其指向的那块数据。下面举例:
1 public class String01 { 2 public static void main(String[] args) 3 { 4 String str2 = new String("yyds"); 5 str2 = "tql"; 6 System.out.println(str2); 7 } 8 }
str2又改为"tql",并不会修改"yyds".而是在堆区又申请了一块新的内存区域,存放的是"tql".若其地址是002,则栈区的str2保存的地址就变成了002,就指向"tql".且之前的指向就不存在了。但是"yyds"仍然在那。所以,字符串的值无法被修改,但是其引用可以被修改。


浙公网安备 33010602011771号