1. 数组
1.1 为什么要使用数组
在开发中可能会存在很多情况下,相同数据类型都是数据大量使用的情况,按照目前我们所学的方式,在代码中可能就会出现很多行的变量定义,会导致以下问题:
1. 代码过于臃肿!
2. 代码阅读性极差!
3. 数据维护性极差!
4. 数据没有任何的复用度可言,操作非常繁琐!
1.2 定义数组
数据类型[] 数组名 = new 数据类型[容量];
赋值左侧
数据类型:
告知编译器,当前数组中能够保存的数据类型到底是什么?并且在确定数据类型之后,整个数组中保存的数据类型无法修改!!!
[]:
1. 告知编译器这里定义的是一个数组类型数据。
2. 明确告知编译器,数组名是一个【引用数据类型】
数组名:
1. 操作数据非常重要的数据!
2. 数组名是一个【引用数据类型】
赋值号右侧:
new:
申请【XX】内存空间,并且清空整个内存空间中所有二进制位,所有的二进制位都是0
数据类型:
前后呼应,告知编译器这里支持存储的数据类型到底是什么?
[容量]:
容量==> Capacity
告知编译器,当前数组中能够存放的对应数据类型的数据,最大存储多少个!
1.3 数组的下标
规定:
数组中的下标是从0开始,到数组的容量 - 1
操作会出现的问题:
数组下标越界 ArrayIndexOutOfBoundsException
2. 面向对象
2.1 什么是面向对象
2.1.1 生活中
从生活角度看面向对象:
找合适的人,做合适事
从生活角度看面向过程:
亲力亲为,自力更生,体验人生疾苦
2.1.2 代码中
Arrays.toString();
Arrays.sort();
Arrays.binarySearch();
2.2 类和对象
类:
对于一类事物的统称,对当前事物的一些描述,属性描述和行为描述
对象:
独立,唯一,特殊的个体
2.3 Java中定义类的格式
class ClassName {
// 属性描述
// 行为描述
}
要求:
1. ClassName要求符合大驼峰命名法,并且要做到见名知意!!!
2. 属性描述,是用于描述当前类拥有的一些特征,这里可以使用变量
该变量有一个特定的名字【成员变量】 Field
3. 行为描述,是用于描述当前类可以做到一些事情,这里使用方法。
该方法有一个特定的名字【成员方法】Method
2.3.1 Java中定义类【成员变量】
例如:
class Person {
// 属性描述,这里使用成员变量 Field
// 使用String类型来描述Person类的姓名属性
String name;
// 使用int类型数据描述Person类的年龄属性
int age;
}
2.3.2 Java中定义类【成员方法】
例如:
// 使用方法描述Perosn类的吃饭行为
public void eat(String food) {
System.out.println("吃" + food);
}
2.4 类对象使用
2.4.1 Java中创建类对象的形式
new 对象
例如:Scanner sc = new Scanner(System.in);
java.util.Scanner :
数据类型,Scanner类型。创建的【变量】是Scanner的类对象,同时也是一个引用 数据类型
sc :
类对象,变量
Scanner的类对象,sc是对象名
new :
申请内存的【堆区】空间,并且清理整个空间中的所有数据。
代码中,只有有new关键字,一定会使用到内存的堆区空间,并且是新的内存空间。
Scanner(System.in) :
1. 这里是一个方法,因为有小括号
2. 方法名字和类名一致
3. 该方法称之为构造方法,Constructor 构造方法
总结:
类名 对象名 = new 构造方法(所需参数);
2.4.2 Java中使用类对象调用成员变量
格式:
对象名.属性名/成员变量名;
. ==> 的
可以操作取值或者赋值操作。
2.4.3 Java中使用类对象调用成员方法
格式:
类对象.方法名(必要的参数);
. ==> 的
2.5构造方法 Constructor
2.5.1 Java编译器提供的默认的构造方法
通过反编译工具,发现了一些不存在与代码中的内容,而这段内容就是Java编译器为了方便程序开发,提供的一个必要的无参数构造方法。
Java编译器如果发现当前class没有显式自定义构造方法,会默认提供一个无参数构造方法给予使用。
如果Java编译器发现在代码中出现了任何一个构造方法,就不会再提供对应的无参数构造方法。
2.5.2 自定义使用构造方法
构造方法功能:
初始化当前类对象中保存的成员变量数据。
目前创建对象的方式;
new 构造方法(有可能需要的参数);
new:
1. 根据构造方法提供的数据类型申请对应的堆区内存空间。
2. 擦除整个空间中所有的数据。
构造方法:
初始化在当前内存堆区空间的成员变量对应的数据
格式:
public 类名(初始化形式参数列表) {
初始化赋值语句;
}
要求:
1. 无论什么时候一定要留有一个无参数构造方法备用
2. 根据所需情况完成构造方法参数选择
3. 一个class可以有多个构造方法【方法的重载】
总结:
1. 所有的方法名字都是一致的!
2. 所有的方法参数都是不一样的!
3. 同一个类内!
2.6 this关键字
this关键字特征:
this关键字表示调用当前方法的类对象
2.7 "零"值
new关键字申请内存空间,并且擦除的一干二净
对应每一个数据类型的"零"值
基本数据类型
byte short int 0
long 0L
float 0.0F
double 0.0
char '\0' ==> nul
boolean false
引用数据类型
Person person null
String str null
int[] arr null