Java知识点汇总

  • char in the range \u0000 to \u007F

    1.3 常量池

            常量池只要针对字符串常量,这个上文有说到,字符串会在使用的时候,存放到常量池中。
            <pre>String s1 = "abc";
    String s2 = "abc";
    AppLog.i(String.valueOf(s1 == s2));</pre>
            结果是true,更进一步,把s2换成“abc”,还是true。也就是s1和s2都是常量池一个地址的引用。
            <h2>1.4 String</h2>
    
                最重要的是不可变性:
                String 由final char[]value,由于final修饰,所以value不能指向其他数组,并且string内部没有修改value的方法,所以String是不可修改的。
                hashcode可以缓存,应为不变。
                StringPool机制,这个就是上面说的常量池。
                String是线程安全的。
                StringBuild不是线程安全
                StringBuffer线程安全,内部有synchronized
                String.intern(),这个方法会主动把字符串放入常量池。
                        <h2>1.5 精度问题</h2>
            Java 不能隐式执行向下转型,因为这会使得精度降低。
            <pre>short s = 1;
    /*1是int类型,所以+以后转换为int类型,强转为short型*/
    s = (short) (s+1);
    /*支持隐私转换*/
    s +=1;</pre>
            <h2>1.6 static</h2>
            <h3>1.6.1 static 变量</h3>
            其他从JVM角度来讲,static的变量和类没有关系,类的实例是在java heap里面new出来的。而static 变量存在于方法区。类名只是为了找到这个全局变量的位置而已。(C++的说法,全局变量,功能类似)
            <h3>1.6.2 static方法</h3>
            静态方法也是独立于类的存在,所以静态方法必须实现。存在于JVM的方法区。
            <h3>1.6.3 static代码块</h3>
        </li>