首页 > 代码库 > Java注意事项

Java注意事项

 

 

 1 package stu; 2  3 public class TestStr { 4     /** 5      * @param args 6      */ 7     public static void main(String[] args) { 8         // 虚拟机是将字符串直接量(不用new声明的)对象放到一个对象池中去缓存的, 9 10         // 第一次使用的时候会将其放入池中,11 12         // 如果下次有其他变量访问一摸一样的直接量的话直接从对13 14         // 象池中去取该直接量,而不是又再生成一个对象。一般该池中的对象都不会被垃圾回收器回收。15 16         String s1 = "1";17         String s2 = "1";18         System.out.println(s1 == s2); // true19 20         // 在编译时就能确定的值,在编译的时候就能够确定是否创建新的对象池对象21         String s3 = "zxc123";22         String s4 = "zxc" + 1 + "2" + "3";23         System.out.println(s3 == s4); // true24 25         26         String s5 = "zxc123";27         // 字符串拼接包含了函数,变量等等编译时不确定因素,那么此时就不能指向对象池中的变量了28         String s6 = "zxc" + "1".length() + "2" + "3";29         System.out.println(s5 == s6); // false30 31         String s7 = new String("Hello");32         String s8 = new String("Hello");33         System.out.println(s7 == s8);// false34 35         int num = 1;36         String str = num + (33.567 + "");37         System.out.println(str);// 133.56738 39         int sum = 2;40         sum += 22.56; // 复合运算符本身还隐式的包含了一个强制转型的动作 等价于 sum=(int) (sum+22.56);41         System.out.println(sum); // 2442 43         short m = 32767; // -32768~3276744         m += 1.89; // 符合运算符自身还隐式地包含了一个强制转型的动作这样做有时候会失去精度以及高位段位。45         System.out.println(m); // -3276846         47         System.out.println(11+1l);//11+1L=12;48 49     }50 }