JAVA基础知识积累(1)

    这一段时间对一些java等基础知识进行简单的学习和积累,以下知识主要是一些个人觉得还比较冷门的知识点,参考网上大神的解答。

1.java的符号引用和直接引用

    在java中,一个java类将会编译成一个class文件。在编译时,java类并不知道引用类的实际内存地址,因此只能使用符号引用来代替。比如org.simple.People类引用org.simple.Tool类,在编译时People类并不知道Tool类的实际内存地址,因此只能使用符号org.simple.Tool(假设)来表示Tool类的地址。而在加载People类时,此时可以通过虚拟机获取Tool类 的实际内存地址,因此便可以既将符号org.simple.Tool替换为Tool类的实际内存地址,及直接引用地址。

2.字面量和变量,常量

    字面量指的是数字,字符等构成的字符串或者数值,并且只在右边出现。

int a;//a变量
const int b=10;//b为常量,10为字面量
string str="hello world";//str为变量,hello world为也字面量

3.类的加载

    类的装载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。 

    简单理解就是把class文件读入内存,加载到JVM虚拟机上,并在堆中创建对象的过程。

(1) 装载:查找和导入Class文件;

 (2) 链接:把类的二进制数据合并到JRE中;

    (a)校验:检查载入Class文件数据的正确性;

    (b)准备:给类的静态变量分配存储空间;

    (c)解析:将符号引用转成直接引用;

 (3) 初始化:对类的静态变量,静态代码块执行初始化操作

4.java反射

  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
5.String,StringBuilder和StringBuffer
String:适用于少量的字符串操作的情况

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

速度,StringBuilder>StringBuffer>String

6.静态方法和普通方法

非静态方法既可以访问静态方法又可以访问非静态方法,而静态方法只能访问静态数据方法。

猜你喜欢

转载自blog.csdn.net/sinat_27634939/article/details/80383031