1.方法与数组 (1)基本数据类型:int,double,float,数组,从本质上来说,它们都是存储数据的容器(container)。与存储单个数据的变量相比较,数组存储的是多个数据,或是多组数据(如map集合等)。 (2)数组引用传递 在Java语言中,b = a(a和b都是引用名)的含义就是将a起个别名"b"。之后,a和b其实就是指向的是同一个对象。在Java中,这种给变量取别名的机制称之为引用(reference)。在现实生活中,“引用”的例子也很多,例如,周树人的“笔名”是鲁迅。 这些表象有不同的“名称”,在本质上,指向的事物都是同一个。 一个程序若想运行,必须驻入内存,而在内存中必然有其存储地址,这些内存地址通常都很长(具体长度取决于JVM的类型),因为不容易记住,所以就给这些地址取个名称,这就是引用变量,这些引用变量存储在一块名叫“堆内存”的区域。 那么所谓“引用”,就是Java对象在堆内存的地址赋给了多个“栈内存”的变量,由于Java禁止用户直接操作“堆整型、浮点型、布尔型等基本数据类内存”中对象的地址,所以只能用这些“栈内存”的多个引用名来间接操作它们对应的“堆内存”数据。 (3)让方法返回数组 方法的返回值可以是Java所支持的任意一种类型。数组作为对象同样也可以成为方法的返回值。 二.枚举 1.枚举简介:计算机的功能不仅仅局限于加减乘除等数值计算,而且还被拓展至非数值数据的处理,例如,天气、性别、星期几、颜色、职业等这些都不是数值数据。Java引入的一种新类型——枚举类型(Enumerated Type),在定义时,它使用enum关键字标识。直接使用自然语言中相应含义的单词来代表某一种状态。 2. Java中的枚举 常见的枚举定义方法 定义语法:enum 枚举名{枚举值表}; enum是Java中的关键字。在枚举值表中应罗列出所有的可用值,这些值也称为枚举元素。 eg: enum WeekDay{Mon,Tue,Wed,Thu,Fri,Sat,Sun};
1.面向对象的三大特点 面向对象有三大特点:封装性、继承性和多态性。 (1)封装 封装的含义:封装 (Encapsulation)是将描述某类事物的数据与处理这些数据的函数封装在一起,形成一个有机整体,称为类。 作用:类中的私有数据在类的外部不能直接使用,外部只能通过类的公共接口方法(函数)来处理类中的数据,从而使数据的安全性得到保证。 封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而仅需要通过外部接口,特定的访问权限来使用类的成员。 (2)继承 某一个新类A继承某一既有类B时,表示这个新类A具有既有类B的所有成员,同时对既有类的成员做出修改,或是增加了新的成员。保持已有类的特性而构造新类的过程称为继承。 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 我们把既有类称为基类(baseclass)、超类(super class)或者父类(parent class),而派生出的新类,称为派生类(derivedclass)或子类(subclass)。 (3)多态 从字面上理解,多态就是一种类型表现出多种状态。 方法多态性,体现在方法的重载与覆写上。 对象多态性,体现在父、子对象之间的转型上。 2.封装的实现 Java访问权限修饰符:在Java中有四种访问权限:公有(public)、私有(private)、保护(protected)、默认(default)。但访问权限修饰符只有三种,因为默认访问权限没有访问权限修饰符。 用private封装方法语法: 封装属性:private属性类型属性名 封装方法:private方法返回类型方法名称(参数) 用private声明的属性或方法只能在其类的内部被调用,而不能在类的外部被调用。 据封装的最重要的目的是在于要实现“信息隐藏(Information Hidding)”。 3.继承的实现 (1)实现继承的格式:class子类名extends 父类 extends 是Java中的关键词。Java继承只能直接继承父类中的公有属性和公有方法,而隐含的(不可见的)继承了私有属性。 (2)Java类的继承可用下面的语法来表示。 class 父类{ //定义父类 } class子类名extends 父类{ //用extends关键字实现父类的继承 } (3)继承的限制 限制1:Java之中不允许多重继承,但是却可以使用多层继承。所谓的多重继承指的一个类同时继承多个父类的行为和特征功能。 类C同时继承了类A与类B,也就是说C类同时继承了两个父类,这在Java中是不允许的。 所谓多层继承,是指一个类B可以继承自某一个类A,而另外一个类C又继承自B,这样在继承层次上单项继承多个类。 限制2:从父类继承的私有成员,不能被子类直接使用。 限制3:子类在进行对象实例化时,从父类继承而来的数据成员需要先调用父类的构造方法来初始化,然后再用子类的构造方法来初始化本地的数据成员。 限制4:被final修饰的类不能再被继承。 4.深度认识类的继承 (1)子类对象的实例化过程 子类对象在实例化时,子类对象实例化会默认先调用父类中的无参构造函数,然后再调用子类构造方法。 (2)super关键字的使用 从英文本意来说,它表示“超级的”,从继承体系上,父类相对于子类是“超级的”,故此,有时候我们也称父类为超类(super-class)。 5.方法的覆写 当一个子类继承一个父类,如果子类中的方法与父类中的方法的名称、参数个数及类型且返回值类型等都完全一致时,就称子类中的这个方法覆写了父类中的方法。 格式一: class super //父类 { 返回值类型 方法名(参数列表) { } } 格式二: class sub extends super //子类 { 返回值 方法名(参数列表)//与父类中的方法同名,覆写父类中的方法 { } } 注意: ⑴ 覆写的方法的返回值类型必须和被覆写的方法的返回值类型一致; ⑵ 被覆写的方法不能为static。 ⑶ 被覆写的方法不能拥有比父类更为严格的访问控制权限。 6.【注意】 (1)方法重载(Overload)和覆写(Override)区别(本题为常见的Java面试题)。重载是指在相同类内定义名称相同但参数个数或类型或顺序不同的方法,而覆写是在子类当中定义名称、参数个数与类型均与父类相同的方法,用于覆写父类中的方法。
3. final关键字的使用final在Java之中称为终结器,在Java之中final可以修饰三类情况:修饰类、修饰方法及修饰变量。