重新开始第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

查找数组中是否有元素下标

@arr 被检索的数组
@ele 被检索的元素
@return 大于等于0的数表示元素的下标,-1表示该元素不存在
​
int[] arr = {34,5,6,87,8};
int index = arraySearch(arr,87);
public static int arraySearch(int[] arr,int ele){
   for(int = 0;i < arr.length; i++){
       if(ele == arr[i]){
           return i;
      }
  }
   return -1;//存在返回元素下标,不存在返回-1
}

二分法查找是建立在排序的基础之上的。所以使用二分法查找之前要先排序

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(数组名,下标);//二分法查找

 

 

posted @ 2020-09-22 15:17  锁猴  阅读(87)  评论(0)    收藏  举报