A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吃饭工作睡觉 中级黑马   /  2015-11-4 10:19  /  2885 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

3黑马币
以下哪个选项会返回true?
  1. public class Test {
  2.         public char c;
  3.         public Test(char c){
  4.                 this.c = c;
  5.         }
  6.         public static void main(String[] args) {
  7.                 Test t1 = new Test('1');
  8.                 Test t2 = new Test('1');
  9.                 Test t3 = t2;
  10.                 char a = '1';
  11. int b = 1;
  12.         }
  13. }
复制代码
A. a == b;
B. a == t1;
C. t2 == t3;
D. t1 == t2;

这道题为什么char也到int类型时不发生自动转换呢?

最佳答案

查看完整内容

你的意思是a==b时自动转换?这是boolean,结果要么是true,要么是false,这里数据都类型不同 直接就判断结果为false了,所以A错,a是方法中的局部变量,而t1指向对象的,是对象的地址值,因此B也错;C是对的,因为t2吧地址值赋给了t3,t3也指向了同一个对象,判断的是地址值相同因此输出true;至于D,t1和t2分别指向不同的两个对象,地址值是不同的。 ...

8 个回复

倒序浏览
你的意思是a==b时自动转换?这是boolean,结果要么是true,要么是false,这里数据都类型不同 直接就判断结果为false了,所以A错,a是方法中的局部变量,而t1指向对象的,是对象的地址值,因此B也错;C是对的,因为t2吧地址值赋给了t3,t3也指向了同一个对象,判断的是地址值相同因此输出true;至于D,t1和t2分别指向不同的两个对象,地址值是不同的。
回复 使用道具 举报
c是对的
b、d都是因为栈的位置不同所以不对
a不对,如果比较的话用的是1的ascii值(49)去比较的
回复 使用道具 举报
因为字符'1'和数字1是不同的
回复 使用道具 举报
C. t2 == t3;地址值相同

点评

谢谢!那其他的几项为什么不对呢?  发表于 2015-11-5 08:54
回复 使用道具 举报
北极的男娃 发表于 2015-11-4 19:22
因为字符'1'和数字1是不同的

没有自动类型转换么?
回复 使用道具 举报
北极的男娃 发表于 2015-11-4 19:22
因为字符'1'和数字1是不同的

那自动转换为什么不起作用了?
回复 使用道具 举报
ok2784488 发表于 2015-11-5 10:22
你的意思是a==b时自动转换?这是boolean,结果要么是true,要么是false,这里数据都类型不同 直接就判断结 ...

我想着判断相等的时候也会有类型转换呢。谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马