黑马程序员技术交流社区
标题:
==问题求助
[打印本页]
作者:
chenyannna
时间:
2015-9-24 11:50
标题:
==问题求助
public class LianXi {
public static void main(String[] args) {
char[] chs = { 'a', 'b', 'c', 'd', 'b', 'e', 'f', };
int num = search(chs, 'b');
System.out.println(num);
System.out.println(search(chs, 'h'));
// System.out.println(search(null, 'f'));
}
public static int search(char[] chs, char ch) {
if (chs == null)
throw new IllegalArgumentException("输入不能为null");
for (int i = 0; i < chs.length; i++) {
if (ch==chs[i])
return i;
}
return -1;
}
}
复制代码
==在这里作用于引用类型应该比较的是地址值。
问题1:那么都既然想比较字符是否相等;那么用equals行不行呢?怎么用呢?
问题2:用contains行不行呢?怎么做?
作者:
heshiwei
时间:
2015-9-24 12:36
本帖最后由 heshiwei 于 2015-9-24 12:38 编辑
这里,你的概念理解的不对,==是判断地址的运算符,但是也要分情况:
1.当操作数为数值时(int,short,long,byte,char 等等),==判断的是两者的数值是否相等,相等返回true,否则false。
2.当操作数为对象的引用,则==判断是两个应用是否相同。
上面两条可以总结为:==判断的是操作数变量在栈内存是否相同。
eqauls如果不被重写, 和==其实是相同的(可以这么理解,其实还是有点区别),因为Java不像.net可以重载运算符,所以通过重写Object的equls来实现自定义的比较。
contains则完全比较的是内容了,而且只有集合、String、StringBuilder、StringBuffer等实现了Sequence接口的对象才有。
关于这个章节的内容,可以在Java基础视频中看到,里面有很详细的讲解。但是建议你再看看别的资料,作为补充。形成自己的理解。
作者:
chenyannna
时间:
2015-9-24 14:12
heshiwei 发表于 2015-9-24 12:36
这里,你的概念理解的不对,==是判断地址的运算符,但是也要分情况:
1.当操作数为数值时(int,short,lon ...
谢谢很详细
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2