您的位置:

java字符串赋值,java字符串赋值不了

本文目录一览:

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常量池