一.两个变量的交换方式
1.定义一个中间变量
int a = 1, b = 2; int c = b; b = a; a = c;
2.数据叠加再相减
int a = 1; int b = 2; a = a + b; b = a - b; a = a - b;
3.通过异或^
int a = 1; int b = 2; a = a^b; b = a^b; a = a^b;
二.数据定制转换
System.err.println(Integer.parseInt("1f", 16));// 结果为21,算法为1*16+5,即说明1f是16进制,将其转为10进制 System.err.println(Integer.valueOf("17", 8));// 结果为15,算法为1*8+7,每一位最大为7,由于其基础是8进制 System.err.println(Integer.toHexString(15));// 结果为f,16进制 System.err.println(Integer.toBinaryString(3));// 结果为11.二进制流
三.自动拆装箱分析
1.Boolean的两个值都是cache再内存中的,自己new Boolean的是另一块空间
2.Byte的-128-127全部cache在内存中的。
3.Integer,Short,Long-128-127是cache在内存中的。
4.Float,Double没有cache。
当有算术运算时,会自动拆箱
Integer a=1; Integer b=128; Long c=129L; System.err.println(c==a+b);//编译后为c.longValue()==a.intValue()+b.intValue();
本文出自 “尘世的鱼” 博客,请务必保留此出处http://earthlyfish.blog.51cto.com/7170086/1761466
原文地址:http://earthlyfish.blog.51cto.com/7170086/1761466