Java API String、Date、Exception ⑧

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().

异常类

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

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

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

    1. 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 在方法体中, 后面是对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值