三大特殊类∶特殊处理优化的三个类

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父类-非受查异常

三大特殊类(String Object 包装类)与异常相关推荐

  1. 【Java5】String类,StringBuilder类,ArrayList类,Object类(toString,equals,hashCode)

    文章目录 1.String类:字符串常量在Java中不属于基本数据类型, 而是引用/类类型 1.1 使用:new String(...) 1.2 判断:equals函数是用来比较两个对象是否相等 1. ...

  2. wrapper包装java_java Object 类 与 Wrapper包装类

    Object类 java.lang.Object类1. Object 类是所有java类的根父类2. 如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object ...

  3. java常用类(Object、String、Math、Date)

    文章目录 java常用类(Object.String.Math.Date) 一.object类及其方法 1. getClass()方法 2. hashCode()方法 3. toString方法 4. ...

  4. Map<String,Object>接收参数,Long类型降级为Integer,报类型转换异常

    前言 今天看群里小伙伴问了一个非常有意思的问题: 使用 Map<String,Object> 对象接收前端传递的参数,在后端取参时,因为接口文档中明确该字段类型为 Long ,所以对接收的 ...

  5. JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能

    JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...

  6. JAVA基础(12.Java中的常用类String)

    目录 1.前言 2.日期(时间)相关类 2.1 日期类的应用场景 2.1.1Java中的日期相关的几个类 3. Java中的常用类学习方式 3.1 什么是常用类?为什么要学习? 3.2 怎么使用Jav ...

  7. List接口的三大实现类比较

    文章目录 前言 一.ArrayList介绍: ArrayList源码分析: 继承关系: 属性: 构造器: 无参构造器 带参构造器 带参构造器二: 扩容机制: 常用方法: boolean add(E e ...

  8. Java常用类(1)--字符串相关类String、StringBuffer、StringBuilder全面知识

    文章目录 String类 StringBuffer类 StringBuilder类 String:不可变的字符序列:底层使用char[]存储 StringBuffer:可变的字符序列:线程安全的,效率 ...

  9. Class类和Object类及用法(一)

    Java中Class类及用法 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识,即所谓的RTTI. 这项信息纪录了每个对象所属的类.虚拟机通常使用运行时类型信息选准正确 ...

  10. 夯实Java基础系列9:深入理解Class类和Object类

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

最新文章

  1. Anchor-free目标检测 | 工业应用更友好的新网络(附大量相关论文下载)
  2. python数据分析视频网盘-微专业Python数据分析实战
  3. 多次执行echarts时出现 there is a chart instance already initialized on the dom
  4. 机器学习导论(张志华):EM收敛性原理
  5. 雷林鹏分享:jQuery EasyUI 数据网格 - 条件设置行背景颜色
  6. C语言实现升序优先队列Ascending priority queue(附完整源码)
  7. rbac模型的特点和优势_权限体系设计:融合了组织和岗位的权限模型长啥样?...
  8. RH Linux 企业5+apache+mysql+php+phpmyadmin的简单配置.
  9. 如何判断各个IE浏览器版本
  10. 有谁还遇到同样的问题?
  11. Mac最好用的SSH工具———SecureCRT使用以及下载
  12. 深度学习一(PyTorch物体检测实战)
  13. 骇客基础_骇客基础知识:第3部分
  14. 国内手机市场寒风持续,华为与OV竞争将更激烈
  15. php sphinx配置,sphinx的配置和管理
  16. 更进一步的提高 SSL 的安全性,支持 Forward Secrecy
  17. pycharm 更换 pip 下载源
  18. 苹果将迎来2018年第四次新品发布季节,时间定为10月30日
  19. python使用matplotlib库构建动态图表 --基于animation模块
  20. 201871010104-陈园园 《面向对象程序设计(java)》第二周学习总结

热门文章

  1. memcmp的性能分析
  2. 根据两点经纬度计算方位角
  3. 智能时尚:人工智能在时尚服装行业的应用综述 | 580+参考文献
  4. TexturePacker纹理打包打方法及技巧
  5. 双稳态(bistable)与单稳态
  6. 搭建一个misskey实例
  7. mysql idb 恢复_mysql靠idb文件恢复数据
  8. 2017年上半年软件工程师考试--程序员(上午)考点总结二
  9. docker onlyoffice7.1.1 word excel ppt在线编辑、在线预览_部署01
  10. 虚无世界java路_[AoA3]虚无世界3 (Advent of Ascension 3)