1. 对象具有状态(内部数据)、行为(方法)和标识(内存唯一地址)。
2. 访问控制存在的原因:①让类调用者无法触及他们不应该触及的部分。②允许类设计者可以改变类内部的工作方式而不用担心会影响类调用者。
3. java访问权限关键字有public、private、protected,如果不指定关键字,则默认为包访问权限。
4. java的终极基类是Object类
5. 基本类型具有的包装器类,如boolean的Boolean,char的Character,int的Integer,使得可以在堆中创建一个非基本对象,用来表示对应的基本类型。
6. 类成员默认值为0,方法里面的局部变量没有默认值。
7. 每个java文件默认导入java.lang这个包
8. javadoc命令可为源码生成注释文档
9. String类型支持“+”和“+=”操作符
10. 对基本类型赋值,基本类型存储了实际的数值。对对象赋值,存储的是对象的引用
11. 整数相除会直接去掉结果的小数位(截断)
12. 操作符==和 != 比较对象是比较引用
13. java允许把任何基本数据类型转换成别的基本数据类型,boolean除外。
14. 对象可以在其所属类型的类族之间进行类型转换,不可以转换成类族以外的类型。
15. java没有sizeof操作符,所有数据类型在所有机器中的大小都是相同的,比如int在32位和16位机器中所占的大小都相同。
16. java不支持goto语句。
17. java不允许将一个数字作为布尔值使用,比如if(a)这样是编译错误的,必须用一个条件表达式将其转换成布尔值,如if( a != 0)
18. 不能以返回值区分重载方法
19. 如果一个类定义了构造器,编译器就不会帮你自动创建默认构造器。如果没有
自定义构造器,就会生成一个默认的无参构造器
20. 类成员默认初始化为0或null,局部变量不会默认初始化
21. 类成员会在构造函数调用之前按顺序得到初始化
22. static 关键字不能应用于局部变量
23. 访问权限等级依次是:public、protected、包访问权限(没有关键字)和private
24. 包内含有一组类,它们在单一的名字空间之下被组织在了一起
25. 每个java文件只能有一个public类,且该类的名字和java文件名相同(包括大小写)
26. java可运行程序是一组可以打包并压缩为一个java文档文件(jar包)的.class文件,java解释器负责这些文件的查找、装载和解释。
27. 自定义的java包名一般命名为com.**.**,这里是因为为了保证包名的唯一性,包名的第一部分一般是类的创建者所在域名的反顺序,比如域名为mindView.com,则把包名命名为com.mindview.**,这只是约定俗成的规则而已
28. package net.mindview.test这句话把当前文件归于某个包内,该语句必须是文件中的第一行非注释程序代码
29. C语言的条件编译大多数是用来解决跨平台问题的,由于java本身是跨平台的,所以java不需要条件编译语句
30. 如果java文件没有指定包,则会属于默认包
31. 相同包内的其他类可以访问protected元素,继承类也可以访问protected
32. 类的访问权限,仅有两个选择:包访问权限或public
33. 如果类不指定访问权限,就具有默认的包访问权限,包外的类不能创建该类的对象。然而,如果该类的某个static成员是public的话,则客户端程序员仍旧可以调用该static成员,尽管不能生成该类的对象。
34. 每个非基本类型的对象都有一个toString()方法
35. 类中所有的private方法都隐式地指定为是final的。
36. 类被定义成final,则不能继承该类。
37. 类是在其任何static成员被访问时加载的。构造器是隐式的static方法,只是static关键字没有写出来。
38. 【疑问】类的加载和初始化过程
39. 建立接口类的理由是,不同的子类可以用不同的方式表示此接口
40. 包含抽象方法的类叫做抽象类。如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的,否则会编译错误。
41. 继承一个抽象类,并想创建该新类的对象,那么必须为基类中的所有抽象方法提供方法定义。如果不,那么继承类也是抽象类,且编译器将会强制用abstract关键字来限定这个类。
42. 可以创建一个没有任何抽象方法的抽象类,这样可以阻止产生这个类的任何对象。
43. abstract类允许在类中创建一个或者多个没有任何定义的方法,interface类则是一个完全抽象的类,它根本没有提供任何具体实现
44. 在拥有外部类对象之前是不可能创建内部类对象的。这是因为内部类对象会暗暗地连接到创建它的外部类对象上。但是,如果创建的是静态内部类,那么它就不需要对外部类对象的引用。
45. 如果不需要内部类对象与其外围类之间有联系,那么可以将内部类声明为static,这通常称为嵌套类。普通的内部类对象隐式地保存了一个引用,指向创建它的外围类对象,然而,当内部类是static的时,就不是这样了。
46. java容器类类库分为两种,collection和map。collection是独立元素的序列,一般有list(特定的顺序保存一组元素)、set(元素不能重复)、queue(允许容器的一端插入对象,并从另一端移除对象)。Map是一组键值对对象,允许使用键来查找值
47. 对于每一个键,map只接受一次存储
48. LinkedList也像ArrayList一样实现了基本的list接口,但是它执行某些操作(在List的中间插入和移除)时比ArrayList更高效,但在随机访问操作方面却要逊色一些。
49. 当抛出异常后,有几件事会随之发生。首先,将使用new在堆上创建异常对象。然后,当前的执行路径被终止,并且从当前环境中弹出对异常对象的引用。此时,异常处理机制接管程序,并开始寻找一个恰当的地方来继续执行程序,这个地方就是异常处理程序,它的任务是将程序从错误状态中恢复,以使程序要么换一种方式运行,要么继续运行下去
50. String对象是不可变的。String类中每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以包含修改后的字符串内容。
51. 泛型:用尖括号括住,放在类名后面,使用这个类的时候,再用实际的类型替换此类型参数。class Hodler<T> {}