面向对象进阶(三)

一、内部类

1.1成员内部类

概念:就是类中一个普通的成员,类似于普通成员变量、方法

使用:外部类.内部类 变量名 = new 外部类().new 内部类()

特点:可以访问外部类的实例成员、静态成员;拿到外部类的对象:外部类.this.对象名

Demo

 

1.2静态内部类

 

1.3局部内部类

 

1.4匿名内部类[重点]

格式:new  类或接口(参数值…) {
       类体(一般是方法重写);
};

就是一种特殊的局部内部类;所谓匿名:指的是程序员不需要为这个类声明名字。

特点:匿名内部类的本质就是一个对象,并且会直接创建一个子类对象。

作用:更方便的创建一个对象。

使用场景:匿名内部类通常作为一个参数传输给方法。

Demo

二、枚举

概述:是一种特殊类

格式:修饰符 enum 枚举类名 {}

特点:{}里的第一行只能用来定义变量(其实就是常量),定义多少个就有多少个。构造器私有,不能对外创建对象;枚举是最终类,不能被继承

Demo

 

三、泛型

定义类、接口、方法时,同时声明了一个或者多个类型变量(如:<E>) ,称为泛型类、泛型接口,泛型方法、它们统称为泛型。

本质:把具体的数据类型作为参数传给类型变量

好处:多个类可以变成一个类,相当一个类去实现它类本身的功能,我们就要创建相应的类去实现,但是如果定义一个类,就可以根据传输<E>的类型进行操作,一个泛型类就可以处理多个类的功能

Demo

 

自定义泛型类

泛型接口

 泛型方法

注意事项:

泛型是工作在编译阶段的,一旦程序编译成class文件,class文件中就不存在泛型了,这就是泛型擦除。

泛型不支持基本数据类型,只能支持对象类型(引用数据类型)。只能使用它们的包装类去定义

四、ava.lang 包下的常用API

API概述

API(Application Programming interface)  :应用程序编程接口

就是Java帮我们已经写好一些程序,如:类、方法等,我们直接拿过来用就可以解决一些问题。

4.1 Object类

Object类是Java中所有类的祖宗类,因此,Java中所有类的对象都可以直接使用Object类中提供的一些方法。

1.Object中toString方法的作用是什么?存在的意义是什么?

基本作用:返回对象的字符串形式。

存在的意义:让子类重写,以便返回子类对象的内容。

Demo

Object中equals方法的作用是什么?存在的意义是什么?

基本作用:默认是比较两个对象的地址是否相等。

存在的意义:让子类重写,以便用于比较对象的内容是否相同。

Demo

4.2 Objects

Objects是一个工具类,提供了很多操作对象的静态方法给我们使用。

4.3包装类

包装类就是把基本类型的数据包装成对象。

为了万物皆对象,并且泛型和集合都不支持基本类型,支持包装类

8种,int -> Integer ,   char -> Character,其他的都是首字母大写

自动装箱:基本数据类型可以自动转换为包装类型。

自动拆箱:包装类型可以自动转换为基本数据类型。

Demo

 

作用:

把包装类数据类型转化为字符串类型:ToString()方法

可以把字符串类型的数值转换成真实的数据类型。public static int parseInt(String s)

4.4 StringBuilder、StringBuffer

对于字符串相关的操作,如频繁的拼接、修改等,建议用StringBuidler,效率更高!

注意:如果操作字符串较少,或者不需要操作,以及定义字符串变量,还是建议用String。

这里我们就比较三String、StringBuilder、StringBuffer 的拼接

 

 

但 StringBuilder是线程不安全的  StringBuffer是线程安全的

总结:

String 是不可变字符串、频繁操作字符串会产生很多无用对象,性能差。

StringBuilder:是内容可变的字符串、拼接字符串性能好、代码优雅。

注意:如果操作字符串较少,或者不需要操作,以及定义字符串时,则用String。

4.5 StringJoiner

相对于stringBuider的效率较低,在jdk8之后的StringJoiner不仅能提高字符串的操作效率,并且在有些场景下使用它操作字符串,代码会更简洁

Demo

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值