public class Hello {
public static void main(String[] args) {
String[] numArray=new String[10];
numArray[0]="a";
numArray[1]="b";
numArray[2]="c";
for(int i=0;i<numArray.length;i++){
if(numArray[i]==null){
break;
}
System.out.println(numArray[i]);
}
}
}数组长度为10,前三个下标的内容分别为 a,b,c 后面值系统默认为7个null ,if判断条件处: 为何用==于判断字符串是否相等,而不是用equals去判断相等,用equals会报错,字符串类型不都是用equals去判断是否相等的么?
这里是判断一个对象是不是空(未初始化)故用的是 == null
equals是 object 的方法
这里未初始化的 String 对象调用 equals 当然是要报错了
只是 String 类重写了这个方法,用以判断2个字符串的内容是否相等
楼主你这里是需要判断哪些数组元素未被初始化
null 与 "null" 不是一回事
//字符串可以直接用==来判断相等否
public class Hello{
public static void main(String[] args) {
String[] numArray=new String[10];
numArray[0]="a";
numArray[1]="b";
numArray[2]="c";
for(int i=0;i<numArray.length;i++){
if(numArray[i]==null){
break;
}
System.out.println(numArray[i]);
}
}
}
一楼正解!楼主要明确到底初始化没有,不然是不能使用该方法的
还有,我也想问问,string.equals(null)这有意义么。。
String s1=”hello”;
String s3=”hello”;
s1==s3吗? //true
注意:s1与s3不是new出来的
字符串常量分配在datasegement
s1在栈空间,编译器对存在datasegement的数据有优化,新new出来的s3还是指向”hello”对象
s1=new String(“hello”)
s2=new String(“hello”)
s1!=s2 因为是new出来的对象在heap内
比较方法:s1.equals(s2)//true 只要代表相同的字符序列
equals是比较值,既然是null,就没有所谓的值比较,所以用==判断null
for example boolean isBlankString(String s) {
return "".equals(s); //这样,不用判断s是否为null,如果反过用s.equals(""),当s是null时,会抛出空指针异常
}