java异常、自定义异常、 常用类、枚举类、

异常:

程序生病了

Throwable

Error Exception
| |
Uncheck
Exception

Error:错误:一般是由虚拟机生成并脱出的,程序员无法解决
Exception: 异常
CheckException 检查时异常|编译时异常: 编译时期就会出现的异常
如果出现了编译时异常不处理,程序无法运行
RuntimeException 运行时异常 : 运行时期会出现的异常
所有的运行时异常都会直接或者间接的继承自RuntimeException,可通过增强程序的健壮性处理 if判断

常见的运行时异常:
1.空指针异常 NullPointerException
2.数组长度负数异常 NegativeArraySizeException

throw  制造异常

异常处理方式 *****
throws 异常抛出
try…catch 异常捕获
try{
可会出现异常的代码…
}catch(NullPointerException e){
如果出现这个异常,需要执行的代码
}catch(FileNotFoundException e){

}catch(Exception e){

}

finally{
无论是否出现异常,都会执行的代码
}

try中一旦出现异常,不会继续向下执行,会执行对应的catch中的内容
一个try中可以跟1~多个 catch,小范围catch放在放在上面,大范围的catch放下面

运行时异常可以使用增强程序的健壮性或者异常处理方式的两种,抛出或者捕获处理
编译时异常必须使用异常处理方式的两种,抛出或者捕获处理

自定义异常:(理解)

现在使用的都是java提供的异常类,可以自定义异常类
自定义的异常类必须直接或者间接的继承自Exception类

//自定义异常
public class Test112 {
   public static void main(String[] args)  {
	Person ac=new Person();
	//我们这里用try catch..,来处理异常
	try {
		//看看这个语句是否有异常,有的话执行catch里面的语句
		ac.setAge(130);
		
	} catch ( AgeException  e) {
		//捕捉异常,并且打印出来
		e.printStackTrace();
	}finally {
		System.out.println(ac.getAge());
	}
	ac.age1();
}
}
//这里我们创建一个异常年龄
class AgeException extends Exception{
	public AgeException(){
		
	}
	public AgeException(int age){
		super(age+"年龄不合法");
	}
}
//这里我们定义一个人的类
class Person{
	//定义私有的成员变量
	private String name;
	private int age;
	
	public Person(){
		//空构造
	}
	//带参构造
	public Person(int age){
		super();
		this.age=age;
	}
	//这里我们定义一个公用的给年龄赋值的方法,判断是否满足要求,不满足就抛出异常
	public  void  setAge(int age) throws AgeException{
		//当年龄小于0,或大于120岁时就会抛出我们创建的异常
		if (age>0&&age<120) {
			
			this.age=age;
		}else {
			throw  new AgeException(age);
		}
		
	}
	//这里是一个接收setAge的值的方法
	public int getAge(){
		
		return age;
	}
	//定义一个方法打印合法年龄
	public void age1(){
		System.out.println(age);
	}
	

}

常用类: 常用的类

字符串 String : 不可变长的字符序列 ,Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。

String : 不可变长的字符序列
StringBuilder : 可变长的字符序列 ,线程不安全,效率高
StringBuffer : 可变长的字符序列 , 线程安全的,效率较低
是字符数组形式存储的

关注的顺序:
1.类的作用|本身的特点
2.构造器–>创建对象
3.成员方法|静态方法

StringBuilder StringBuffer String区别
StringBuilder:单线程环境下大量操作字符串,效率较高
StringBuffer : 多线程环境系大量操作字符串,线程安全,同步
String : 表示少量操作字符串 ,简单,功能较多
可以相互转换

枚举类

使用enum关键字定义枚举
表示一种事物的多种可能|所有可能|所有情况
注意:
所有的枚举类都隐式继承自java.lang.Enum类
枚举中的所有成员|实例|字段 都是,默认public static final,都是当前类型的一个实例

包装类型: 基本数据类型的包装类
基本数据类型 包装类
byte — Byte
short — Short
int — Integer
long — Long
float — Float
double— Double
char — Character
boolean — Boolean

转换:
自动装箱: 基本—>包装
自动拆箱: 包装—>基本

//自动装箱
//自动拆箱
//基本数据类型
public class Packing {
	public static void main(String[] args) {
		  double a=200.0;
		    Double b=200.0;
		    Double c=200.0;
		    //发生了自动拆箱
		    System.out.println(c==b);
		    int a1=129;
		    Integer a2=129;
		    //自动拆箱
		    System.out.println(a1==a2);    
	}
    
}

总结:
1.如果两个new Integer比较是否相等,肯定不相等,堆中的两个地址
2.如果一个Integer,一个new Integer肯定不相等,一个常量池,一个堆中的地址,肯定不相等
3.如果int与Integer|new Integer 都会发生自动拆箱,值相等就相等
4.如果是两个Integer,判断值是否在[-128,127]之间,之间就相等,否则不等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值