黑马程序员技术交流社区
标题:
==的问题
[打印本页]
作者:
chenyannna
时间:
2015-9-24 11:52
标题:
==的问题
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行不行呢?怎么做?
作者:
fmi110
时间:
2015-9-24 11:52
a
//==在这里作用于引用类型应该比较的是地址值。
//问题1:那么都既然想比较字符是否相等;那么用equals行不行呢?怎么用呢?
//问题2:用contains行不行呢?怎么做?
/*
* 答:1 char是基本数据类型,所以没有equals方法, == 比较的直接是char变量的值 ,char类型在内存中实际是ASCII码对应的整数
* 如 char ch = 'a'; 在内存中 ch是整数97,可以直接参加整数运算 int x = 97 - 'a';
*
* 2 想调用类的方法进行比较可以但是需要先将字符转化为字符串,其实String类中提过了获取字符下表的方法indexOf(),
* 只需要先将char[]数组转为字符串就能进行调用,另外contains返回值是boolean,所以只能用来判断,没有办法用于获取角标
*/
public class LianXi {
public static void main(String[] args) {
char ch = 'a';
int x = 97 - ch;
System.out.println("x = "+x);//x = 0
System.out.println(97 == ch);//true 可以看出char在内存中的存储实际是int型
char[] chs = { 'a', 'b', 'c', 'd', 'b', 'e', 'f', };
String str = String.valueOf(chs);//将字符数组转为字符转
int num = str.indexOf('b');//调用indexOf()获取下表,没有返回-1
System.out.println(num);
System.out.println(search(chs, 'b'));
System.out.println(search(chs, 'h'));
System.out.println(str.indexOf('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])//如果这里想用equals(),需要将字符先转为字符串
return i;
}
return -1;
}
}[code]
运行结果
x = 0
true
1
1
-1
-1
复制代码
[/code]
作者:
chenyannna
时间:
2015-9-24 14:46
fmi110 发表于 2015-9-24 11:52
a[/code]
public class LianXi {
public static void main(String[] args) {
char[] chs = { 'a', 'b', 'c', 'd', 'b', 'e', 'f'};
String str = String.valueOf(chs);
System.out.println(str);//abcdbef
int num = search(str,'b');
System.out.println(num);
}
public static int search(String str,char ch){
String chr = String.valueOf(ch);
if(str==null)
throw new RuntimeException("判断不存在");
if(str.contains(chr))
return str.indexOf(chr);
return -1;
}
}
复制代码
对对。我忘了是基本数据类型了。当数组了。
我用contains做出来了,equals做不出来。应该是这里不能用。
作者:
shike951128
时间:
2015-9-24 17:52
我把代码复制到我的eclipse上跑了,但是没有像楼主那样感觉出什么。
作者:
javaeea
时间:
2015-9-24 23:17
好好好好好好好好好好好好好好好好好好好
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2