Java编程思想阅读记录-类型信息
2017-12-27 10:38
471 查看
一、“运行时类信息可以使你在程序运行时发现和使用类型信息“。这是《java编程思想-中文版》的原话。
猜测:在多态的时候,向基类发送消息,基类会将消息发送给具体的派生类。应该是在派生类向上转型成基类对象时,基类对象就记录当前基类对象接收到的消息需要传递给哪个派生类,应该是在某个区域使用引用指向关系。
二、Class对象创建所有类的规范,在这里我理解为是jvm加载的.class文件产生的相应对象,记录着该类的一些通用规范,可以知道类型信息在运行时的表现。
这里有个不能理解的问题:为什么说构造器也是类的静态方法???(有人可以纠正么?)
书上说new 创建类对象时也会当作静态方法处理,这样说来,只要能通过类直接使用的都是静态的。
补充一下:静态(static)在第一次类被使用就会被jvm加载.class文件时到方法域中。
这里有一点:静态代码块 static{ },这个是在类加载初始化就会执行,这里的初始化和对象的初始化不同。对象初始化我理解为(在构造器方法进行的都是)。
至于类加载初始化,是在类加载时初始化,这里还不清楚(以后要看看jvm).在本书中提到一点,稍后在获取类对象class的不同方式会提到一点。
三、public class A{ public static final String sf="sf";}
在获取Class对象时,Class a=Class.forName("A");是在类初始化之后完成,Class a=A.class;这个不会进行类初始化,也就是说不会执行static{ }的代码。
在执行static final 的静态不可变常量常量(A.sf;)(这个称为编译期常量)时会不进行类初始化,静态常量会执行类初始化。
猜测:在多态的时候,向基类发送消息,基类会将消息发送给具体的派生类。应该是在派生类向上转型成基类对象时,基类对象就记录当前基类对象接收到的消息需要传递给哪个派生类,应该是在某个区域使用引用指向关系。
二、Class对象创建所有类的规范,在这里我理解为是jvm加载的.class文件产生的相应对象,记录着该类的一些通用规范,可以知道类型信息在运行时的表现。
这里有个不能理解的问题:为什么说构造器也是类的静态方法???(有人可以纠正么?)
书上说new 创建类对象时也会当作静态方法处理,这样说来,只要能通过类直接使用的都是静态的。
补充一下:静态(static)在第一次类被使用就会被jvm加载.class文件时到方法域中。
这里有一点:静态代码块 static{ },这个是在类加载初始化就会执行,这里的初始化和对象的初始化不同。对象初始化我理解为(在构造器方法进行的都是)。
至于类加载初始化,是在类加载时初始化,这里还不清楚(以后要看看jvm).在本书中提到一点,稍后在获取类对象class的不同方式会提到一点。
三、public class A{ public static final String sf="sf";}
在获取Class对象时,Class a=Class.forName("A");是在类初始化之后完成,Class a=A.class;这个不会进行类初始化,也就是说不会执行static{ }的代码。
在执行static final 的静态不可变常量常量(A.sf;)(这个称为编译期常量)时会不进行类初始化,静态常量会执行类初始化。
相关文章推荐
- JAVA编程思想学习总结:第十四章类型信息
- Java编程思想之类型信息(反射)
- Java编程思想-14类型信息
- java编程思想_类型信息
- Java编程思想之类型信息
- 《Java 编程思想》--第十四章:类型信息
- 12.JAVA编程思想——集合的类型
- java 编程思想 阅读笔记(2)
- 【Java编程思想第4版错误记录】Collections.addAll()静态方法与Collection.addAll()成员方法
- Java编程思想学习心得(三)基本类型
- JAVA编程思想---基本数据类型总结(byte,char)
- 两步实现Log4j记录java控制台输出的系统所有异常信息和自定义记录日志---->非常实用,强烈推荐阅读
- moon 类型信息 编程思想第14章
- Java编程思想阅读笔记(一)
- Java编程思想阅读收获
- java编程思想--协变返回类型
- java 编程思想阅读笔记(4)
- 【笔记】Java编程思想——类型检查
- Java编程思想阅读收获
- 枚举类型 Java编程思想 读书笔记