常用类
2022/2/10 23:43:01
本文主要是介绍常用类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
常用类
总述
- 内部类
- Object类
- Object类常用方法
- 包装类
- String类
- BigDecimal类
内部类
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类
概念:在一个类的内部再定义一个完整的类
class Outer{//Outer.class文件 class Inner{//Outer$Inner.class文件 } }
特点:
- 编译之后可生成独立的字节码文件
- 内部类可直接访问外部类的私有成员,而不破坏封装
- 可为外部类提供必要的内部功能组件
成员内部类
成员内部类等级和实例变量、实例方法同级别
在类的内部定义,与实例变量、实例方法同级别的类
-
外部类的一个实例部分,创建内部类对象时,必须依赖外部类对象
Outer out =new Outer(); Outer.Inner in =out.new Inner(); //Outer.Inner in=new Outer().new Inner();
-
当外部类、内部类存在重名属性时,会优先访问内部类属性(在同名情况访问外部类属性:Outer.this.name)
-
成员内部类不能定义静态成员
静态内部类
静态内部类等级和外部类相同
- 不依赖外部类对象,可直接创建或通过类名访问,可声明静态成员
- 只能直接访问外部类的静态成员(实例成员需实例化外部类对象)
Outer.Inner inner=new Outer.Inner(); Outer.Inner.show();
局部内部类
- 定义在外部类方法中,作用范围和创建对象范围仅限于当前方法
- 局部内部类访问外部类当前方法中的局部变量时,因无法保证变量的生命周期于自身相同,变量必须修饰为final
- 限制类的使用范围
必须在该方法中创建局部类对象
匿名内部类
- 没有类名的局部内部类(一切特征都与局部内部类相同)
- 必须继承一个父类或者实现一个接口
- 定义类、实现类、创建对象的语法合并,只能创建一个该类的对象
Usb usb=new Usb(){ @Override public void servise() { System.out.println("风扇开始正常工作!"); } };//使用匿名内部类实例化(相当于创建了一个局部内部类) usb.servise();
Object类
- 超类、基类,所有类的直接或间接父类,位于继承树的最顶层
- 任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承
- Object类中所定义的方法,是所有对象都具备的方法
- Object类型可以存储任何对象
-
- 作为参数,可接受任何对象
- 作为返回值,可返回任何对象
- clone()` 创建并返回此对象的副本
- **equals(Object obj)` 指示一些其他对象是否等于此。 **
finalize()
当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。getClass()
返回此Object
的运行时类。hashCode()
返回对象的哈希码值。 (哈希码值可以理解为对象的地址(实际就是10进制地址换成了16进制地址))notify()
唤醒正在等待对象监视器的单个线程。- notifyAll()` 唤醒正在等待对象监视器的所有线程。
toString()
返回对象的字符串表示形式。- wait()` 导致当前线程等待,直到另一个线程调用该对象的 notify()方法或notifyAll()方法
wait(long timeout)
导致当前线程等待,直到另一个线程调用notify()
方法或该对象的notifyAll()
方法,或者指定的时间已过wait(long timeout, int nanos)
导致当前线程等待,直到另一个线程调用该对象的notify()
方法或notifyAll()
方法,或者某些其他线程中断当前线程,或一定量的实时时间。
Object类常用方法
getClass()方法
- public final Class<?> getClass(){}
- 返回引用中存储的实际对象类型(返回的是一个类)
- 应用:通常用于判断两个引用中实际存储对象类型是否一致
hashCode()方法
-
public int hashCode(){}
-
返回该对象的哈希码值
-
哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值
-
一般情况下相同对象返回相同的哈希值
toString()方法
- public String toString(){}
- 返回该对象的字符串表示(表现形式)
- 可以根据程序需求覆盖该方法,如:展示对象各个属性值。
(这里的覆盖指重写,从父类继承来的方法满足不了自己的需求就进行重写)
equals()方法
- public boolean equals(Object obj){}
- 默认实现为(this==obj),比较两个对象地址是否相同
- 可进行覆盖,比较两个对象的内容是否相同
s4.equals(s5);//s4是指this,s5是指obj //在Object 类中没有重写equals()方法,所以比较的是地址
equals()方法覆盖步骤
- 比较两个引用是否指向同一个对象
- 判断obj是否为null
- 判断两个引用指向的实际对象类型是否一致
- 强制类型转换
- 依次比较各个属性值是否相同
finalize()方法
- 当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象,进入回收队列
- 垃圾对象:没有有效引用指向此对象时,为垃圾对象
- 垃圾回收:由GC销毁垃圾对象,释放数据存储空间
- 自动回收机制:JVM内存耗尽,一次性回收所有垃圾对象
- 手动回收机制:使用System.gc();通知JVM执行垃圾回收
包装类
包装类:基本数据类型所对应的引用数据类型
Object可统一所有数据,包装类的默认值是null
这篇关于常用类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南
- 2024-09-26Springboot微服务资料入门教程