当前位置:网站首页>三大特殊类(String Object 包装类)与异常
三大特殊类(String Object 包装类)与异常
2022-08-02 14:15:00 【零雨z】
三大特殊类∶特殊处理优化的三个类
String:不可变性(内部存储数据的value数组对外不可见,外部无法直接使用,无法修改内容),字符串字面量直接赋值常量池,final修饰的类,常用方法(substring[start,end)、length()、equals、contains、spilt()、trim() ..)
Object类:Object类是所有类的默认父类(不需要使用extends显示继承),因此Object类的所有方法(private除外),所有类的对象都能使用。想要使用其达成不同的目标,可以使用方法复写
例:toString():将任意对象转为字符串输出,打印对象内容,System.out.,println()接收任意对象并输出,默认调用的就是toString。如果此时想改变输出的格式,就要复写toString方法。
想要比较两个不同的对象是否相等,需要复写equals方法。
除了复写以外,Object默认是所有类的父亲,所有对象都可以通过Object来接收。
Java中对Object做了扩充,Object不仅是所有类的父类,只要是引用数据类型,都可以向上转型变为Object包括数组和接口。Object类型可以接收所有引用数据类型。
Object是引用数据类型的最高参数统一化
如果你设计的方法需要接收所有引用类型,类型就声明为Object
包装类:Object类可以接收所有引用类型,基本类型不得行了,为了让Object接收Java中一切内容,把基本类型封装为类,一切皆对象。
JDK内置的包装类
对象型包装类(Object类的直接子类): Boolean(boolean)、Character(char)
数值型包装类(Number类的直接子类):Byte Short Integer(int) Long Float Double
包装类可以看成装拆箱子的过程
装箱:将基本类型变为包装类对象
拆箱:将包装类对象中的数值还原为基本类型
在进行数学运算的时候,JDK自动进行拆装箱,我们使用包装类和基本类型的用法基本一致,细节上基本类型的默认值是数值,包装类的默认值是NULL
关于类的对象的比较用equals!!
对于包装类而言(以int为例),自动装箱时,JVM会创建一个缓存处理对于[-128,127]的取值,Integer会缓存对象(String常量池)
Integer i1 = 10;1/第一次出现,创建对象进入常量池Integer i2 = 10;/第二次出现,复用上面对象
包装类的"=="比较的是两个包装类对象的地址是否相等! !!,要比值,请使用equlas
包装类和String的相互转换!!
包装类-> String:使用String.valueOf
String ->包装类∶使用包装类的parse***();
异常
首先明确一下 编译出错不属于这里的异常,这里的异常指空指针,下标越界等等。
关于异常,就简单的说下try{} catch(){} [finally]{}
PS: try catch处理异常时,可以用多个catch捕获不同的异常,也可以使用Exception来捕获异常,这个是异常的父类,可以捕获所有异常类型,但是这样也不方便排查问题。
一旦finally中带了返回值,相当于try和catch的返回值就失效了,无论是否有异常产生,finally一定会执行,因此会覆盖try和catch的返回值。
在finally中不推荐写返回值,除非返回值和异常无关,默认返回值就可放在finally中
JDK7新增的自动关闭接口
一旦一个类实现了AutoCloseable接口,就表示该类具备了自动关闭的能力–声明在try代码块中会自动调用close方法。
异常是有调用链的 所以注意你的异常第一行,往往是你开始出错的地方,这些错误会一步一步的向上传递,直到传递给JVM,程序终止。
然后提一下throw 属于是人为的手动操作异常
异常体系结构
其中Error指的是Java运行时内部错误和资源耗尽错误.应用程序不抛出此类异常.这种内部错误一旦出现,除了告知用户并使程序终止之外,再无能无力.这种情况很少出现.
Exception是我们所使用的异常类的父类.
Error:指的是程序的内部错误,这种错误我们程序员无法捕获处理,一旦发生Error错误,程序只能告知用户出现错误,程序直接退出。
StackOverflowError:栈溢出Error-一般发生在递归调用链太深,递归没有出口
OutOfMemoryError :堆溢出Error
Java的异常体系分为两大类
非受查异常︰下图中蓝色方框以及其子类都属于非受查异常。所有的非受查异常不强制程序使用try catch块处理。
Error以及RuntimeException(运行时异常,空指针,类型转换,数组越界)及其子类都是非受查异常
受查异常:左图中红色方框以及其子类都属于受查异常
除了非受查异常外都是受查异常,必须显示使用try.. catch。。异常处理,或者throws抛出。
除了Error和RuntimeExcpetion以及其子类的其他异常都是受查异常,必须显示处理。
自定义异常类:
程序开发中,一定会有一些错误是和具体的业务相关的,这种错误JDK是不可能提供相应的异常类,此时我们就需要继承已有的异常类,产生自定义的异常类
若需要用户强制进行异常处理,继承Exception父类–受查异常
若不需要用户显示处理异常,继承RuntimeException父类-非受查异常
边栏推荐
猜你喜欢
随机推荐
5款最好用的免费3D建模软件(附下载链接)
转行软件测试,从零收入到月薪过万,人生迎来新转折
Xrdp 体验优化
【软件测试】自动化测试selenium3
分布式一致性协议-Raft
tcp transparent proxy (IP_TRANSPARENT)
Oauth2.0 authentication server adds verification code login method
代码细节带来的极致体验,ShardingSphere 5.1.0 性能提升密钥
Oauth2.0 security (take WeChat authorized login as an example)
极简式 Unity 获取 bilibili 直播弹幕、SC、上舰、礼物等 插件
光波导应用中的真实光栅效应
Apache ShardingSphere 5.1.1 正式发布
固态硬盘到底要不要分区
学习笔记(01):activiti6.0从入门到精通-工作流的介绍以及插件的安装
Evaluate multipath BBR congestion control on ns3
Feign Client 超时时间配置不生效
关于分布式的一些知识点
Debug on pure method is called
HCIE学习记录——数据封装与常用协议(TCP/UDP)
Unity-3D数学