day08

Arrays工具类
1,这是一个引用包,调用方法import java.util.Arrays,里面有很多操作数据的方法

代码示例
import java.util.Arrays;
class Demo01_Arrays {
	public static void main(String[] args) {
		//二分查找
		int[] arr1 = {10, 22, 33, 66, 88, 333, 888};
		int index = Arrays.binarySearch(arr1, 333);
		System.out.println(index);
		//比较数组内容是否相等
		int[] arr2 = {10, 22, 33, 66, 88, 333, 888};
		System.out.println(Arrays.equals(arr1, arr2));
		//替换填充
		System.out.println(Arrays.toString(arr2));
		Arrays.fill(arr2, 666);
		System.out.println(Arrays.toString(arr2));
		
		//排序
		int[] arr3 =  {12, 23, -66, 6, 88, 53, 99, -888};
		System.out.println(Arrays.toString(arr3));
		Arrays.sort(arr3);
		System.out.println(Arrays.toString(arr3));
	}
}

代码块
1,使用大括号包起来的一段代码,不同位置,不同修饰,就是不同的代码块,就会有不同的作用
2,分类;
局部代码块
构造代码块
静态代码块
同步代码块(多线程)
局部代码块
1,定义在方法中的代码块
2,格式;直接在方括号中,使用一对大括号,将一段代码抱起来
3,作用;
限定变量的作用区域,限定变量的生命周期,节约内存空间
4,说明;
1,在局部代码块中,声明的变量,一旦出了局部代码块,就无法继续使用了
2,在局部代码块中,声明的变量,一旦局部代码块运行完成,jvm就会将局部代码块中的变量回收掉
3,局部代码块中,使用变量,和在局部代码块之外使用该变量,没有任何区别
构造代码块
1,定义在类方法外的一段代码,使用大括号包起来
2,格式:
使用大括号包起来就行了,位置在类中方法外
3.作用:
用于给成员变量赋值初始化值
4,执行时机;
在创建对象的时候,被jvm默认调用
在构造方法执行之前,执行
任意一个构造方法,在执行之前,都会先执行本类的构造代码块
如果每个构造方法都要执行的相同的内容,就可以抽取到构造代码块中
静态代码块【常用】
1,格式:
static{
静态代码块内容
}
2,位置;
类中方法外
3,执行时机,特点;
1,随着类的加载而执行
2,由于类只会加载一次,因此静态代码块也只能执行一次
3,由于类的加载时机比较早,静态代码块也是最早执行的
4,作业
1,用于给静态的成员变量赋初始化值
2,用于执行那些只需要执行的一次的代码,列入加载驱动
继承
1,让类与类产生关系,子类继承父类的关系
2,关键字:extends
3,父类和子类的其他称呼;
父类;被继承的类,超类,基类
子类;用于继承的类,派生类
继承的好处、弊端
1,好处,提高了代码的复用性,提高了代码的可维护性
没有继承:代码需要修改的时候,修改起来特别复杂
有了继承;只需要在父类中修改,所有子类都跟着变
2,是多态的前提,多肽很重要
3,更符合观察世界的习惯

2,坏处;
提高了代码的耦合性
耦合性:类与类之间,相互依赖的关系,相互影响的程度
3,开发原则;
1,高内聚,低耦合
高内聚:能自己完成的事情,全部都要自己做,各种功能都封装到自己的主体中
低耦合;不需要依赖其他内容
2,高复用性
能利用其他的已经完成的功能,就尽量利用,而不是什么事情都要自己再做一次
继承的注意事项
1,私有的成员不能被继承
父类中定义的私有成员(变量,方法),不能在子类中直接访问
其实在子类的对象中,依然是包含了父类中定义的全部数据
在子类中不能直接访问,可以通过父类中定义的公有方法,间接的访问私有数据
2,父类中的构造方法,不能继承
原因:
1,父类的构造方法和父类类名一致,子类的构造方法必须和子类一致
2,父类的构造方法用于初始化父类中定义的成员变量
子类的构造方法用于初始化子类的成员变量
子父类中的成员变量可能不同,无法继承父类的构造方法来完成子类初始化自己的成员变量的任务
解决:
子类不能继承父类的构造方法,但是可以通过super语句【调用】父类的构造方法
3,不要为了部分功能不重复定义,而设计继承关系
Java继承特点
1.Java支持单继承
一个子类,只能有一个父类(一个儿子就只能有一个亲爹)
2,不支持多继承
3,java支持多层继承
一个子类可以拥有一个父类,父类可以拥有自己的父类
类也可以拥有之类,子类还可以拥有子类,形成一个集成体系
在顶层的父类中都定了共同拥有的,基本的共性功能
在底层的子类中,包含了祖先类中定义的所有功能,也可以拥有自己的也有功能
将来在学习一个体系的时候,可以先学习父类,在学习子类中特有的方法
使用一个类型完成某个任务时,创建子类对象,功能最丰富

继承中成员变量的关系
1,在子父类中出现了不同名字的成员变量,子类可以直接访问父类的成员变量
2,在子父类中,出现了同名的成员变量,根据就近的原则,先在本类的成员位置寻找该变量的定义,如果找到就直接使用,如果没有找到,到父类的父类中寻找,一直找到object类,直到找到为止,最终没有找到就报错
3,如何控制访问局部变量,本类成员变量,父类成员变量;
1,直接写,根据就近原则,先在方法中寻找局部变量
2,this.成员变量,不会在方法中找,直接到本类的成员位置找,如果找不到,才回去父类的成员位置寻找
3,super.成员变量,不会在方法中找,也不会在本类的成员位置找,直接到父类的成员位置找
4,注意:
一般,不会在子父类中定义重名的变量

this和super关键字详细解释
1,含义;
this;本类当前对象的引用
super;本类当前对象父类的引用
this和super使用总结
1,总体说明;
可以访问成员变量,可以访问成员方法,可以访问构造方法
2,访问成员变量;
this.成员变量;即可访问本类的成员变量,也可以访问父类的成员变量,根据就近原则,优先方法本类的成员变量
super成员变量,只能访问父类的成员变量,不能访问子类的
3,访问成员方法();
this.成员方法();即可访问本类的成员方法,可以访问父类的成员方法,根据就近原则,优先访问本类的成员方法
super.成员方法();只能访问父类的,不能访问子类的
4,访问构造方法,不是通过this 或者super
this (实际参数) ;访问的是本类的其他构造方法
super(实际参数);访问的是父类的构造方法
继承中构造方法的关系
1,子类对象依赖父类中的某些数据,所以编译器必须制造一系列的规则,保证:在初始化子类的数据之前,必须先初始化完成父类的部分的数据
2,如果在子类的构造方法中,没有显示的访问父类的构造方法,那么在子类的构造方法的第一句话默认添加语句,访问父类的空参构造(在子类构造方法的第一行,加上super(),第一句,默认添加语句,访问父类的空参构造(在子类构造方法的第一行,加上了super())
3、如果在子类的构造方法中,显式的访问了父类的构造方法、或者显式的访问了本类的其他构造方法,那么系统将不再给该构造方法添加任何内容
4、构造方法不能递归调用:为了防止在子类中,构造方法之间互相调用,永远无法调用父类的构造方法
5、this语句或者super语句,必须是构造方法的第一个语句
衍生结果:【this语句】和【super语句】不能在构造方法中共存
说明:this和super可以共存,只是在表示构造方法的时候,无法共存

你可能感兴趣的:(java,day08,笔记)