JavaSE基础(day12)(1)内部类(2)Object类(3)包装类和常用数学处理类(4)String类

默写:
1.编程题
自定义Account类,属性有:账户余额,要求实现该类的封装,并提供计算利息的抽象方法,再自定义FixedAccount类继承Account类,重写计算利息的方法即可。

2.编程题
自定义Money接口,提供买东西的行为。
自定义Metal接口,提供发光的行为。
自定义Gold类实现上述接口,并重写方法。

今天内容:
(1)内部类
(2)Object类
(3)包装类和常用数学处理类
(4)String类

1.内部类(了解)
1.1 基本概念
当一个类的定义放在另外一个类的类体中时,该类叫做内部类,该类所在的类叫外部类
在类体中可以出现的内容:成员变量、成员方法、构造方法、静态方法、构造块、
静态语句块、内部类。

1.2 语法格式

  class 类名{
     class 类名{
        内部类的类体;
     }
  }

1.3 基本作用
当一个类的存在价值仅仅是为某一个类单独服务时,可以将该类写成所服务类的内部类,这样做的好处在于可以直接访问外部类的私有成员而不再需要公有的get/set方法。

1.4 内部类的主要分类
普通内部类 - 直接将一个类的定义写在另外一个类的内部(了解)。
静态内部类 - 使用static关键字修饰的内部类(了解)
- 只有内部类才可以使用static关键字修饰,普通类不可以。
局部内部类 - 直接将一个类的定义写在另外一个类的方法体中(了解)。
- 局部内部类的声明周期和作用域都是方法体中。
匿名内部类 - 没有名字的内部类,通常用于构造接口/父类类型的对象(重点)。

1.5 匿名内部类(重点)
(1)语法格式

   父类类型/接口类型 引用变量名 = new 父类类型/接口类型(){ 方法的重写 }

(2)经验分享
当使用接口类型的引用作为方法的形参时,实参的传递方式有两种:
a.自定义类实现接口并重写方法,此时实参传递该自定义类的对象即可。
b.直接new接口对象并通过匿名内部类实现。

2.Object类
2.1 常用的包
java.lang包 - 该包是java中的核心包,该包中的所有类由java虚拟机自动导入。
- 如:String类、System类等
java.util包 - 该包是java中的工具包,该包中提供了大量的工具类和集合类等。
如:Scanner类、Random类等
java.io包 - 该包是java中的IO包,该包中提供了有关输入输出的类信息等。
如:FileInputStream类、FileOutputStream类等。
java.net包 - 该包是java中的网络包,该包中提供了有关网络编程的类信息。
如:ServerSocket类、Socket类等。
… …

2.2 Object类(重点)
(1)基本概念
java.lang.Object类是所有类层次结构中的根类。

(2)常用的方法
Object() - 采用无参的构造方法可以来构造对象,通常用于子类super()方式调用。
boolean equals(Object obj) - 用于判断调用对象和参数对象是否相等。
- 具有自反性、传递性、对称性、一致性、非空性。
- 该方法默认比较两个对象的地址,与==的效果是一致的。
- 若希望该方法比较两个对象的内容时,则可以采用方法重写的策略。
- 若重写了该方法则需要重写hashCode()方法。
int hashCode() - 用于返回调用对象的哈希码值(内存地址的编号,对应一块内存)。
- 若该对象调用equals()方法比较信息没有修改,则该方法返回的数值保持一致
- 若两个对象调用equals()方法相等,则各自调用该方法的数值必须相同。
- 若两个对象调用equals()方法不相等,则各自调用该方法的数值可以相同,
但最好不同。
String toString() - 用于返回对象的字符串表示形式。
- 该方法默认返回:包名.类名@哈希码的十六进制表示形式。
- 若希望该方法去返回其他内容时,就需要重写该方法。
- 当使用println()打印/+连接字符串时都会自动调用toString()。

3.包装类和常用数学处理类
如:

   Person p = new Person();
   int num = 10;

java语言是一门纯面向对象的编程语言。

3.1 包装类的概念
在某些场合(集合)中要求所有的数据内容都是对象,但java中8种基本数据类型定义的变量并不是对象,为了满足该场合的需求就需要对变量进行对象化处理,此时借助包装类

3.2 常用的包装类
int => 采用java.lang.Integer类包装(重点)
double => java.lang.Double类
byte => java.lang.Byte类
short => java.lang.Short类
long => java.lang.Long类
float => java.lang.Float类
boolean=> java.lang.Boolean类
char => java.lang.Character类

3.3 Integer类(重点)
(1)基本概念
java.lang.Integer类被final关键字修饰表示该类不能被继承。
该类的内部包装了一个int类型的变量作为该类的成员变量,实现了int类型的包装。

(2)常用的方法
Integer(int value) - 根据参数指定的整数值来构造对象。
Integer(String s) - 根据参数指定的字符串来构造对象。

int intValue() - 用于返回该对象中的整数值。
static int parseInt(String s) - 用于将参数指定的字符串转换为整数并返回。
static String toBinaryString(int i)
- 用于将参数指定的整数拆分字符串形式的二进制并返回。
static String toHexString(int i)
- 用于将参数指定的整数拆分为字符串形式的十六进制并返回。
static Integer valueOf(String s) - 用于将参数指定的字符串转换为Integer对象

补充:
目前要求掌握的异常:
算数异常、数组下标越界异常、空指针异常、类型转换异常、数字格式异常

视频
javaseday12-作业讲解和内部类的使用-01
https://v.qq.com/txp/iframe/player.html?vid=k079700hwty
javaseday12-匿名内部类和常用的包-02
https://v.qq.com/txp/iframe/player.html?vid=l0798qz8l8t
javaseday12-Object类中的常用方法-03
https://v.qq.com/txp/iframe/player.html?vid=j0798lwlr1q
javaseday12-Object类中的常用方法-04
https://v.qq.com/txp/iframe/player.html?vid=r0798f8dg13
javaseday12-常用的包装类-05
https://v.qq.com/txp/iframe/player.html?vid=f0798geqboo
代码
https://pan.baidu.com/s/1pe_w6RbgiEQy3xoYLzuUsw

作业:
1.查询和练习Integer类型的常用方法。
2.自定义Person类实现封装,属性有:姓名和年龄,要求采用姓名作为标准来重写equals()方法、hashCode()方法以及toString()方法。
3.在自定义类中自定义成员方法实现字符串向整数的转换,要求使用String类中的
char()方法以及ASCII码来实现。

你可能感兴趣的:(JavaSE基础,javaSE)