1.面向对象和面向过程在问题抽象上的区别:
面向过程:根据运行解决方案的计算机来描述问题。
面向对象:根据问题来描述问题,而类是描述问题的数据结构。困难之处在于如果将问题空间的元素和解空间的对象创建一对一的的映射,可以学习下UML建模。
2.类的复用有组合(compose)和继承(extend)两种方式,一般更推荐使用组合的方式。
3.Java语言的一大特点是,它的所有类最终都是继承自同一基类(Object),这被称为单根继承结构。
4.将类型做为参数传递给类或方法的机制,被称为参数化类型机制,也就是泛型(generics)的主要应用方式,它是为解决使用容器存取对象时所产生的类型转换问题而出现的。
(1)存放对象时,会将对象向上转型,即被编译器替换为上限类型,或Object类型(若未指定),此时对象将失去类型信息,这被称为类型擦除。
(2)当取出对象时,再向下转型,将对象还原回存入容器前的类型。除非确切的知道前后存取对象的类型,否则向下转型都是不安全的。
// 向上转型,泛化
Object obj = new Person();
// 向下转型,具化
Person man = (Person)obj;
5.Java中存在两种数据类型,一种是基本类型,一种是类,基本数据类型共有八种。
boolean byte char short int float long double
大小 1比特 1字节 2字节 2字节 4字节 4字节 8字节 8字节
6.基本类型存放在堆栈(stack)中,直接存储值,类的对象存储在堆(heap)中。每个基本类型都存在包装类以便可以在堆中创建一个用来表示基本类型的对象。
7.Java对象不具备和基本类型一样的生命周期,当用new创建一个Java对象时,它可以存活于作用域之外,即依旧占据内容空间。所以在并发量较大的程序里,应减少临时对象的创建,以减轻垃圾回收所产生的服务停顿。
8.基本类型只有在类中作为成员变量才会被赋予初始值,而作为局部变量在使用前必须先进行初始化。
9.在类中char类型的成员变量的默认值为’\u0000’,即Unicode的第一个字符。存放一个Unicode编码的字符需要的大小是2字节,这也是char基本类型的大小为2字节的原因。
10.String占用内存空间的大小:
int siez = = str.length() * 2;
String是支持Unicode字符集的,而每个Unicode字符占用2字节,所以字符串长度*2就是String占用内存空间的大小。
11.方法签名 = 方法名 + 参数列表
12.static关键字的两个作用:创建类数据或类方法
13.java.lang会被自动导入到每一个Java文件中,初次以外的类都需要手动import导入。