百战中的成长(008)

1.抽象类和抽象方法
(1)简述抽象方法的特征
1.abstract 修饰的方法叫抽象方法,抽象方法不允许有花括号只能由分号结尾
2.含有抽象方法的类必须是抽象类,否则程序报错
3.抽象方法只能声明在抽象类中,抽象类中可以有0个或者多个抽象方法。
4.抽象方法必须被子类实现
5.如果子类不能实现父类中的抽象方法,那么子类也必须是抽象类。

(2)什么情况下使用抽象方法?
通过抽象类可以避免子类设计的随意性,通过抽象类,我们可以严格限制子类的设计,使子类之间更加通用。(增加了程序的可扩展性和可维护性)
当父类比较抽象,创建对象无意义时可以使用抽象类。当在父类中设计一个方法,子类去实现这个方法,不同的子类实例调用相同的方法的时候有不同的效果此时可以通过抽象方法的设计让子类必须实现这个方法。
2.接口的详解
(1)接口中可以包含哪些内容?
接口可以包含:
1.抽象方法(public abstract修饰的方法可以省略不写)
2.非抽象方法(public default修饰的方法)
3.属性(public static final修饰的常量)
(2)接口和类的关系?
类去实现接口中的抽象方法,关键字implements
3.使用接口的意义
(1)接口有哪些特征?
1.接口实现了传递性,如果接口A继承了接口B,接口B又继承了接口C,则A可以实现接口C中的方法。
2.接口不仅可以继承还可以实现多继承用英文“,”隔开
(2)使用接口实现多态的步骤?
1.编写接口
2.实现类实现接口中的方法
3.接口(类型) new 实现类的对象
4.内部类详解
(1)内部类有哪些特点?
1.内部类作为外部类的成员,可以直接访问外部类的成员(包括private成员),反之则不可以
2.内部类作为外部类的成员,可声明为private、default、protected或者public
3.内部类的成员只有在内部类的范围之内有效
4.用内部类定义在外部类中㐓访问的属性,这样在外部类中就实现了比外部类的private还要小的访问权限。
(2)内部类可以分哪几类?
内部类可以分为4类:
1.成员内部类
2.静态内部类
3.方法中的内部类
4.匿名内部类
5.String类常用方法_API文档阅读
(1)String类位于哪个包中,在API中String在的定义是什么?
String位于java.lang包中,String表示的字符串,字符串是常量,它们的值不能被创建后改变。支持可变字符串字符串缓冲区。因为字符串对象是不可改变的,所以它们可以被共享。
(2)请你列举出String类的五个常用方法?
public char charAt(int index)
此方法返回这个字符串的指定索引处的char值。第一个char值在索引0。

public boolean equalsIgnoreCase(String anotherString)
如果该参数不为空,它表示一个相等字符串忽略大小写此方法返回true,否则返回false。

public int indexOf(int ch)
此方法返回字符在该对象表示的字符序列中第一次出现的索引,或者-1,如果该字符不会找到。
public int indexOf(int ch, int fromIndex)Java
此方法返回字符在此对象大于或等于fromIndex表示的字符序列中第一次出现的索引,或如果该字符未找到返回 -1
public int lastIndexOf(int ch)
此方法返回字符在该对象表示的字符序列的最后一个匹配项的索引,或者-1,如果该字符没有找到。

public int length()
此方法返回该对象表示的字符序列的长度。

public String toLowerCase()
此方法返回转换为小写的字符串。
public String toUpperCase()
此方法返回转换为大写的字符串
1.String类和常量池
(1)请你列举出String类的常用构造方法?
//String常用的构造方法
String str1 = new String();//创建了一个空的字符串
String str2 = null;//声明了一个字符串
String str3 = new String(“abc”);
char [] c = {‘a’,‘b’,‘c’};
String str4 = new String©;
byte [] b= {97,98,99};
String str5 = new String(b);
//表示从下标为0开始截取,截取两个创建一个字符串
String str6 = new String(c,0,2);
//表示从下标为1开始截取,截取两个创建一个字符串
String str7 = new String(b,1,2);
(2)请你简述一下常量池?
用于存储在编译期确定,并被保存在已编译的字节码文件中的一些数据,包括final修饰变量及字符串常量,和符号引用量。
2.字符串相等的判断
(1)比较字符串地址是否相等使用什么运算符?
“==”
(2)使用什么方法比较两个字符串的内容是否相等?
Str1.equals(str2)
3.多维数组
(1)二维数组的初始化有几种方式分别是什么?
//声明并初始化二维数组的三种方式
//二维数组不是规则的矩阵
int [][] arrayA = {{1,2},{2,3,4},{3,4,5,6}};
//声明了一个二维数组,用于存储三个一维数组,每个一维数组的长度不确定
int [] arrayB[] = new int[3][];
arrayB[0] = new int[]{12,14,15};
arrayB[1] = new int[4];
arrayB[2] = new int[2];
//声明了一个二维数组,同时创建出一维数组,且每个一维数组的长度为4
//存储三个一维数组且每一个一维数组的长度为4
int [][]arrayC = new int[3][4];
(2)二维数组的遍历有几种方式?
1.普通for循环
2.加强for循环
3.普通for循环和加强for循环结合
4.Object数组存储表格数据
(1)数组都可以存储哪些类型的数据?
数组可以存放基本数据类型,也可以存放引用数组类型
(2)请你画出使用对象数组存储数据的内存结构图?

5.数组的拷贝
(1)数组的拷贝分为哪两种类型的拷贝?
数组的拷贝分为地址的拷贝和值的拷贝
(2)System类中数组拷贝的方法是什么?参数均是什么含义?
System类中数组拷贝的方法System.arraycopy(src,srcPos,dest,destPos,length);
Src:表示源数组
srcPos:表示源数组的起始位置
Dest:表示目标数组
destPos:表示目标数组的起始位置
Length:表示要复制的长度
6.java.util.Arrays工具类的使用
(1)Arrays工具类在API中的说明是什么?
继承了Object
包含于用于操作数组的各种方法
没有构造方法

(2)Arrays类中的常用方法有哪些?
1、Arrays.toString(数组名):打印数组,快速遍历数组元素
2、Arrays.equals(数组1,数组2)比较两个数组是否相同(相同顺序相同元素)
Object中的equals方法是用来比较两个对象的内存地址(引用)是否相同。
3、Arrays.copyOf(原数组,长度)复制指定的数组,会重新开辟空间。
4、Arrays.fill(数组名,填充的数据)填充,每个元素值一样
5、Arrays.sort(数组名)数组排序,升序(排序的对象必须具备比较大小的能力)
对象数组的排序需要编写比较规则

7.冒泡排序的基础算法
(1)冒泡排序的原理是什么?
如果一个数组有n个元素则至多要比较n-1次能让数组有序
每一次比较都是从头开始比,比较相邻元素,一直比较到数组的最后
如果前一个元素大于后一个元素则引入第三变量交换
(2)冒泡排序的外循环条件是什么?内循环条件是什么?
外层循环条件是要比较的轮数,内层循环条件是数组元素相邻之间要比较的次数
优化前:外层:int i;i<arr.length-1;i++ 内层:int j;j<arr.length-1;j++
优化后:外层:int i;i<arr.length-1;i++ 内层:int j;j<arr.length-1-i;j++
优化后减少了相邻两个数之间比较的次数,因为此时只比较无序数列

猜你喜欢

转载自blog.csdn.net/weixin_42454678/article/details/96021164