javastring的初始化
Ⅰ java 字符串的初始化问题
在java中,String使用直接赋值的方式后,只要声明的字符串内容相同,就不中毁侍会开辟新的内存空间,如s1和s2都指向同一个地址空间;而你卖吵上面用new的方式构造一个对象会开辟新的内存空间。String类“==”比较的是地址,而equals()比较的事字符串的内容一不一样。余岁
Ⅱ java String数组初始化问题
并不是出乱码了,是你把r加入进去了,r是一个String数组,无法直接转换为String
最后的那句 sb.append(r.toString()); 没有必要,删除就可以了
Ⅲ JAVA中一个类包含String数组怎么初始化的
不可以滴!!
因为在B中,如果没有了带*的那一行,那么仅仅只是代表 有存在一个存放A类型数组:as[i],但是里面每个元素到底存放什么我们是不知道的,在JAVA里面,就是引用为空的意思,既as[i] = null。就是说里面其实是没有任何东西的,仅仅只有一个定义而已,那怎么可以指向A类里面的a属性呢?因为as[i]指向的东西都为空,空就是代表没有任何东西,那么里面自然也不会有a这个属性咯。所以我们在声明完数组的时候,必须把数组里面的元素也申明了。但是为什么C可以呢。
你看C是这样做的:
C先声明了一个数组,所以只要存在C的实例,就可以使用到这个数组。虽然这时候,数组里面的元素是为空的,但是你在主程序里面使用了c.s[1]="3",意思就是为c实例里面的数组的第2个元素给申明了,而不是直接引用,这与B是不同的。
——————————————————————————————————————————————————————
B-->不为空,所以可以使用B里面的元素,既as数组,但是as数组里面的元素是空的,所以不存在里面有某种属性的说法,自然是不可是使用A类里面的元素a咯。
C--》不为空,所以可以使用C里面的元素s数组,然后对s数组进行操作。
祝你好运!!希望你能够理解
Ⅳ java String 初始化 是 null 还是 “” 他们的区别
你在创建的时候,没有初始化时或赋值时,打印出的是null
因为String类型是一个对象,而不像int之类是基本类型有初始默认值
如果在初始时赋值“”(空值),那也算创建对象了(就是相当于new 操作)
打印出的为“”(空值)
Ⅳ java String 初始化 是 null 还是 “” 他们的区别
String str1 = null; str引用为空
String str2 = ""; str引用一个空串
也就是null没有分配空间,""分配了空间,因此str1还不是一个实例化的对象,而str2已经实例化。
注意因为null不是对象,""是对象。所以比较的时候必须是 if(str1==null){...}和if(str2.equals("")){...}。
对象用equals比较,null用等号比较。因此,如果str1=null;下面的写法错误:
if(str1.equals("")||str1==null){//如果str1没有值,则....
//。。。。
}
正确的写法是 if(str1==null||str1.equals("")){ //先判断是不是对象,如果是,再判断是不是空字符串
//...
}
打个比方:一个空玻璃杯,你不能说它里面什么都没有,因为里面有空气,当然也可以把它弄成真空,null与" "的区别就象真空与空气一样。
Ⅵ java中为什么字符串要初始化
字符串初始化,实际上是为了进行内存存储和地址引用。
如:String str = new String("ABC");这个就是在内存中创建一个位孝扒置来存储“ABC”,之后在通消慎团过地址引用,赋值给“str”,如果不初始化的话,就没有进行存储,也就无从谈起引用。
备注:拿橘String str = “ABC”;结果和之前的“String str = new String("ABC");”是一样的,“ABC”创建过程实际上就是一个初始化过程,所以没必要纠结在这块,会用即可。不同的是每次new都创建一个存储空间来存储,而赋值(“ABC”)的形式,如果之前存在就直接引用,不存在才会创建。
Ⅶ java String 初始化 是 null 还是 “” 他们的区别
String a="";
String a1=null;
第一个有值,固定的。
第二个是null,值在下面可以改变。
另一方面,null在堆内存没东西,此时的字符串指针指向的是一个未知的地方,
而""在堆内存有东西,只不过位空,此时字符串指针就指向了字符a所在的存储单元。
Ⅷ java字符串初始化
1、直接赋值首先会看缓冲区是否已有aaaa这个字符串对象,如有就直接赋值,不新建对象,没有则创建新对象并将此对象放进缓存区。
2、首先会创建一个没有名字(可能系统有默认的名字)的aaaa对象,然后new关键字会再创建一个空字符串对象,然后将aaaa地址指向new的对象,最后自动回收无名对象。
Ⅸ java中String类型一定需要初始化吗
如果后面有
赋值语句
,那么就不需要初始化,如果没有赋值语句,需要初始化,测试代码如下:
class
test
{
public
static
void
main(String[]
args)
{
String
s;
//System.out.println(s);
s="Hello";
System.out.println(s);
}
}
如果把注释部分的注释符号去掉,则会出现s未初始化的错误提示
Ⅹ Java局部变量初始化,String类型为什么不用初始化就能使用
局部变量String需要初始化!
以下代码:
public class Test {
public static void main(String[] args) {
String s;
System.out.println(s);
}
}
这个代码直接报错,无法编译
你上面的代码没错是因为你在while循环里对s进行了初始化