java空字符_Java学习之路008天
第15次(面向对象深化)
学习主题:面向对象初步
学习目标:
1. 掌握抽象类和抽象方法
2. 掌握接口
3. 掌握内部类
4. 掌握String类的常用方法
对应视频:
http://www.itbaizhan.cn/course/id/1121.html
对应文档:
无
对应作业:
1. 抽象类和抽象方法
(1) 简述抽象方法的特征
1、 抽象方法不可以有方法体,只能以“;”结束
2、 抽象方法必须被子类实现
3、 抽象类可以有0个或多个抽象方法
4、 抽象方法只能声明在抽象类中
5、 如果子类不能实现父类的抽象方法,那么子类必须是抽象方法
(2) 什么情况下使用抽象方法?
通过抽象类,可以避免子类设计的随意性。通过抽象类,我们可以做到严格限制子类的设计,是子类之间更加通用。(程序的可扩展性和可维护性)
对于创建的类比较抽象,可以创建一个抽象方法,以便限制子类设计的随机性。
(3)抽象类特征(被abstract修饰的类)
1、抽象类不可以创建对象
2、抽象类可以有构造方法(提供给子类调用)
3、抽象类中可以包含成员变量(也称实例变量或属性),成员方法(也称实例方法),静态方法,被final修饰的方法(只能被子类调用,不可以被子类重写),抽象方法(只能声明在抽象类中)
4、抽象类可以有0个或多个抽象方法
2. 接口的详解(如果一个类中所有方法都是抽象方法,那这个类可以声明为接口)
(1) 接口中可以包含哪些内容?
1、 抽象方法(jdk1.7 public abstract可以不写)
2、 非抽象方法(jdk1.8,必须使用default关键字 如:public default void method(){})
3、 可以包含属性(必须是public static final修饰的常量:public static final String=“张三”; public static final可以不写)
(2) 接口和类的关系?
1、类去实现接口中的方法,实现关系,implement(类需实现接口中的所有抽象方法)
(3)如果父类与接口中有完全一样的方法,子类/实现类所实现的方法是父类的?实现类的?
父类优先于接口,子类实现的是父类的方法
(4)如果父类中于接口中有同名方法,对子类/实现类有什么要求?
父类与接口中的方法,在子类/实现类中构成方法的重载
注意:接口中不允许定义构造方法,接口是一种引用数据类型
3. 使用接口的意义(接口体现的是一中能力)
(1) 接口有哪些特征?
1、 传递性(interface B extends interface A,interface C extends interface B)
2、 继承性(多继承)
(2) 使用接口实现多态的步骤?
1、 编写接口
2、 编写实现类来实现接口的方法
3、 创建对象(接口(类型)new 实现类对象)
4. 内部类详解
(1) 内部类有哪些特点?
1、 内部类作为外部类的成员,可以直接访问外部类的成员(包括private成员),反之则不行
2、 内部类作为外部类的成员,课声明为private,default,protected,public
3、 内部类成员只有在内部类范围之内是有效的
4、 用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限
(2) 内部类可以分哪几类?
1、 成员内部类(内部类相当于外部类的成员,四种访问控制符)
2、 静态内部类(不允许访问外部类的非static属性;如果内部类中方法为static方法,那么内部类也必须为静态的)
3、 方法中的内部类(相当于方法中的局部变量,使用范围只能在show方法中)
4、 匿名内部类(前提:存在继承或实现关系 )
A:可以实现一个接口,或者继承一个父类;
B:只能实现一个接口;
C:适合创建那种只需一次使用的类,不能重复使用。比较常见的是在图形界面编程GUI里用得到
Jdk1.8新特性:
1、 jdk1.8之前方法中的内部类要访问外部类的局部变量,局部变量必须加上final关键字(即只能访问常量)
2、 jdk1.8开始,在访问外部类的局部变量时,则可以不加final关键字
5. String类常用方法_API文档阅读
(1) String类位于哪个包中,在API中String在的定义是什么?
位于Java.lang包中 不可变的字符序列
(2) 请你列举出String类的五个常用方法?
1、 char charAt(int index)返回字符串中低index个字符,index从0开始
2、 boolean equalsIgnoreCase(String other)如果字符串与other相等(忽略大小写),则返回true
3、 int indexOf(String str)(找到返回索引,找不到返回-1) lastIndexOf()查找指定字符在字符串中的位置(反向搜索)
4、 int length()返回字符串长度
5、 String replace(char oldChar,char newChar)返回一个新串
第16次(面向对象深化)
学习主题:面向对象初步
学习目标:
1 掌握常量池
2 掌握多维数组
3 掌握Object如何存储表格数据
4 掌握数组的拷贝
5 掌握java.util.Arrays工具的使用
6 掌握冒泡排序算法
对应视频:
http://www.itbaizhan.cn/course/id/1121.html
对应文档:
无
对应作业
1. String类和常量池
(1) 请你列举出String类的常用构造方法?
1、String()
初始化新创建的 String对象,它代表了一个空字符序列。
2、String(byte[] bytes)
通过使用平台的默认字符集解码指定的字节数组构造了一个新的 String。
3、String(char[] value)
分配一个新的 String,它代表了目前包含在字符数组参数字符序列。
(2) 请你简述一下常量池?
用于存储在编译期确定,被保存在已编译的字节码文件中的一些数据,包括final修饰变量即字符串变量,和符号引用量
2. 字符串相等的判断
(1) 比较字符串地址是否相等使用什么运算符?
“==”
(2) 使用什么方法比较两个字符串的内容是否相等?
equals()方法
3. 多维数组
(1) 二维数组的初始化有几种方式分别是什么?(二维数组就是存储一维数组的数组,存储的是一维数组的内存地址/引用)
1、 int intA[][]={{1,2},{3,4,5},{3,4,5,6}}(//二维数组不是规则的矩阵)
2、 int [][]intB=new int[3][];(//声明一个二维数组,用于存储3个一维数组,每一个一维数组存储多少个数据,不知道,二维数组初值为null)
intB[0]=new int[2];
intB[1]={1,2,3,4};
intB[2]=new int[5];
3、int intA[][]=new int[3][5];(//)
(2) 二维数组的遍历有几种方式?
1、 普通for循环
2、 加强for循环
3、 普通for循环 + 加强for循环
4. Object数组存储表格数据
(1) 数组都可以存储哪些类型的数据?
1、 基本数据类型
2、 引用数据类型
(2) 请你画出使用对象数组存储数据的内存结构图?
5. 数组的拷贝
(1) 数组的拷贝分为哪两种类型的拷贝?
1、 地址拷贝
int []array={1,2,3,4};
int []arrayB=new int [5];
arrayB=array;
2、 值的拷贝
int []array={1,2,3,4};
int []arrayB=new int[5];
arrayB[0]=array[0]
(2) System类中数组拷贝的方法是什么?参数均是什么含义?
arrayCopy() arraycopy(源数组,开始拷贝位置,目标数组,开始拷贝位置,拷贝几个元素)
6. java.util.Arrays工具类的使用
(1) Arrays工具类在API中的说明是什么?
这个类包含用于操作数组(如排序和搜索)的各种方法。此类还包含一个允许数组被视为列表的静态工厂
(2) Arrays类中的常用方法有哪些?
1、 toString()打印数组
2、 equals()比较两个数组是否相同
3、 copyOf()复制指定的数组
4、 fill()填充
5、 sort()数组排序,对象数组的排序
7. 冒泡排序的基础算法
(1) 冒泡排序的原理是什么?
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
(2) 冒泡排序的外循环条件是什么?内循环条件是什么?
外循环:比较的次数,即数组长度减一 内循环:比较相邻两数的大小,小的放前面,大的放后面