黑马程序员技术交流社区

标题: 自动转换的讨论 [打印本页]

作者: 吃饭工作睡觉    时间: 2015-11-4 10:19
标题: 自动转换的讨论
以下哪个选项会返回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类型时不发生自动转换呢?


作者: ok2784488    时间: 2015-11-4 10:19
你的意思是a==b时自动转换?这是boolean,结果要么是true,要么是false,这里数据都类型不同 直接就判断结果为false了,所以A错,a是方法中的局部变量,而t1指向对象的,是对象的地址值,因此B也错;C是对的,因为t2吧地址值赋给了t3,t3也指向了同一个对象,判断的是地址值相同因此输出true;至于D,t1和t2分别指向不同的两个对象,地址值是不同的。
作者: ゞ神说    时间: 2015-11-4 12:01
c是对的
b、d都是因为栈的位置不同所以不对
a不对,如果比较的话用的是1的ascii值(49)去比较的
作者: 北极的男娃    时间: 2015-11-4 19:22
因为字符'1'和数字1是不同的
作者: zhengsx    时间: 2015-11-4 22:09
C. t2 == t3;地址值相同
作者: 吃饭工作睡觉    时间: 2015-11-5 08:52
北极的男娃 发表于 2015-11-4 19:22
因为字符'1'和数字1是不同的

没有自动类型转换么?
作者: 吃饭工作睡觉    时间: 2015-11-5 09:15
北极的男娃 发表于 2015-11-4 19:22
因为字符'1'和数字1是不同的

那自动转换为什么不起作用了?
作者: 吃饭工作睡觉    时间: 2015-11-5 12:42
ok2784488 发表于 2015-11-5 10:22
你的意思是a==b时自动转换?这是boolean,结果要么是true,要么是false,这里数据都类型不同 直接就判断结 ...

我想着判断相等的时候也会有类型转换呢。谢谢!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2