内部类:
内部类就是定义在类里面的类。
当一个类的内部,包含一个完整的事物,且这个事物没有必要单独设计时,就把这个事物设计成内部类。
1.成员内部类:
把类定义在类的成员位置。
创建对象的格式:
2.静态内部类:
被static修饰的成员内部类。
创建静态内部类对象
3.局部内部类:
定义在方法中或者代码块中的类
4.匿名内部类:
匿名内部类是一个没有名字的局部内部类。
其本质是一个父类的子类对象,是一个接口的实现类对象。
- 一般不会主动创建匿名内部类
- 当调用已有方法时,发现方法的参数是抽象类或接口类型时,为了简化代码书写而直接传递匿名内部类对象。
一般使用匿名内部类的前提是要有一个接口,或者一个抽象父类。但是实际这个接口或抽象类很少让我们自己定义,更多的时候是API中准备好的。
比如:ArrayList类有一个forEach方法。
常用API:
Object类:
该类是每个类的父类,所有对象(包括数组)都实现这个类的方法。
Object类的equals方法:判断当前对象是否与参数对象“相等”。
如果子类没有重写equals方法,那么比较的是地址值。(String类底层已经重写了equals方法。)
如果子类重写了equals方法,那么比较的是属性值。
StringBuilder类:
StringBuilder代表可变字符串对象,相当于是一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
好处:StringBuilder比String更适合做字符串的修改操作,效率会更高。
构造方法:
1.StringBuilder sb=new StringBuilder();
2.StringBuilder sb=new StringBuilder(String s);
.append(任意类型):添加数据并返回StringBuilder对象本身。
.reverse():将对象的内容反转。
.toString():通过toString()就可以实现把StringBuilder转换为String。
基本类型包装类:
基本数据类型 | 引用数据类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
Integer a=new Integer(10);
Integer a=Integer.valueOf(10);
字符串转其他的基本类型,调用包装类的parseXxx方法。基本数据类型转字符串,可以使用String的valueOf方法。
自动装箱:指的是把基本类型转换为包装类
Integer a=10;等价于 Integer a=Integer.valueOf(10);自动拆箱:指的是把包装类转换为基本数据类型
int b=a;等价于int b=a.intvalue();
BigDecimal类:
double类型的小数参与运算时,会有精度损失。
BigDecimal类可以用于对小数进行精确运算,控制小数的位数。
首先需要包装浮点数为BigDecimal对象。然后调用方法。