1、类和对象被称为实例,类是某一批对象的抽象,对象是一个具体存在的实体。
2、类包含构造器、成员变量和方法。成员变量用于定义该类的实例所包含的状态数据,方法则用于定义该类或该类的实例的行为特征或者功能实现,构造器用于构造该类的实例,java中通过new来调用。构造器是创建对象的根本途径。
3、在方法的使用时,谁调用方法,谁负责为形参赋值。形参用于定义该方法可以接受的参数。
4、static修饰的成员不能访问没有static修饰的成员。不使用static修饰的成员变量和方法称为实例变量、实例方法,被修饰的称为静态变量、静态方法。
5、this总是指向调用该方法的对象。让一个类中一个方法,访问该类里的另一个方法或实例变量。
6、所有方法都必须定义在类里,方法不能单独存在,方法逻辑上要么属于类,要么属于对象。方法是类和对象的行为特征的抽象。
7、使用static修饰的方法属于这个类本身,使用static修饰的方法既可以使用类作为调用者来使用,也可以使用对象作为调用者来调用。
8、当系统开始执行方法时,系统为形参执行初始化,把实参变量的值赋值给方法的形参变量,方法里操作的并不是实际的实参变量,这就是值传递的实质。java中对于引用类型的参数传递,一般都是采用值传递。
9、创建一个对象时,系统内存中存在两个东西,堆内存保存了对象本身,栈内存保存了引用该对象的引用变量。
10、Jdk1.5以后允许形参个数可变的参数,从而允许围殴方法指定数量不确定的形参,在定义方法时,在最后一个形参的类型后增加三个点(…),表明可以接受多个形参。一个方法中只能有一个个数可变的形参。
11、一个方法体内调用它自身,被称为方法递归。方法递归包含了一个隐式循环,它会重复执行某段代码,但这种重复执行不是无休止的执行。定义递归时一定要向已知方向递归。
12、同一个类中包含了两个或两个以上方法的方法名相同,但参数列表不同,则被称为方法重载。(同名同类不同参)
13、在类中定义的变量称为成员变量,在方法中定义的变量称为局部变量。定义成员变量时没有static修饰的就是实例变量,有static修饰的是类变量。 类变量从该类的准备阶段起开始存在,直到系统完全摧毁这个类,类变量的作用域与这个类的生存范围相同,实例变量则从该类的实例被创建起开始存在,直到系统完全摧毁这个实例,实例变量的作用域与对应实例的生存范围相同。
14、成员变量无须显式初始化成员变量默认初始化时的赋值规则与数组动态初始化时数组元素的规则完全相同。
15、同一个类里,成员变量的作用范围是在整个类里面有效,Java允许局部变量和成员变量同名,如果方法里的局部变量和成员变量同名,局部变量会覆盖成员变量,如果在这个方法里引用覆盖的成员变量,可以使用this或者类名作为调用者来限定访问成员变量。
16、当程序需要访问类变量时,尽量使用类作为主调,而不是使用对象,避免程序产生歧义,提高程序的可读性。
17、访问权限:private(当前类)<default(包访问)<protected(子类访问)<public(公共访问)
18、构造器在创建对象时执行初始化,java对象中必须包含一个或者一个以上的构造器。
19、同一个类里面有多个构造器,多个构造器的形参列表不同,被称为构造器重载。
20、重载主要发生在同一个类的多个同名方法之间,重写主要发生在子类和父类的同名方法直接。
21、如果需要在子类中调用父类被覆盖的实例方法,可以使用super限定来调用父类的实例方法。
22、Java中引用变量分为编译时类型和运行时类型,编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定,如果编译时类型和运行时类型不一致时,就可能出现所谓的多态。
23、引用变量的强制类型转换:基本类型的转换只能在数值类型之间执行,引用类型直接的转化只能在具有继承关系的两个类型之间进行。把子类对象赋给父类对象引用变量时,被称为向上转型。父类对象赋值给子类引用变量时,需要进行强转,使用instanceof可以使强制转化更加安全,instanceof还可以判断是否可以进行强制转化。
24、继承是实现类复用的手段,继承带来的最大坏处是破坏封装,使子类可以访问父类的方法和内部信息,从而造成子类和父类的严重耦合。
25、组合是把旧类对象作为新类的成员变量组合起来,看到的是新类的方法,而不能看到被组合对象的方法。组合设计与继承设计的系统开销没有本质的区别。
26、普通初始化块负责对对象执行初始化,类初始化则负责对类进行初始化。静态初始化块是和类相关的,静态初始化块总比普通初始化块先执行。静态初始化块不能访问非静态成员,不能访问实例变量实例方法。
27、Java系统加载并初始化某个类时,总是保证该类的所有父类全部加载并初始化,静态初始化代码块和声明静态成员变量时所指定的初始值都是该类的初始化代码,它们的执行顺序与源程序中排列的顺序相同。
28、Java中提供了final关键词来修饰变量、方法和类,系统不允许为final从新赋值,子类不允许覆盖父类的final方法,final类不能派生子类。通过使用final关键字,使系统更加安全。
29、abstract和interface两个关键字分别定义抽象类和接口,抽象类和接口都是从多个子类中抽象出来的共同特征。抽象类主要作为多个类的模板,而接口则定义了多类应遵循的规则。
30、为了解决8种基本数据类型的变量不能被当成object类型变量使用的问题,Java提供了包装类的概念.被称为数据类型的包装类。
31、jdk1.5提供了自动装箱和自动拆箱的功能,自动装箱时把一个基本类型变量自动赋给对应的包装类变量,或者赋值给object变量。自动拆箱正好相反,允许把包装类对象直接赋给一个对应的基本类型变量。
32、无符号位运算的最大特点是最高位不会再被当成符号位,因此无符号位整数不支持负数,其最小值为0.
33、==来判断两个类型变量是否相等,对比两个引用字符串的变量用equals进行比较(只要两个字符串所包含的字符序列相同)。
34、常量池专门用于管理在编译时被确定并保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口中的常量,还包括字符串常量。
35、类变量生存范围几乎等同于该类的生存范围,当通过对象来访问类变量时,系统会在底层转换为通过该类来访问类变量。对象只能访问实例变量,类变量必须通过类来访问。
36、如果一个类始终只能创建一个实例,则这个类被称为单例类。
37、final修饰变量时,表示该变量一旦获得了初始值就不可被改变。final修饰的成员变量必须由程序员显式的指定初始值。final成员变量在显式初始化之前不能直接访问。final修饰的类不能被重写,但是可以被重载。
38、对于实例变量,既可以在定义该变量时赋予初始值,也可以在非静态初始化块、构造器中对它赋予初始值,对于final实例变量而言,只有在定义该变量时指定初始值才会有宏变量的效果。
39、创建类的实例后,该实例的实例变量不可改变,被称为不可变类。
40、抽象类和抽象方法必须用abstract来修饰,抽象类里面可以包含抽象方法,抽象类不能创建实例。
41、static和abstract并不是绝对互斥的,static和abstract虽然不能同时修饰某个方法,但他们可以同时修饰内部类,abstract关键字修饰的方法必须被其子类重写才有意义,否则这个方法将永远不会有方法体,abstract方法不能定义为private访问权限,private和abstract不能同时修饰方法。
42、接口体现的是规范和实现分类的设计哲学。接口的默认方法就是有方法体的实例方法。
43、接口支持多继承,多个父接口排在extends关键字后边,多个父接口直接用逗号隔开。实现时使用implements进行接口的实现,implements部分必须放在extends之后。
44、接口和抽象类都位于继承树的顶端,都用于被其他类实现和继承,都不能被实例化,都可以包含抽象方法。
45、接口作为系统和外界交互的窗口,接口体现的是一种规范,接口是多个模块间的耦合标准,是多个程序之间的通信标准,接口改变对整个系统甚至其他系统产生的影响是辐射性的。
46、抽象类作为多个子类的公共父类,体现的是一种模式化的设计。
47、非静态内部类对象必须寄生在外部类对象里,而外部类对象则不必一定有非静态内部类寄生。
48、定义类的作用就是定义变量、创建实例作为父类被继承。使用内部类定义变量和创建实例分为三种情况:在外部类内部使用内部类、在外部类以外使用非静态内部类、在外部类以外使用静态内部类。
49、把·一个内部类放在一个方法中定义,则这个类就是一个局部内部类。对于局部成员而言,他们的上一级程序单元都是方法而不是类。
50、匿名内部类必须继承一个父类或者实现一个接口,最多只能继承一个父类实现一个接口。匿名内部类不能是抽象类,匿名内部类不能定义构造器。
51、Lambda表达式支持代码块作为方法参数,Lambda表达式允许使用更简洁的代码来创建只有一个抽象方法的接口的实例。(这种接口被称为函数式接口)
52、Lambda表达式的类型也被称为目标类型,Lambda表达式的目标类型必须是函数式接口。函数式接口代表只包含一个抽象方法的接口,函数式接口可以包含多个默认方法、类方法,但只能声明一个抽象方法。
53、Lambda表达式的目标类型必须是明确的函数式接口,只能为函数式接口创建对象。
54、Java5新增enum关键字,用来定义枚举类。枚举类可以实现一个或多个接口,枚举类默认提供了一个values的方法,该方法可以遍历所有的枚举类。
55、对象在内存中的状态:当一个对象在堆内存中运行时,根据它被引用变量引用的状态可以分为三种:可达状态、可恢复状态、不可达状态。当一个对象被创建时,若有一个以上的引用变量引用他,则这个对象在程序中处于可达状态,程序可通过引用变量来调用该对象的实例变量和方法。如果程序中某个对象不再有任何引用变量引用它,他就进入可恢复状态,在这种状态下,系统的垃圾回收机制准备回收该对象所占用的内存,在回收该对象之前,系统会调用所有可恢复对象的方法进行资源清理。当对象与所有引用变量的关联都被切断,且系统已经调用了所有对象的方法后依然没有使对象变为可达状态,那么这个对象将永久的失去引用,最后变为不可达状态。只要对象真正处于不可达状态时,系统才会真正回收该对象所占有的资源。
面向对象
最新推荐文章于 2024-01-25 15:46:07 发布