第15次(面向对象深化)
学习主题:面向对象初步
学习目标:
1. 掌握抽象类和抽象方法
2. 掌握接口
3. 掌握内部类
4. 掌握String类的常用方法
对应视频:
http://www.itbaizhan.cn/course/id/1121.html
对应作业:
1. 抽象类和抽象方法
(1) 简述抽象方法的特征
答:使用abstract修饰,没有方法体,只有声明,定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现
(2) 什么情况下使用抽象方法?
答:需要定义模板去让子类实现的时候,且子类必须要去实现,否则报错。
2. 接口的详解
(1) 接口中可以包含哪些内容?
答:抽象方法
(2) 接口和类的关系?
答:接口和实现类是实现规则的关系,并非父子关系
3. 使用接口的意义
(1) 接口有哪些特征?
答:接口不提供任何实现。
接口中所有方法都是抽象方法。
接口完全面对规范,可以更规范地对子类进行约束
接口可以多继承
接口中的属性只能是常量,总以:public static final修饰
接口名和类名采用相同命名机制。
接口不能创建实例,但是可用于声明引用变量类型
(2) 使用接口实现多态的步骤?
答:和类的继承类似,子接口扩展某个父接口,将会获得父接口中所定义的一切。
4. 内部类详解
(1) 内部类有哪些特点?
答:内部类只是一个编译时概念,一旦编译成功就会成为完全不同的两个类。
内部类是相对独立的一种存在,其成员变量/方法名可以和外部类的相同。
内部类可以使用public,default,protected,private以及static修饰。
(2) 内部类可以分哪几类?
答:在Java中内部类主要分为成员内部类(非静态内部类,静态内部类)、匿名内部类,局部内部类。
5. String类常用方法_API文档阅读
(1) String类位于哪个包中,在API中String在的定义是什么?
答:String位于java.lang包中,不可变字符序列。
(2) 请你列举出String类的五个常用方法?
答:1:public String(char[]value);直接将一个字符数组变为一个字符串。
2:public int length();取得字符串长度。
3:public String(byte[]bytes);将一个byte数组全部变为字符串。
4:public String trim();清除左右两端的空格。
5:public int indexOf(String str);从头开始查找指定的字符串位置。
第16次(面向对象深化)
学习主题:面向对象初步
学习目标:
1 掌握常量池
2 掌握多维数组
3 掌握Object如何存储表格数据
4 掌握数组的拷贝
5 掌握java.util.Arrays工具的使用
6 掌握冒泡排序算法
对应视频:
http://www.itbaizhan.cn/course/id/1121.html
对应文档:
无
对应作业
1. String类和常量池
(1) 请你列举出String类的常用构造方法?
答:1:public String(char[]value):直接将一个字符数组变为一个字符串。
2:public String(char[]value,int offset,int count):将一个指定范围内的字符数组变为字符串。
3:public String(byte[]bytes):将一个byte数组全部变为字符串。
4:public String(byte[]bytes,int offset,int length):将指定范围的byte数组变为字符串。
(2) 请你简述一下常量池?
答:!:全局字符串常量池(String Pool):全局字符串常量池中存放的内容是在类加载完成后存到String Pool中的,在每个VM中只有一份,存放的是字符串常量的引用值(在堆中生成字符串对象实例)。
2:class文件常量池(Class Constant Pool):class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量(文本字符串。Final常量等)和符号引用。
3:运行时常量池(Runtime Constant Pool):运行时常量池是在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池的引用值保持一致。
2. 字符串相等的判断
(1) 比较字符串地址是否相等使用什么运算符?
答:使用“==”。
(2) 使用什么方法比较两个字符串的内容是否相等?
答:equals方法用来检测两个字符串内容是否相等
3. 多维数组
(1) 二维数组的初始化有几种方式分别是什么?
答:静态初始化和动态初始化。
(2) 二维数组的遍历有几种方式?
答:1:普通的for循环。
2:加强for循环。
3:加强for循环与普通for循环。
4. Object数组存储表格数据
(1) 数组都可以存储哪些类型的数据?
答:所有类型的数据。
(2) 请你画出使用对象数组存储数据的内存结构图?
答://创建学生数组(对象数组)。
Student[] students = new Student[5];
//创建5个学生对象并赋值。
Student s1 = new Student(“林青霞”,27);
Student s1 = new Student(“风清扬”,30);
Student s1 = new Student(“周润发”,30);
Student s1 = new Student(“周星驰”,60);
Student s1 = new Student(“赵雅芝”,35);
//把c步骤的元素放到数组中。
Student[0] = s1;
Student[1] = s2;
Student[2] = s3;
Student[3] = s4;
Student[4] = s5;
//遍历
for(int x = 0;x < students.length; x++){
//System.out.println(stutents[x]);
Student s = students[x];
System.out.println(s.getName()+”---”+s.getAge());
}
5. 数组的拷贝
(1) 数组的拷贝分为哪两种类型的拷贝?
答:int 类型拷贝和String类型拷贝
(2) System类中数组拷贝的方法是什么?参数均是什么含义?
答:System arraycopy();
参数含义:(原数组,原数组的开始位置,目标数组,目标数组的开始位置,拷贝的个数)。
6. java.util.Arrays工具类的使用
(1) Arrays工具类在API中的说明是什么?
答:针对数组进行操作的工具类。
(2) Arrays类中的常用方法有哪些?
答:1:public static String toString(int[] a):
可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])
2:public static void sort(int[] a):
对指定的 int 型数组按数字升序进行排序
3:public static int binarySearch(int[] a,int key):
二分搜索法: 在int类型的数组中查找key元素的索引
4:public static <T> List<T> asList(T... a) :
将数组转换成固定大小的集合
注意:如果使用此方法,那么集合的长度不可变
7. 冒泡排序的基础算法
(1) 冒泡排序的原理是什么?
答:算法重复地走访过要排序的数列,一次比较两个元素,如果顺序错误就进行交换,这样越大的元素会经由交换慢慢浮到数列顶端
(2) 冒泡排序的外循环条件是什么?内循环条件是什么?
答:外层循环:n个元素排序,则至多需要n-1趟循环
内层循环:每一趟循环都从数列的前两个元素开始进行比较,比较到无序数组的最后。