代码改变世界

java拾趣,Adding....

2006-04-11 17:50  Jeff  阅读(491)  评论(0编辑  收藏  举报

今天看到的题目,或者我以前犯过错误,或者我觉得这道题目给我启示-,-!
1.如何比较3个字符串或者更多的字符串是否相等?
   谁都能想到的答案:
   if ( (s1.equals(s2) )&& ( s2.equals(s3) )

   另一种方法:
   String[] s = {"one", "two", "two"};
   List list = Arrays.asList(s);
   Set set = new HashSet(list);
   System.out.println(list.size() == set.size());
   用到了collection的知识

2.如何不借用第三个变量对换两个变量的值?
  好像以前同学问过我这个问题的:
    A = A + B 
    B = A - B
    A = A - B
  另一种方法:
    a = a ^ b;
    b = a ^ b; ((a ^ b) ^ b == a)
    a = a ^ b; ((a ^ b) ^ a == b) 
 //这边我晕了,用记事本写代码运行,会报不支持类型错误,用eclipse却完全可以@_@

3.数组初始注意点:
正确:
1.String[] ss = {"11","222","33333"};
2.String[] ss = new String[] {"11","222","33333"};
3.String[] ss;
  ss = new String[] {"11","222","33333"};
错误:
String[] ss;
ss = {"11","222","33333"};
嘿嘿,上次就是这样赋值的,一直报错。

4.
OXO|OOX|OOO|
O+O|O+O|X+O|  -> 第一坐标组,表示字母 C
OOO|OOO|OOO|
------------
OXO|OOO|XOO|
O+O|O+O|O+O|  -> 第2坐标组 ?
OOO|OOX|OOO|
------------
OXO|OOO|OOO|
O+O|O+O|O+O|  -> 第3坐标组 ?
OOO|XOO|OXO|
------------
OXO|OOO|OXO|
O+O|O+O|O+O|  -> 第4坐标组 ?
OOO|XOO|OOO|
------------
OXO|OOO|OOO|
O+O|O+O|O+O|  -> 第5坐标组 ?
OOO|OOX|XOO|
------------
OXO|OOO|OXO|
O+O|O+O|O+O|  -> 第6坐标组 ?
OOO|OXO|OOO|
------------
OXO|OOO|OOO|
O+O|O+O|O+O|  -> 第7坐标组 ?
OOO|OOX|OOX|
------------
OXO|OOO|OOO|
O+O|O+O|O+O|  -> 第8坐标组 ,表示字母e
OOO|XOO|OXO|
------------

C_ _ _ _ _ _ e
Answer:
  分别代表一个八进制的ASCII码。
  第一组坐标: 103(八进制) 就是大写的C字母
  第八组坐标: 145(八进制) 就是小写的e字母
  由这两组的提示我们可以推断出0-7的图案:
   OOX|
 O+O| ====>表示0
 OOO|

 OXO|
 O+O| ====>表示1
 OOO|

 XOO|
 O+0| ====>表示2
 OOO|

 OOO|
 X+0| ====>表示3
 OOO|

 OOO|
 O+0| ====>表示4
 XOO|

 OOO|
 O+0| ====>表示5
 OXO|

 OOO|
 O+0| ====>表示6
 OOX|

 OOO|
 O+X| ====>表示7
 OOO|
     其他图案表示什么就知道了。

5.判断是否为偶数:
public static boolean isOdd(int i) {

    return i % 2 == 1;

}
上面程序没有考虑int的取值范围。改为如下:
public static boolean isOdd(int i) {

    return i % 2 != 0;

}
上面的方法效率低,有更高效的方法:
public static boolean isOdd(int i) {

    return (i & 1) != 0;

}