-7

我是Java新手。可能是一个简单的问题,但我没有明白。

我有变量,我想检查该变量是否有值。为此,我编写了以下代码。但每次它都显示false为输出。

public class StringOperations {
    public static void main(String[] args){
        Boolean b=new Boolean("T87778rue");
        int i = 10;
        System.out.println(b.equals(i));
    }
}
4

2 回答 2

3

您正在创建一个表示假值的布尔对象,因为字符串参数不是“真”(忽略大小写)。

Boolean b=new Boolean("T87778rue");

接下来,检查表示 false 的布尔对象是否等于 10。不是。

int i = 10;
System.out.println(b.equals(i));

从布尔构造函数 API 文档中:

Boolean(String s) 如果字符串参数不为 null 并且忽略大小写等于字符串“true”,则分配一个表示值 true 的布尔对象。

于 2013-07-31T18:40:03.463 回答
1

在 Java 中,如果它编译,则该变量有一个值。

最初它可能有一个默认值,该值可能为 null,但它始终具有一个可知值。

在您的情况下,您似乎在询问是否可以将 String 评估为表达式。这是一个非常不同的主题,您可以评估 Java 中的表达式。

BTW "1+2"+3="1+23"因为你正在做一个字符串操作。

.但每次它都显示错误作为输出。

每次都应该是错误的,因为每次的值都是相同的。布尔值被解析为真,只是它是“真”,忽略大小写。You Boolean 是假的,这与Integer10 不同,而且永远不会相同。


以及在初始化之前访问字段的示例

public enum Main {
    ;

    static {
        printInJ();
    }

    static final int i = Integer.parseInt("100");
    static final int j = 100;

    private static void printInJ() {
        System.out.println("i = " + i + ", j = " + j);
    }

    static {
        printInJ();
    }

    public static void main(String... ignored) {
    }
}

印刷

i = 0, j = 100
i = 100, j = 100
于 2013-07-31T18:39:40.637 回答