抽象方法:
使用abstract修饰的方法,没有方法体,只有声明。包含抽象方法的类叫做抽象类
1)抽象类不能实例化,即不能用new来实例化抽象类,但可以包含属性、方法、构造方法。
2)抽象类只能用来继承
3)抽象方法必须被子类实现
4)抽象类存在的意义就是为子类提供模板
接口
1)比抽象还抽象的类,实现了规范与模板的分离
2)格式:interface 接口名[extends 父接口1,父接口2……]{
常量定义 //不能定义变量
方法定义}
3)常量:接口中的属性只能是常量,总是 public static fianl 修饰,不写也是
4)方法:接口中的方法只能是abstract final ,省略的话也是
5)子类通过implements来实现接口中的规范
6)接口不能创建实例,但是可以用于声明引用变量类型
7)一个类实现了接口,必修实现接口中的所有方法,而且这些方法都是public
内部类(成员内部类、匿名内部类、局部内部类//很少遇到///)
@@@成员内部类(类当作内部成员)
可以使用private default procted public进行任意修饰
1)非静态内部类
##外部类中使用非静态内部类和平时使用其他类没有什么区别
##可以直接访问外部类成员,但外部类不能直接访问非静态内部类成员
##class outer{
……
int age;
class Inner{
public void show(){
System.out.println("outer.this.age");
}//如何访问外部类
##必须寄存在一个外部类的对象里
public class TestInner {
public static void main(String[] args) {
//创建内部类的对象!!!注意格式
outer.Inner i=new outer().new Inner();
i.show();}
}
##普通内部类不能加static属性的方法和成员变量
2.静态内部类
##可以看作外部类的一个静态成员
## public class TestInner {
public static void main(String[] args) {
//创建静态内部类的对象!!!注意格式
outer.Inner i=new.oute.Inner();
i.show();}
}
3.匿名内部类
##适合只用一次的类
##用的很少
局部内部类(在方法内部定义的类)
##作用域仅限于此方法
##很少用
Sring类(位与java.lang包)
不可变、不可继、只能被初始化一次
@@@常用方法
attention:字符串比较、常量池
API阅读(相当于一个可以查询方法的词典)
数组的拷贝
System类里也包含了一个static void arraycopy(object src,int srcpos,object dest, int destpos,int length)方法,
!!!该方法可以将src数组里的元素值赋给dest数组的元素,其中srcpos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException //此错误原因为数组越界
arrys 工具类
JDK提供的java.util.Arrays类,包含了常用的数组操作,方便我们日常开发。Arrays类包含了:排序、查找、填充、打印内容等常见的操作。
@@打印数组 : Array.toString(a)
@@数组元素排序
attention:此处的Arrays.toString()方法是Arrays类的静态方法,不是前面讲的Object的toString()方法
@@@二分法查找
@@@数组填充
多维数组
多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组,但是实际开发中用的非常少。最多到二维数组(学习容器后,我们一般使用容器,二维数组用的都很少)。
用二维数组存储表格
冒泡排序(很重要!!!)
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
优化步骤5.判断每一趟是否发生了数组元素的交换,如果没有发生,则说明此时数组已经有序,无需再进行后续趟数的比较了。此时可以中止比较。
二分法查找(折半查找)
1)数组中的元素从小到大有序地存放在数组(array)中
2)首先将给定值key与数组中间位置上元素的关键码(key)比较,如果相等,则检索成功;
3)否则,若key小,则在数组前半部分中继续进行二分法检索;
4)若key大,则在数组后半部分中继续进行二分法检索。 这样,经过一次比较就缩小一半的检索区间,如此进行下去,直到检索成功或检索失败。
代码如下:
注:本篇文章部分图片来自尚学堂 JAVA 高淇 java 300 集大型基础课程_哔哩哔哩_bilibili



