1.二分查找
定义:使用折半的形式,一次性剔除一半的无效元素,提高查找的效率,二分查找的数组必须是有序的,
public static int binsearch(int[] arr,int value){
int start=0; int end=arr.length-1; int mid;
while(start<=end){
mid=(end+start)/2;
if(arr[mid]==value){
return mid;
}else if(aee[mid]>value){
end=mid-1;
}else if(aee[mid]<value){
start=mid+1;
}
}
return-1;}
2.冒泡排序
定义:相邻的两个值比较,然后交换位置,每次循环都会将有效元素中最大的或者最小的移动到有效位的最后,经过多次循环后,就可以派出一个有序的数组
public static void bubbleSort(int[] arr){
for(int i=1;i<arr.length;i++){
for(int j=0;j<arr.length-i;j++){
if(arr[j]>arrr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;}
}
}
3.方法
将一段代码圈起来,便于重复使用(提高代码的复用性)
方法名:别的方法要调用当前方法,需要方法名
参数列表:当前方法运行的原材料
返回值类型:检测或者是规定能够当前返回出去的结果的类型
一.方法的分类和调用
有参有返回值,有参无返回值,无参有返回值,无参无返回值,赋值调用,单独调用,输出调用.
二.方法的重载
类中出现了方法名相同,参数列表不同的方法,这种现象我们称之为重载
参数列表不同的表现:类型不同,长度不同,顺序不同
三.方法间调用的内存原理
虚拟机开启,只会执行main方法,其他的方法都必须有main方法调用才能印出来
栈:一端开口,方法的运行区域.:栈只会执行最顶端的方法,压栈,弹栈
四.可变参数
优点:即可以接受数组,也可以接受散装数据
缺点:必须是参数列表的最后一个参数
4.面向对象
java的程序一半是运行在多工环境(同一时间有好多人使用)
为了保证代码和数据的安全性,每个人使用的类必须分开
所以,java中会造一个模板,用户使用时,通过模板早出每个人专属的对象
所以,java成员每天都在跟对象打交道,称之为面向对象编程
5.类的使用
工具
模板:成员变量和成员方法混合使用,单独使用成员变量的(javaBean)
6.对象
根据模板创建的实例,存放在堆内存中
一个类可以创建无数个对象
类名 对象名=new 类名();
7.成员变量和局部变量
书写的位置,内存中的位置,声明周期,初始化值
8.匿名对象
没名字的对象,用一次就不用了
9.private关键字
私有化,本类中的其他成员可以使用,别的类中无法使用
10.javaBean
用来存储运输数据,私有化所有的成员变量,提供getter和setter方法,提供toString方法
11.this
表示当前对象,那个对象调用这个方法,this就代表谁
12.构造方法
特性:随着创建对象而自动执行和创建对象这个动作是紧密相连的
作用:优先于成员方法执行,给方法运行时的必要成员变量赋值
构造方法的重载:所有存在的可用的构造方法都是重载关系,构造方法之间可以相互调用this()
13.类成员之间相互调用
成员变量和成员方法之间是可以相互调用的,构造方法可以调用成员变量和成员方法,构造代码块也可以调用成员变量和成员方法,成员变量和成员方法无法调用构造代码块和构造方法,构造方法和构造代码块相互无法调用
14.代码
局部代码块:写在方法内,即使释放资源
构造代码块:优先于构造方法执行,可以将构造方法中相同的代码提取出来,放到构造代码块中
静态代码块:类加载时执行,优先于对象,一般用来注册驱动
同步代码块:保证多线程的安全性
15.静态
类加载的过程中,在初始化类的时候,会将所有的静态存入静态方法区(能执行的就先执行了),独一份
优先于对象,更优先于所有的非静态
唯一的,公用的
静态的调用:静态只能调用静态,非静态可以的调用静态.因为静态存在的时候,非静态不一定存在,如果直接调用,有危险,虚拟机不允许.非静态执行时,静态一定存在,所以,可以放心使用
16.单例模式
解决一个类在内存中如何只保存只有一个对象的问题
类为什么要在内存中只有一个对象?:节省创建对象的时间和存储对象的空间,而且不会占用静态方法去的空间
私有化构造方法
定义一个四游湖的静态变量用来存放我们自己创建的对象
提供一个静态的方法,供用户获取对象
17.继承
子类类名extends父类类型
子类可以使用父类的非私有成员
提高了代码的复用性和维护性
类和类之间的关系加强了,不符合编程的理念
注意事项:父类中的私有化成员不能继承,super关键字.
构造方法,子类会默认访问父类的空餐构造,我们没写,编译器会自动加上,如果父类中没有空参构造,子类会报错,需要我们手动调用父类的空参构造,或者去父类中添加一个空参构造,super()必须是子类构造方法的第一条执行语句
18.方法的重写
子类和父类中出现了一模一样的方法,这种现象叫重写,方法名和参数列表必须一样,子类重写父类的方法,意味着,子类的方法对父类的方法形成了全遮挡
注意事项:子类的权限不能比父类低,父类中的方法如果是静态的,子类重写的时候也必须是静态的,父类的私有化方法不能重写,因为压根看不见
instanceof关键字:用来比较对象是不是属于这个类或者这个类的父类.
19.多态
子类对象可以存到父类的变量中
前提条件:子父类关系.方法重写.父类引用指向子类对象
好处:提高代码的复用性和扩展性
缺点:不能使用子类对象的特有方法
20.多态成员访问特点
编译看左,运行看左:成员变量,静态方法
编译看左,运行看右,只要子类中重写了,一定执行子类的方法:非静态成员方法(全遮挡)
向上转型(子类转父类)
向下转型(父类转子类,有危险),转之前,要使用instanceof关键字判断一下
21.final
最终的, 无法被改变 , 只能赋值一次
修饰的特性:修饰类, 类不能被继承,修饰方法, 方法不能被重写,修饰变量, 变量只能赋值一次
修饰成员变量时,在初始化完毕之前必须要赋值,静态是类初始化完毕前,非静态是对象初始化完毕前
22.abstract关键字
制定规则,一个类中如果有抽象方法,这个类也必须是抽象类,抽象类中可以没有抽象方法,抽象不能实例化(创建对象) , 不安全, 抽象方法用不了,抽象类的子类可以是抽象类, 不用重写抽象方法,抽象类的子类可以是非抽象类, 必须重写抽象方法
23.java传递值得方式
基本数据类型传递的是值, 引用数据类型传递的是址, String稍微特殊
24. 接口
interface implements,接口中全部都是抽象方法,接口中的成员变量,都是公开的, 静态的, 最终的 public static final
作用,指定规则,思考的过程,代码的框架
我们在思考过程中, 用来记录业务逻辑.
25.类和接口之间的关系
类和类: 继承 单继承, 多层继承
类和接口: 实现, 可以多实现
接口和接口: 继承, 可以多继承