数组<------->面向对象思想
数组[ ]:
存储相同类型的多个数据
1.变量:存储单个数据
2.数组:存储相同类型的多个数据
数组的特点:
1.数组是引用数据类型
2.数组是个容器,长度一旦确定不可改变
3.数组中存放的多个数据的数据类型要求一致
4.数组中的数据是有序的,(可以通过索引或者下标)索引从开始
操作数组中的数据:
根据下标 数组名[下表|索引]
数组的声明:
数据类型 [] 数组名;
数据类型 数组名 [] ;
数据类型可以是基本数据类型|引用数据类型:指明数组中要存放数据的类型
数组的初始化:
动态初始化:
指明数组的大小,并创建数组,在内存中为其分配空间,后续再为其赋值;
数据类型[] 数组名= new 数据类型[长度];
只 声明未赋值系统提供默认值:整数:0,布尔:false,字符:’ ’,小数:0.0,字符串:null;
静态初始化:
创建的同时赋值,根据数据的个数确定数组的长度
数据类型[]数组名=new 数据类型[]{值1,值2,值3….};
数据类型[] 数组名 = {值1,值2,值3…};
数组中数据的个数|数组的长度: 数组名.length
数组中最后一个数据的索引: 数组名.length-1
数组的遍历:
1. 普通for循环 i-à数组中的索引
//遍历数组 普通for 定位的是数组中的每一个空间
for(int i=0;i<=arr3.length-1;i++){
System.out.println(arr3[i]);
}
2. For..each 又称为增强for
表现形式:
for(数据类型 变量名:数组名|容器名){
i代表数组中的每一个数据
}
//for..each 获取的是数组中的每一个值
for(String i:arr2){
System.out.println(i);
}
使用数组时候常见的异常:
1.数组下标越界异常 ArrayIndexOutOfBoundsException
2.空指针异常 NullPointerException
3.数组长度为负数 NegativeArraySizeException
普通for和增强for区别:
普通for和增强for在用法上边大体相同,但是增强for不能够在增强循环里动态删除数据,没有数组索引;所以要求下标明确的情况下,选用普通for
二维数组:
可以简单理解为数组中存放数组
声明:
数组类型[][] 数组名; ------->使用频率挺高<建议使用>
数据类型 [][] 数组名[][];
数据类型[] 变量名[];
初始化:
数据类型[][] 数组名 = new 数据类型[长度1][长度2];
长度1 :外层数组长度
长度2: 内层数组长度(也可以理解为,外层数组包含的每个内层小数组长度相等)
二维数组动态赋值
数据类型 [][] 变量名 = new 数据类型[长度1][];
二维数组的静态赋值
数据类型[][]变量名= new 数据类型[][]{{1,2,3},{1,2,3},{1,2,3}…}
数据类型[][] 变量名= {{1,2,3},{1,2},{1}…}
操作二维数组:
数组名[外层数组的索引][内层数组的索引]
遍历二维数组:
双重循环
面向对象
一. 面向对象和面向过程的区别:
都是一种思维方式,一种思想
面向过程:关注如何实现?然后一步步去实现
面向对象:领导者思想(关注招谁来完成,只关注对象,至于对于对象是如何实现的不关注; 面向对象是依托于面向过程的)
二. 面向对象的优点:
- 更符合现实生活的思维方式|角度
- 面向对象的思维跟贴近于管理者,面向过程的思维方式体现在执行者
- 面向对象可以将复杂的问题简单化
三. 如何使用 面向对象的思维方式进行开发:
类 对象
类:描述现实生活中的一系列事物,以及一系列事务的共性 模板,图纸
对象:现实中存在的事物
根据类创建对象,根据模板才能构造事物
类-à对象-à使用
四. 自定义类
举例说明:
成员方法:不用static修饰的方法
1.手机能做什么? 打电话,上网,玩游戏,学习... 功能:动词 成员方法:不用static修饰的方法
2.手机的特点|特征|属性: 颜色,品牌,价钱,尺寸... 特征|属性:名词 成员变量: 类中方法外
public class 手机类{
//成员变量|属性
修饰符 数据类型 变量名 = 值;
//成员方法|功能
修饰符 返回值类型|void 方法名([参数列表]){
功能体;
[return 数据;]
}
}
1.导包
同包下的类不需要导包,lang包下的内容不需要导包
2.创建类型的引用|变量 new创建对象
Phone p=new Phone();
3.使用功能|属性
引用|对象.功能名字()
引用|对象.属性名字