【记录】有趣精巧的写法和思想
- 位运算符 & 判断奇数偶数
(奇数) & 1 = 1; (偶数) & 1 =0; 判断奇数偶数方法 +1;
- 0.1 +0.2 == 0.3;//false
因为精度问题 加个类型放心用吧
- 用与或运算符 ^ 判断两个数是否相等
100 ^ 100 ==0 ;//true 101 ^100 ==0; //false
- 交换两个数 !简直优秀!
int a =1; int b = 2; a=a+b-(b=a);//不过可能会溢出
- 用异或运算交换两个数
char q = 'q'; char o = 'o'; q ^= o; o ^= q; q ^= o;
- 创建字符串这是什么写法 ? interesting
String s; s:s = new String("hello world!");
- String和StringBuffer使用equals()方法
String str = new String("hello world!"); StringBuffer strb = new StringBuffer(str); str.equals(strb); //false
原因是因为String重写了equals方法,而StringBuffer没有,直接继承来自Object的equals方法,解决方法,调用toString()方法将StringBuffer转成字符串。
//String中的equals()方法 把地址比较改写成了值的比较
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
//StringBuffer继承Object的equals()方法
public boolean equals(Object obj)
{
return this == obj;
}
- 怎么理解String对象是不可变的?这段代码感受下…
public class Bran {
public static void main(String[] args) {
String str = new String("good");
char[] ch = {'s','o','g','y'};
Bran bran = new Bran();
bran.change(str,ch);
str = "sdd";
System.out.println(str +"and");
System.out.println(ch);
}
public void change(String str,char[] ch) {
str = "Benin";
ch[0] = 'd';
}
}
结果
good
dogy