给大家出道题!

时间:2022-01-22 18:24:32
这段程序会输出什么?

public class AnimalFarm {
public static void main(String[] args) {
final String pig = "length: 10";
final String dog = "length: " + pig.length();
System.out.println("Animals are equal: " + pig == dog);

String a = "a";
String b = "a";
System.out.println("a==b ? " + a == b);

String c = "ac";
String d = "a" + "c";
String e = a + "c";
System.out.println(c == d);
System.out.println(c == e);
}
}

41 个解决方案

#1


false
false
true
false

#2


false 
false 
true 
false 

#3


又是这种。

#4


主要是第二个:
false
false
true
false

#5


大哥 全是 false

#6


false 
false 
true 
false 

#7


解释一下啊

#8


nnd +运算等级高于==

我差点让你们搞胡了.

#9


不懂

#10


第一第二是考查+与==的优先级。
第三第四是考查常量池。

#11


引用 4 楼 feishare 的回复:
主要是第二个:
false
false
true
false

对,如果单纯的 String a = "a";
        String b = "a";
        System.out.println(a == b);应该是输出true因为指向的同一个对象。

#12



                int i1 = 1;
int i2 = 1;
System.out.println("result : " + i1 == i2);

这段如何

#13


引用 10 楼 bigbug9002 的回复:
第一第二是考查+与==的优先级。
第三第四是考查常量池。


up  up 

#14


jf

#15


引用 12 楼 java1109 的回复:
Java codeint i1=1;int i2=1;
        System.out.println("result :"+ i1== i2);
这段如何


这个根本行不通,+的优先级比=高,字符串不能和int类型比较,编译报错

#16


up up

#17


false
false
true
false
俺错了第二个

#18


false
false
true
false
谢谢送分

#19


....mark,若干时日后,或许面试用得到。。。

或者以后用来聊天显摆也可以。。。

#20


看过的接分.

#21


楼上各位说的都很有道理
学习了

#22


来接分,哈哈。

#23


恩 2个地方注意下就好了 一个是字符串连接的+运算符,和==运算符   应该是连接之后再比较  所以前两个输出都是false

后面两个一个是true 最后一个是false d是常量字符串相连接 编译器直接优化成"ac" 所以输出true  最后一个因为有变量引入 在运行时 会创建一个新的字符串对象 因此输出false

#24


false 
false 
true 
false 

#25


23楼说的很好

#26


false 
false 
true 
false 

#27


总结一句!做题要小心!呵呵!

#28


false
false
true
false

注意前面2题,是字符串相加后,在比较。

#29


false 
false 
true 
false 

#30


false
false
true
false

#31


学习

#32


false 
false 
true 
false

#33


false
false
true
false

#34


测试了
false
false
true
false

#35


测试了 
false 
false 
true 
false

#36


看着像Java Puzzler里面的题目

#37


学习了下
受用

#38


这个我是在.NET环境下测的。

看来我的路还很长吖。

结果有两个,分别为:
1,但不调试的时候,单独看值与值比较均为true
2,调试完后,输出结果为:Flase,Flase,True,True,
前面的Animals are equal: 与a==b ? 没显示出来!!!
费解,然后改为Console.WriteLine("Animals are equal: {0}", pig == dog);
显示出来了,结果也成了True

哎。。。

#39


懂了,我真的懂了。
哇哈哈哈哈哈哈哈哈。。。。。。。

#40


我一眼看上去怎么觉得是  false ture ture false 呀

#41


把 我给弄晕了   各位大侠 请看这两串代码

    String a = "a";
        String b = "a";
        System.out.println("a==b ? " + a == b);
        
        String str = "abc"; 
String str2 = "abc";
System.out.println(str == str2);

不都是一样的吗   为什么返回的结果却不一样类????

#1


false
false
true
false

#2


false 
false 
true 
false 

#3


又是这种。

#4


主要是第二个:
false
false
true
false

#5


大哥 全是 false

#6


false 
false 
true 
false 

#7


解释一下啊

#8


nnd +运算等级高于==

我差点让你们搞胡了.

#9


不懂

#10


第一第二是考查+与==的优先级。
第三第四是考查常量池。

#11


引用 4 楼 feishare 的回复:
主要是第二个:
false
false
true
false

对,如果单纯的 String a = "a";
        String b = "a";
        System.out.println(a == b);应该是输出true因为指向的同一个对象。

#12



                int i1 = 1;
int i2 = 1;
System.out.println("result : " + i1 == i2);

这段如何

#13


引用 10 楼 bigbug9002 的回复:
第一第二是考查+与==的优先级。
第三第四是考查常量池。


up  up 

#14


jf

#15


引用 12 楼 java1109 的回复:
Java codeint i1=1;int i2=1;
        System.out.println("result :"+ i1== i2);
这段如何


这个根本行不通,+的优先级比=高,字符串不能和int类型比较,编译报错

#16


up up

#17


false
false
true
false
俺错了第二个

#18


false
false
true
false
谢谢送分

#19


....mark,若干时日后,或许面试用得到。。。

或者以后用来聊天显摆也可以。。。

#20


看过的接分.

#21


楼上各位说的都很有道理
学习了

#22


来接分,哈哈。

#23


恩 2个地方注意下就好了 一个是字符串连接的+运算符,和==运算符   应该是连接之后再比较  所以前两个输出都是false

后面两个一个是true 最后一个是false d是常量字符串相连接 编译器直接优化成"ac" 所以输出true  最后一个因为有变量引入 在运行时 会创建一个新的字符串对象 因此输出false

#24


false 
false 
true 
false 

#25


23楼说的很好

#26


false 
false 
true 
false 

#27


总结一句!做题要小心!呵呵!

#28


false
false
true
false

注意前面2题,是字符串相加后,在比较。

#29


false 
false 
true 
false 

#30


false
false
true
false

#31


学习

#32


false 
false 
true 
false

#33


false
false
true
false

#34


测试了
false
false
true
false

#35


测试了 
false 
false 
true 
false

#36


看着像Java Puzzler里面的题目

#37


学习了下
受用

#38


这个我是在.NET环境下测的。

看来我的路还很长吖。

结果有两个,分别为:
1,但不调试的时候,单独看值与值比较均为true
2,调试完后,输出结果为:Flase,Flase,True,True,
前面的Animals are equal: 与a==b ? 没显示出来!!!
费解,然后改为Console.WriteLine("Animals are equal: {0}", pig == dog);
显示出来了,结果也成了True

哎。。。

#39


懂了,我真的懂了。
哇哈哈哈哈哈哈哈哈。。。。。。。

#40


我一眼看上去怎么觉得是  false ture ture false 呀

#41


把 我给弄晕了   各位大侠 请看这两串代码

    String a = "a";
        String b = "a";
        System.out.println("a==b ? " + a == b);
        
        String str = "abc"; 
String str2 = "abc";
System.out.println(str == str2);

不都是一样的吗   为什么返回的结果却不一样类????