publicclassPerson{privateStringname;publicPerson(Stringname){this.name=name;}@Overridepublicbooleanequals(Objectobj){if(this==obj){returntrue;// 同一对象}if(obj==null||getClass()!=obj.getClass()){returnfalse;// 对象相等的前提是同类且不为 null}Personperson=(Person)obj;returnname!=null?name....
但是,如果equals()方法的调用者是null,将会抛出NullPointerException。 Stringstr1="hello";Stringstr2="hello";Stringstr3=null;booleanresult1=str1.equals(str2);// true,因为内容相同booleanresult2;try{result2=str1.equals(str3);// 不会报错}catch(NullPointerExceptione){result2=false;// 捕获异常并...
if("Hello World!".equals(str)) 就不会抛出空指针异常,因为String的equals方法不是Static方法 反思 为了避免内存溢出,我们在无需类外调用的方法前,一般不加static关键字(因为静态方法会常驻内存,其生存周期与整个项目的生存周期是一致的)所以,我们应该在为变量赋初值的时候,尽量不要使用null来赋初值,如果一定是nul...
"".equals(null)就不报错?这是因为 JAVAnull 是一个对象,如果你试图调用它的方法,例如equals() 方...
public boolean equals(Object o) { if (o instanceof Person) { Person p = (Person) o; return this.name.equals(p.name) && this.age == p.age; } return false; } 如果this.name为null,那么equals()方法会报错,因为null为空引用,是一个特殊值,不是某种对象(实例),更加不会提供/支持任何方法(通...
其实从equals源码里面我们可以看到,equals不允许其左边的值为空的,所以我们可以上面代码改成如下:public class equtest1 { public static void main(String[] args) { String name = null;if("name".equals(name)) { System.out.println("测试");} } } 这样就不会报错,其实Java1.7之后还支持一种写法:i...
在Java编程中,使用null和空字符串("")时,调用equals方法可能导致不同的结果和行为,主要源于null是一个特殊对象,而空字符串是已初始化的对象。具体而言,当使用null作为参数调用equals方法时,会引发空指针异常(NullPointerException),因为null不是一个有效的对象实例,无法执行任何方法调用,如equals...
基于JDK1.8版本Optional,解决null指针报错情况 我们在代码的开发过程中,常常会return null;或者如此为null的场景。 public String test(String str){ if (Objects.equals(str.toUpperCase(),"TEST")){ return str; } return null; } 这种时候只要入参为空,就会抛出空指针异常。但是实际场景这是可容错的情况。不...
equals在判断null时可能出现的问题: 如果直接调用一个null对象的equals方法,会抛出NullPointerException异常。 例如: java String str = null; if (str.equals("someValue")) { // 抛出 NullPointerException // do something } 为了避免这种情况,通常需要先判断对象是否为null,然后再调用equals方法。 ==操作符...