1.RTTI:在运行时识别一个对象类型 JAVA在运行时 有时要 识别对象和类的信息这个机制叫RTTI.Java提供了两种机制去做这件事.传统的RTTI 和 反射. 传统的RTTI  假定编译时就已经知道了所有的类型. 反射   允许在运行时发现和使用类型信息 传统的RTTI 在编译期通过Class文件识别类型信息,反射在运行期通过Class文件识别类型信息. Java类型转换都发生在运行时期. 2.Class对象 Class对象是由Class这个类产生的,它包含了与某个类有关的信息. 每个类都…
fda dfa 第三题u package net.mindview.typeinfo.test4; import java.util.ArrayList; import java.util.Arrays; import java.util.List; abstract class Shape { void draw(){ /* * 重点在这里: * this指代的是实例对象,由于使用+连接字符串, 会自动调用对象的toString()方法. */ System.out.println(this…
1. Class 对象: 所有的类都是在对其第一次使用的时候,动态加载到JVM中的.当程序创建第一个对类的静态成员的引用时,就会加载这个类.这说明构造器也是类的静态方法.即使在构造器之前并没有static关键字,这个类也会被加载. java程序在它开始运行之前并非完全被加载.其各个部分是在必要时才加载的. 类加载器的执行过程 1. 类加载器首先检查这个类的Class对象是否已经加载.如果尚未加载,默认的类加载器就会根据类名查找.class文件. 2.在这个类的字节码被加载是,他们会接收验证,以确…
1~10    Page 318 练习1. 在ToyTest.java中,将Toy的默认构造器注释掉,并解释发生的现象. 书中代码如下(略有改动): package org.cc.foo_008; public class ToyTest { static void printInfo(Class c){ log("Class Name: "+c.getName()); log("Is interface? "+c.isInterface()); log("…
java编程思想笔记(1) 一,对象的创建和生命周期 对象的数据位于何处?怎样控制对象的生命周期? 在堆(heap)的内存池中动态地创建对象. java完全采用了动态内存分配方式. 二,垃圾回收器 自动发现对象何时不在使用. 避免暗藏的内存泄漏问题. System.gc() 强制进行终结动作. 垃圾回收器对于提高对象的创建速度有明显效果.存储空间的释放会影响存储空间的分配. 垃圾回收器不等于析构函数,也不能替代析构函数. 三,用引用操作对象 创建引用,指向对象,进而操作对象 对于基本类型,不用n…
date: 2019-09-06 15:10:00 updated: 2019-09-24 08:30:00 Java编程思想 笔记 1. 四类访问权限修饰词 \ 类内部 本包 子类 其他包 public √ √ √ √ protected √ √ √ default(friendly) √ √ private √ protected:处理的是继承的概念.子类 extends 父类,如果父类希望某个特定成员,把对它的访问权限赋予派生类而不是所有类,即可以使用 protected. 2. 8个基本…
空余时间看<Java编程思想>(第四版)这本书,遇到不懂的知识点就记录在本博客内. 1.复用具体实现 Java代码复用的三种常见方式:继承.组合.代理. 1.继承:使用extends关键字在基类的基础上创建新类,新类可以直接复用基类的非private的属性和方法. 要使用A类的方法,不改变其原有结构,创建一个类B,继承自A,这个类B拥有A类的所有方法和属性,并能自身做扩展,拥有A所没有的属性和方法. 2.组合:在新类中创建已有类的对象,通过该对象来调用已有类中的非private的属性和方法.…
第十九章 类型信息 RTTI(RunTime Type Information,运行时类型信息)能够在程序运行时发现和使用类型信息. Java 主要有两种方式在运行时识别对象和类信息: "传统的" RTTI:假定我们在编译时已经知道了所有的类型: "反射"机制:允许我们在运行时发现和使用类的信息. Class 对象 类是程序的一部分,每个类都有一个 Class 对象.换言之,每当我们编写并且编译了一个新类,就会产生一个 Class 对象(更恰当的说,是被保存在一个同…
第十四章:呈现数据 理解输入与输出 标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 1.STDIN 代表标准输入.对于终端界面来说,标准输入是键盘 使用输入重定向符号(<)时,Linux会用重定向指定的文件来替换标准输入文件描述符 2.STDOUT 代表标准输出.对于终端界面来说,标准输出是屏幕 3.STDERR 代表标准错误输出.默认情况下,STDOUT文件描述符和STDERR文件描述符指向同样的地方,即显示器. 重定向…
Java编程思想笔记(一)--static 看<Java编程思想>已经有一段时间了,一直以来都把笔记做在印象笔记上,今天开始写博客来记录. 第一篇笔记来写static关键字. static static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个…