用Java连接2个字符串的方法

Rya*_*yan 11 java string refactoring concatenation

我在Java中有一个连接2个字符串的方法.它目前工作正常,但我认为它可以写得更好.

public static String concat(String str1, String str2) {
  String rVal = null;
  if (str1 != null || str2 != null) {
    rVal = "";
    if (str1 != null) {
      rVal += str1;
    }
    if (str2 != null) {
      rVal += str2;
    }      
  }    
  return rVal;
}
Run Code Online (Sandbox Code Playgroud)

以下是一些要求:

  1. 如果str1和str2都为null,则该方法返回null
  2. 如果str1或str2为null,则只返回not null String
  3. 如果str1和str2不为null,它将连接它们
  4. 它永远不会在结果中添加"null"

任何人都可以用更少的代码来做

Mic*_*rdt 15

仅使用普通if条款:

public static String concat(String str1, String str2) {
    if(str1==null) return str2;
    if(str2==null) return str1;
    return str1 + str2;
}
Run Code Online (Sandbox Code Playgroud)

或者,如果你对括号有着深深的热情:

public static String concat(String str1, String str2) {
    if(str1==null)
    { 
        return str2;
    }
    if(str2==null) 
    {
        return str1;
    }
    return str1 + str2;
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 13

当然:

public static String concat(String str1, String str2) {
  return str1 == null ? str2
      : str2 == null ? str1
      : str1 + str2;
}
Run Code Online (Sandbox Code Playgroud)

请注意,这会在第一个条件中处理"为空"的情况:如果str1为null,则要么返回null(如果str2为null)或str2(如果str2不为null) - 两者都通过返回来处理str2.

  • 嵌套条件运算符?真的吗? (3认同)
  • 有些人可以阅读,有些则不能.这对初学者来说确实更令人困惑.我宁愿把它们放在带括号的单行中.像`return(str1 == null)之类的东西?str2:((str2 == null)?str1:(str1 + str2));` (2认同)
  • @BalusC:我发现括号增加了混乱,而换行符更清楚地显示了逻辑结构.但这是个人喜好的事情. (2认同)