Java API String、Date、Exception ⑧

it2022-05-05  136

文章目录

equals() 、== 、hashCode()判断是否重写了equals()、toString() String串的可变与不可变StringBuilder 、StringBuffer、 String 基本数据类型对应的封装自动拆箱自动封箱 数学类(Math)日期类(Date)Calendar (Date的升级版本)异常类案例:

equals() 、== 、hashCode()

==: java中预留的关键字,用来比较两个对象所存储数据的地址是否相等. equals(): java中所有的类都继承自Object超类,如果没有重写equals()方法的前提下,equals()和==的作用是等价的;如果类中重写了equals(), (String为例, '= = '就是比较地址,equals就是比较值.) hashCode(): 与内存地址有关系 输出对象时,调用原始的toString()方法 @后面的值为hashCode码. Notice: 两个对象的hashCode相同,equals()不一定相同; 两个对象的equals()相同,则hashCode()一定相同. equals()方法重写了.一般就会重写hashCode().

判断是否重写了equals()、toString()

API文档中,常用方法中如果能查到这些方法,则说明是重写了。

String串的可变与不可变

StringBuilder 、StringBuffer、 String

String 作为一种引用的数据类型,是不可变的,也叫做只读字符串。

String类中提供了许多常用的方法: 1. charAt(int index) 返回指定索引处的char值 2. 2.1 indexOf(char c) 根据字符返回第一次在串中出现的位置 2.2 indexOf(String s) 根据字符串返回第一次在串中出现的位置,范围的int 为串的第一个char的索引 2.3 indexOf(char c, int fromIndex) 从某个位置开始索引 2. a.compareTo( b ) 返回值是int,当a ,b 长度不等时,就是前者-后者的串长度值;当串长度相等时,单个字符的ascll比较,如果为0,向后顺移;否则输出差值,当串相等时,返回的结果应该为0. 3. lenth( ) 注意空串和空白串 4. subString(begin,[end]) 截取子串. 取值范围的区间是 **左闭右开** 5. StringValue( ) 将 String类型转换为其他类型. 相反的是toString( )方法. 6. trim( ) 取出前后空格 使用场景::注册/登录 7. 字符串转换为数组 7.1 toCharArray( ) char[] array= str.toCharArray(); System.out.println(array); //char数组可以通过数组名直接输出,而不用遍历. 7.2 split( ) 7.3 charAt(int index) 数组转换为字符串: String st=String.copyValueOf(char arr[]) String st=new String(char arr[])

StringBuilder 线程不安全的,运行效率高; StringBuffer 线程安全的,运行效率低. 与String不同的就是,操作的是同一块内存地址.所以实现了内容可变. 运行效率: StringBuilder > StringBuffer >String

基本数据类型对应的封装

byte: short long float double boolen ---->首字母大写。 int —> Integer char —> Character

自动拆箱

引用类型—>基本数据类型

实现原理 以 int 类型返回该 Integer 的值。 i2.intValue();

当引用类型与基本数据类型进行运算操作时,.会自动拆箱.

自动封箱

把基本数据类型–>引用类型

Integer i= new Integer(25); Integer i=25; Integer i=1; // 实现原理 Integer.valueOf(i);

Integer 重写了equals( ) 就是比较的值得大小,而==是比较地址. 当Integer类型后面赋值范围在-128—127之间时,都会返回true,否则返回false。

数学类(Math)

ceil( param ) 大于等于参数的最小整数值 floor(param) 小于等于参数的最大整数 random ():产生随机数, 范围是[0,1) 随机数封装成了一个Random类,

日期类(Date)

toString 打印对象默认调用toString.

Calendar (Date的升级版本)

获取当前日期的方法不是构造方法,而是通过静态方法 getInstance().

异常类

一种可以通过某些类解决的错误。

系统提供的异常类都会有Exception后缀。

exception,error 都是 Throwable 的子类。 分类 编译时异常: 1. 一般实在调用方法的时候会产生,其实是方法本身就有异常。 2. FileNotFoundException、IOException… 运行时异常: 代码不严谨造成。 1. 空指针异常,对象没有初始化 2. 数组越界, 3. 逻辑算数异常。 除数为0 处理异常:

try-catch try:存放可能会出现异常的代码,一旦出现异常,直接跳到catch块,try块后面的代码不再执行。 catch([参数列表]):异常类型指定,是try块的异常类型。 打印的是堆栈信息。

try或者catch 中都可以嵌套 try-catch

try -->try —> catch 错误

try—>catch —>catch 正确 ,因为一个try块中可能由多个不同类型的异常 但是需要注意以下参数的顺序, Exception的子类应该在Exception的上面Catch. 否则会报不得到达的编译错误.

try–>catch–>finally 中 finally中的语句是不管有没有发生异常,都会进入Finally块.

案例:

输出结果是: 首先看函数的返回值类型int ,只有return int 时 才会对结果有影响,return i++; 先用i,再++,所以值为1.此时将return 挂起,执行finally; 最后一同将结果返回给函数. 2. throws 不管了。往上抛,谁调用就谁处理。抛到Main以外是JVM。 而JVM处理异常就是打印一堆红色错误日志。 方法重写: 子类的异常 <= 父类的异常. 这里指的是编译时异常,而不是运行时异常.; 所有的运行时异常都是 RuntimeEception 的子类 自定义异常:

throws 放到放大声明上 后面是类名 throw 在方法体中, 后面是对象


最新回复(0)