str==null、str.length==0以及''''.equals(str)之间的区别

str == null          //判断引用是否指向任何对象
str.length == 0  //判断引用指向的对象是否为空字符串,即字符串长度为0
“”.equals(str)    //判断引用指向的对象是否为空字符串和str.length()==0效果是一样的。


但str是null时,str.equals(“”)和str.length==0将抛java.lang.NullPointerException异常。

                     因为equals是对象的方法

所以最好使用    “”.equals(str)形式
“”.equals(null)   //false

 

str==null || str.length()==0 两个一起写可以避免str=null时,抛异常。

但最好还是写成:

                       str != null && !”“.equals(str)
                       str ==null  ||   “”.equals(str)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码的逻辑看起来没有明显错误,但是有几个需要注意的地方: 1. 没有考虑最大公因数为1的情况,即两个字符串没有公共因子的情况。在这种情况下,应该返回空字符串而不是null。 2. 没有对输入的字符串进行非空判断。如果输入的字符串为null或者空字符串,会出现NullPointerException或IndexOutOfBoundsException。 3. 在check方法中,使用了StringBuilder来进行字符串拼接。这在字符串长度较大时可能会占用大量内存,可以考虑使用String的重复方法来代替。 4. 在maxgcd方法中,如果str2的长度为0,会出现ArithmeticException。 建议的改进: 1. 在gcdOfStrings方法的开头加入非空判断: ```java if (str1 == null || str2 == null || str1.isEmpty() || str2.isEmpty()) { return ""; } ``` 2. 在gcdOfStrings方法中增加最大公因数为1的判断: ```java if (len == 1) { return s1.equals(s2) ? s1 : ""; } ``` 3. 在check方法中使用String的重复方法代替StringBuilder: ```java public boolean check(String s1, String s2) { int lenx = s1.length() / s2.length(); String str = s2.repeat(lenx); return str.equals(s1); } ``` 4. 在maxgcd方法中增加对str2长度为0的判断: ```java public int maxgcd(String str1, String str2) { if (str2.isEmpty()) { return str1.length(); } int l1 = str1.length(); int l2 = str2.length(); int remainder = l1 % l2; while (remainder != 0) { l1 = l2; l2 = remainder; remainder = l1 % l2; } return l2; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值