public static void main(String[] args) {
// TODO 自动生成方法存根
String jString=null;
System.out.println(jString.equals(null));
}
我在Eclipse下试的,为什么会出现
Exception in thread "main" java.lang.NullPointerException
at print.main(print.java:10)说的好像是空指针异常,各位高手请解释一下这是为什么?
还有个小小问题
定义3个数组,
int [] a=new int[5];
int [] b=new int[6];
int [] c=new int [7];
在随机方法给这3个数组赋值(在0-100以内),且3个数组里面的数都不相等
麻烦讲一下思路,谢了
// TODO 自动生成方法存根
String jString=null;
System.out.println(jString.equals(null));
}
我在Eclipse下试的,为什么会出现
Exception in thread "main" java.lang.NullPointerException
at print.main(print.java:10)说的好像是空指针异常,各位高手请解释一下这是为什么?
还有个小小问题
定义3个数组,
int [] a=new int[5];
int [] b=new int[6];
int [] c=new int [7];
在随机方法给这3个数组赋值(在0-100以内),且3个数组里面的数都不相等
麻烦讲一下思路,谢了
Ps:下面的数组问题,LZ可以用随机数生成器去实现,当然,要加个判断了
不能说是赋值吗,
能不能说具体该怎么改呀
数组的问题最简单可以让3个数组分别在0-100的三个段内取随机数
System.out.println(null==jString);
这样改就行了,没有必要使用equals
String jString=null;
System.out.println("null".equals(jString));
System.out.println("".equals(jString));
==,equals()
的问题
第二问:
import java.util.HashSet;
import java.util.Random;
import java.util.Set;public class Child {
public static void main(String[] args) {
Random r = new Random(47);
int [] a=new int[5];
int [] b=new int[6];
int [] c=new int [7];
f(a,r);
f(b,r);
f(c,r);
show(a);
show(b);
show(c);
}
static void f(int[] arrays,Random r){ Set<Integer> set = new HashSet<Integer>(); //目的是数组里面的数不相等
for(int i = 0;i<arrays.length;){
int m = r.nextInt(100);
if(set.add(m)){
arrays[i] = m;
i++;
}
}
}
static void show(int[] arrays){
System.out.println("Arrays :");
for(int i:arrays){
System.out.println(i);
}
}
}
去百度或者google
一个地址 和内容的问题!
他的前面的对象不能为null
举个例子,,
"ab".equals(d);
这个当d为null时候是没问题的,,
但你要写成,,
d.equals("ab");
当d为null时候就会抛出空指针的错误了,,
这是String中的等于的源码,,
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
{
public static void main(String[] args)throws Exception //指出异常位置
{
// TODO 自动生成方法存根
String jString=null;
System.out.println(jString.equals(null));
}
} 错误在System.out.println(jString.equals(null)); 说明jString没有分配内存,也就是没有实例化,所以不能调用equals方法
你要改成 String jString="null"; 或不把空对象赋给jString ;
首先你要是写成null表示你申请的是一个对象,但是没有赋值。
要是使用“”表示你的对象已经已经有了,并且赋值,所以就正确了
用空指针来调用方法当然会抛出无指针的异常。
“”表示你既申请了对象又赋了值,所以后面的那句应改为("".equals(jString))