数组(被后期内容集合优化)
1. 数组不同定义方式 【面试注意】
int[] a;
a = new int[5];
int[] a = new int[5];
int[] a = new int[]{1,5}
int[] a = {5,7};
2. 数组遍历:
for(int i=0;i<a.length;i++){
a[i] // 获取数组中元素
}
注意:如果超过数组的下标范围,则编译不报错,运行报错,错误信息:java.lang.ArrayOutOfBoundsException(数组下越界)
3. 数组扩容:
(1) 定义一个新的更大长度的数组,通常为原数组的2倍
(2) 将原数组中数据一一复制到新数组中
(3) 新地址覆盖旧地址
面向对象
一、对象 【重点】
-
对象:复杂客观事物在计算中的一种表现形式(一切客观存在的事物都是对象)
-
类:类对一类对象的描述,描述该类对象具有那些属性(特点)和哪些方法(功能)
-
类的组成部分:
(1) 属性:描述对象的特点,利用变量进行存储(成员变量) (2) 方法:描述对象的功能,利用之前函数进行表现
-
属性:
(1) 位置:定义在类以内,方法以外 (2) 语法:数据类型 变量名; (3) 属性:也称为成员变量 (4) 成员变量和局部变量的区别:从位置区分两种变量 【面试重点】 成员变量 局部变量 位置: 定义在类以内,方法以外 定义在方法以内 默认值: 具有默认值 没有默认值,先赋值后使用 整数:0 小数:0.0 布尔:false 字符:空字符('/u0000') 引用:null String str; 作用范围:至少在本类 从定义位置开始,到定义它的代码块结束 命名冲突:成员和局变量可以命名相同, 在重合的作用范围内,不允许命名冲突 但是冲突时,局部变量有效使用, 利用this.区分成员变量
-
成员方法: (1) 定义在类以内,方法以外 (2) 语法: 修饰符 返回值类型 方法名(形参列表){ // 方法的实现部分(逻辑) } (3) 方法分两个部分:方法的声明和方法实现 a.方法的声明: 修饰符 返回值类型 方法名(形参列表)异常 -- 代表对象能做什么 注意:一个方法中可以同时定义多个修饰符,而且没有位置先后之分 b. 方法的实现:{} -- 代表声明的功能如何实现 (3) 方法的重载(overload): a. 概念:在一个类中多个同名的方法,但是形参列表不同 b. 方法重载的要求:【面试重点+阅读api文档时应用】 I. 方法名相同 ii. 形参列表不同(参数的个数、类型、顺序) iii. 方法的修饰符、异常、返回值类型没有要求 (4) 构造方法:也称为构造器(construtor) a. 构造方法是特殊的方法 b. 构造方法的特点: I. 构造方法的方法名必须和类名一致 ii. 构造方法没有返回值类型(连void都没有) 返回值类型 类名(){} 例如:public Student(){} iii.构造方法允许重载 iv. 构造方法不允许手动调用 c. 构造方法在创建对象时,jvm根据指定的实参调用对应的构造方法,而且一个对象只能使用一次构造方法(创建的时候); 但是一个构造方法可以被多个对象使用 d. 构造方法的作用: i. 创建对象 ii. 利用构造方法为属性赋值 e.注意:如果一个类中没有提供任何构造方法,则jvm默认提供一个公开的、无参数的构造方法; 如果类中提供了有参数的构造方法,则默认的构造方法不再提供 已经提供有参数的构造方法,同时还想使用无参数的构造方法,则手动提供无参数的构造方法 f. 实际开发的技巧:、 一个类中通常提供两个构造方法,一个无参数的构造方法,再提供一个有参数的构造方法(参数取决于属性:个数、顺序、名字) 定义一个类:Phone,属性:brand(品牌)、price(价格)、count(库存)、color(颜色) (1) 提供构造方法 (2) 定义测试类,并创建对象,打印输出对象信息
二、this的应用
-
第一种应用:this. 【重点】
(1) this:代表当前对象,访问当前对象的属性或是成员方法,可以应用当前类中的构造方法或是成员方法中 (2) this.属性名 this.成员方法名(实参); (3) 通常情况 this.可以省略,但是当成员变量和局部变量命名冲突时,必须使用this.访问成员变量
-
第二种应用:this()
(1) this():应用在当前类中构造方法中,代表调用本类的其他构造方法 (2) 注意:this()的应用必须定义在构造方法中第一行有效语句 (3) 注意:实际开发时,一个中不能所有的构造方法第一行都定义this()/this(实参),避免回环(递归)调用
定义一个类Cup,属性:brand(品牌)、texture(材质)、capacity(容量)、color(颜色) 提供构造方法, 定义测试类,创建对象,并展示对象信息
三、引用【理解】
补充:Java是一种强类型的语言,数据必须存储对应类型的变量中
-
引用:对象类型的变量称为引用
类名 引用名 = new 类名(); 引用 对象 引用类型 对象的类型 注意:由于Java是强类型的语言,引用的类型需要和存储的对象类型一致 Teacher t = new Teacher(); Student s = new Student();
-
引用存储对象在堆空间中首地址
-
每个对象在堆空间中相互独立,操作一个对象,不会影响其他对象
-
引用可以单独声明:
类名 引用名; -- 声明引用 Student s;
-
同类型的引用之间相互赋值,传递的是对象在堆空间中的地址
Student s1 = new Student(); Student s2 = s1; 注意:s1和s2指向同一个对象
-
通常情况下,可以利用null作为引用的初始值,null代表空引用/空地址(不指向堆空间中任何对象)
如果使用存储null的引用调用对应的属性或是方法时,则编译通过,运行报错,错误信息为: java.lang.NullPointerException(空指针异常)
-
引用的应用:
(1) 引用可以应用在形式参数上:对应类型的对象和引用都可以作为参数进行传递 (2) 引用可以应用在返回值上:对应类型的对象和引用都可以作为返回值进行返回