本文目录一览:
- 1、JAVA中这两种给字符串变量赋值的方法有区别吗?
- 2、java中字符串数组如何赋值?
- 3、java中 输入字符串怎么给String数组赋值
- 4、java中字符串赋值问题
- 5、java 字符串变量赋值例如 String a="abc"; String b; b=a; b="
JAVA中这两种给字符串变量赋值的方法有区别吗?
有区别。new出来的对象在堆内存中。
直接赋值的字符串在 常量池区
java中字符串数组如何赋值?
变量初始化,和变量赋值是两个不同的语法。
数组初始化时,可以为null,{value1,value2,value3,....},或者赋予另一个数组的值:String[]
b
=
a;
常量只能被初始化,一次,不能再次赋值;
非常量则可以进行赋值操作,赋值操作只能赋予以下情况:null,另一个数组的值。
lz的问题中,a={","}是一个初始化的语法,不是正确的赋值语法。
java中 输入字符串怎么给String数组赋值
java中输入的字符串主要是使用scanner类来接收用户从键盘输入的数值,然后建立一个字符串数组来赋值,代码如下:
public class ceshi {
public static void main(String[] args){
String[] s = new String[3];//字符串数组
Scanner sc = new Scanner(System.in);接收用户从键盘输入的字符串
String str = sc.next();
s[0]=str;//输入的字符串str赋值给字符串数组的第一个
}
}
运行结果如下:
java中字符串赋值问题
Java运行时会维护一个String
Pool(String池,
String常量池,
字符串缓冲区)
String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。
而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区
String
s
=
"accp";
创建s之前系统会先在"池子"中查找是否已经存在这个字符串,
如果存在则直接符号该字符串的句柄
如果不存在,
系统会创建一个新"accp"字符串,
并返回句柄,
以后再有"accp"被要求创建,
系统不会创建新的,而是直接返回已经存在的字符串的句柄
String
s
=
new
String("accp");
系统不会去"池子"中查找,
直接在内存中新开辟一块空间,
初始化为"accp",并返回句柄
java 字符串变量赋值例如 String a="abc"; String b; b=a; b="
String a = "abc"; // 定义了一个 "abc" 字符串 ,a 指向 这个字符串
String b;
b = a; // 使b也指向 a现在指向的那个字符串("abc")
b = "abcd"; // 定义了一个"abcd" 字符串,b 指向 这个新的字符串
在内存中大致的示意图如下:
所以最后 a =“abc”,b=“abcd”
java中字符串是一个较为特殊的存在,如果感兴趣可以找资料详细了解
Java中字符串内存位置浅析
触摸java常量池