我正在解析HTML数据.在String可能null或空,当解析这个词不匹配.
所以,我这样写了:
if(string.equals(null) || string.equals("")){
Log.d("iftrue", "seem to be true");
}else{
Log.d("iffalse", "seem to be false");
}
Run Code Online (Sandbox Code Playgroud)
当我删除时String.equals(""),它无法正常工作.
我以为String.equals("")不正确.
我怎样才能最好地检查空String?
我有一个关于在Java中将字符串与空字符串进行比较的问题.有没有区别,如果我将字符串与空字符串比较==或equals?例如:
String s1 = "hi";
if (s1 == "")
Run Code Online (Sandbox Code Playgroud)
要么
if (s1.equals(""))
Run Code Online (Sandbox Code Playgroud)
我知道应该比较字符串(和一般的对象)equals,而不是==,但我想知道它是否对空字符串很重要.
我确信之前必须以不同的方式提出这个问题 - 因为isEmptyOrNull是如此常见但人们以不同的方式实现它.但我对最佳可用方法有好奇的查询,这对于内存和性能都有好处.
1)下面没有考虑所有空格,例如空XML标记
return inputString==null || inputString.length()==0;
Run Code Online (Sandbox Code Playgroud)
2)下面一个小心,但修剪可以吃一些性能+记忆
return inputString==null || inputString.trim().length()==0;
Run Code Online (Sandbox Code Playgroud)
3)转换为模式匹配器(仅当字符串非零长度时调用)
return inputString==null || inputString.trim().length()==0 || inputString.trim().length()==0;
Run Code Online (Sandbox Code Playgroud)
4)还有其他吗?
我是java的新手.我无法检查是否为空.你能告诉我这件事吗?我有没有元素的字符串数组.
我试过这段代码
String[] k = new String[3];
if(k==null){
System.out.println(k.length);
}
Run Code Online (Sandbox Code Playgroud) 我知道这不起作用,但我怎么知道用户是否添加了一个字符?
public class Program
import java.util.Scanner;
{
public static void main(String[] args) {
Scanner a = new Scanner(System.in);
String b = a.nextLine();
//I know this doesnt work but how can I know if the user added even one char?
if (b!=null){
System.out.println(b);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我已经阅读了这个SO线程:Java,检查字符串是否为空且不为空?
出现的问题(并未在该主题中得到回答)是:
Why is string.isEmpty() better than using string.equals("") ?在同一个答案中,海报声明在J6之前,人们会用string.length == 0它来检查空字符串.我错过了什么,因为他们似乎都做了完全相同的事情......这只是美化代码的问题.
是否有更短的方法来检查字符串/对象是否为null?
String str = someMethodThatReturnsStringOrNull(someOthreObject);
if(str == null) { System.out.println("Empty"); }
Run Code Online (Sandbox Code Playgroud)
比如JS风格:
if(str) { System.out.println("Empty"); }
Run Code Online (Sandbox Code Playgroud) 所以我已经查看了一些关于这个问题的其他线程,似乎我应该能够使用常规比较运算符来检查这个问题.
但是,即使我的程序声明字符串为null,它也会通过执行if语句与字符串不为空的条件来解决这个问题.为了更清楚,这是我的完整计划:
package bank;
public class HowCheckForNull {
static void showDates(String[] dates){
for(int i = 0; i < dates.length; i++){
System.out.println(dates[i]);
System.out.println(dates[i] == null);
System.out.println(dates[i] == (String) null);
System.out.println(dates[i] != null);
if(dates[i] != null);{ //This should not execute!?
System.out.print("A transaction of X$ was made on the " + dates[i] + "\n");
}
}
System.out.println("");
}
public static void main(String args[]){
String[] dates = new String[3];
showDates(dates);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
null
true
true
false
A transaction of X$ was …Run Code Online (Sandbox Code Playgroud) 如果我希望对一个字符串执行两次检查,它不是null,并且它不是0长度,我可以这样做 -
if(string != null) {
if(string.length() > 0) {
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
或者我可以做到这一点
if(string != null && string.length() > 0) {
//Do something
}
Run Code Online (Sandbox Code Playgroud)
首先执行第一次检查,第二次比较不会发生,并且不会抛出NullPointerException.
第二种方法是否可以保证在所有情况下都有效?如果是这样,使用它会被视为不良做法吗?
java ×9
null ×4
string ×4
android ×1
arrays ×1
comparison ×1
if-statement ×1
is-empty ×1
regex ×1
trim ×1