重新开始第4天
面向对象
Java的核心思想就是OOP//面向对象编程
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据
面向过程思想
步骤清晰简单,第一步做什么,第二部做什么
面向过程适合处理一些较为简单的问题
面向对象思想
物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行
单独思考。最后,才对某个分类的细节进行面向过程的思索。
面向对象适合处理复杂的问题,适合处理需要多人协作的问题。
三大特性
封装
继承
多态
this()和super()
在一个类中,this就是调用的是自身这个类的属性
在继承的类中,super()调用父类的构造方法。
abstract抽象类
抽象类属于引用数据类型。
抽象类怎么定义,在class前添加abstract关键字就行了。
抽象类是无法实例化的。无法创建对象,所以抽象类是用来被子类继承的。
final和abstract不能联合使用,这两个关键字是对立的。
抽象类的子类可以是抽象类,也可以是非抽象类。
抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法供子类使用
抽象方法怎么定义
public abstract void doSome();
一个非抽象的类,继承抽象类,必须将抽象类中的抽象方法进行覆盖/重写/实现。
interface 接口
接口是一种“引用数据类型”
接口是完全抽象的
接口怎么定义
interface Test
接口支持多继承,一个接口可以继承多个接口
接口中只包含两部分内用:常量,抽象方法。
接口中所有元素都是public 修饰
接口中的抽象方法的public abstract可以省略
接口的方法都是抽象方法,所以接口中的方法不能有方法体。
接口常量的public static final 可以省略
Object类
JDK类库的根类:Object
protected Object clone()//负责对象克隆
int hashCode()//获取对象哈希值的方法
boolean equals(Object obj)//判断两个对象是否相等
String toString()//将对象转换成字符串形式
protected void finalize()//垃圾回收期负责调用的方法
匿名内部类
静态内部类
实例内部类
局部内部类
数组
数组中的拷贝
int[] src = {1,2,3,4,5,6,7};
int[] dest = new int[20];
调用System类中的arraycopy方法,来完成数组的拷贝
//System.arraycopy(源,源的起始位置,,目标,目标的起始位置,拷贝的长度)
System.arraycopu(src,1,dest,3,2);
//0,0,0,1,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0
System.arraycopy(src,0,dest,0,src.length);//将str全部拷贝进dest
查找数组中是否有元素下标
二分法查找是建立在排序的基础之上的。所以使用二分法查找之前要先排序
int[] arr = {4,3,2,56,76,24,12,54}
Arrays.sort(arr);
int index = binarySearch(arr,12);
System.out.println(index == -1?"该匀速不存在":"该元素下标" + index);
public static int binarySearch(int[] arr,int dest){//建立方法
int begin = 0;//设置开头初始值
int end = arr.length - 1;//设置末尾初始值,最后下标为数组长度-1
while(begin <= end){//当开始初始值大于末尾初始值结束
int mid = (begin + end) / 2;//二分法查找就是头下标加上尾下标相加除2,对比元素值
if(arr[mid] == dest){//发现此元素输出下标
return mid;
}else if(arr[mid] < dest){//当元素下标值小于检索值,begin+1
begin = mid + 1;
}else{
end = mid -1//当元素下标值大于检索值,end -1
}
}
return -1;
}
//中间值都是(begin+end)/2,当dest在右边的时候,begin=mid + 1,然后循环再次(begin+end)/2,
本来mid= 5,就变成了6,检索下标就会往右移动。相反end-1就会向左移动如此一步一步的缩小范围,
在此方法中只要begin/end有一方动了就会一直动下去来缩小范围
***binarySearch工具包里直接写好了直接吊包就好了
java,util,Arrays工具类
Arrays.sort(数组名);//从小到大排序
Arrays.binarySearch(数组名,下标);//二分法查找

浙公网安备 33010602011771号