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] |