JAVA基础(数组、对象)
一、数组
1、只能储存同样类型的数据,支持数据类型有基本数据类型和引用数据类型。数据也属于引用数据类型
2、数组也是一个容器,长度一旦确定不可改变
3、数组中的数据是有序的 下标从0开始 通过下标来操作数组中的数据
4、数组声明格式
数组类型[] 数组名; //推荐 数组名符合标识符命名规则
数据类型 数组名[];
5、数组初始化
一、动态 初始化:
指明数组的大小,并创建数组,在内存中为其分配空间,后续动态赋值
数据类型[] 数组名=new 数据类型[长度]
//数组命名属于局部变量 有默认值
二、静态 初始化
创建的同时赋值,根据数据的个数确定数组的长度
数据类型[] 数组名=new 数据类型[]{值1,值2,值3...};
数据类型[] 数组名={值1,值2,值3...};
5、数组的长度
数组名.length
表示数组的长度 , 数组中的最后一个索引表示: 数组名.length-1
6、数组的遍历
数组的遍历就是查看数组中所有的数据
方法:
一、普通for循环
for(int i=0;i<=数组名.length-1;i++){
System.out.print(数组名[i])
}//特点 能获取数组值和其索引
二、增强for循环
for(数据类型 变量:数组名){
System.out.print(变量);
}//数据类型和数组的数据类型保持一致 只能获取数组的值
7、常见的异常
1、数组索引越界:ArrayIndexOutOfBoundsException
8、二维数组
数组中放数组称为二维数组,当然也可以三个数组嵌套 基本上用到二维数组就差不多了
一、二维数组声明
数据类型[][] 数组名; --推荐使用
数据类型 数组名[][];
数据类型[] 数组名[];
二、二维数组初始化
数据类型[][] 数组名 = new 数据类型[长度1][长度2];
长度1:外层数组的长度
长度2:没一个内层数组的长度(每一个小数组的长度一致)
数据类型[][] 数组名 = new 数据类型[长度1][];
数据类型[][] 数组名 = new 数据类型[][]{{1,2,3},{4,5},{6}...};
数据类型[][] 数组名 = {{1,2,3},{4,5},{6}...};
三、二维操作数组
数组名[外层数组的索引][内层数组的索引]
四、二维遍历数组
用双重循环来遍历二维数组
arr2[0]=new int[3];
arr2[0][0]=0;
arr2[0][1]=1;
arr2[0][2]=2;
for(int i=0;i<=arr2.length-1;i++){
//内层每一个小数组的索引 arr2[i]
for(int j=0;j<=arr2[i].length-1;j++){
System.out.println(arr2[i][j]);
}
}
二、面向对象|面向过程
1、面向对象和面向过程的区别:
面向过程是具体的,流程化,解决一个问题你需要一步一步分析,一个个实现。
优点:性能比面向对象好,因为类调用的时候需要实例化,比较消耗资源
缺点:不易维护、不易复用、不易扩展
面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们我们使用的就是面向对象了
优点:易维护、易扩展、易复用,由于面向对象有封装、继承、多态的特性,更加灵活易与维护。
缺点:性能比面向过程差
2、面向对象的更贴近于管理者,面向过程跟符合执行者
3、面向对象可以吧复杂的问题简单化
4、那么面向对象怎么使用呢??
对象需要通过类来创建;类就是一个对象的一个模板 你要什么样的对象,对象的属性 方法都在类中体现;
5、类—>对象—>使用
类的定义:
public class 类名{
//成员变量|属性
修饰符 数据类型 变量名 = 值;
//成员方法|功能
修饰符 返回值类型|void 方法名([参数列表]){
功能体;
[return 数据;]
}
}
6、当类创建好了之后就可以在main方法之后调用类创建对象
调用类需要注意的是:
1、导包 同包下的类不需要导包,lang包下的内容不需要导包
2、创建类型的引用 new对象 : 类名 变量名=new 类名();
3、使用类的 属性和方法
变量名.属性名; 变量名.方法名();
7、面向对象的三大特性:
一、封装
隐藏对象的属性和实现细节,仅对外提供访问方式,将变化隔离,便于使用,提高复用性和安全性
二、继承
提高代码复用性;继承是多态的前提
三、多态
父类接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的扩展性