JAVA异常 ,相等, equals()方法默认比较内容详解

Throwable
异常:可以补救,可恢复的错误 Exception类
错误:不可恢复的问题  Error类

常见的异常
AWTException swing组件的异常
ClassNotFoundException 找不到类的异常
IOException IO流出现异常
NoSuchFieldException	没有匹配的属性
NoSuchMethodException  没有匹配的方法

SQLException  访问数据库的异常

RuntimeException 运行时异常
	ClassCastException 类型转换异常,在强制转型的时候会出现
	NullPointerException 空指针异常
			Student stu;
			stu.study();
			
	IndexOutOfBoundsException:下标超出边界
			数组,二维数组,ArrayList,字符串,向量
			
	
异常的分类:
强制检测异常(强制捕获)
非强制检测异常(运行时异常)


自定义异常方法
public void guessNum2(int num) throws Exception{
	
	throw new Exception("异常信息");
	
}


如何强制检测异常:
处理方式一:
	try{
		//首选方案
	}catch(Exception ef){
		//备选方案
	}
处理方式二:
	在调用这个方法的方法上throws 

	
	
运行时异常:
	不需要强制检测,在需要的时候也可以检测
	
	
**********************************************************
如何查看程序错误:
程序的执行
	顺序(按照代码顺序一行一行执行)
	分支(if..else,switch...case...,try...catch...)
	循环(for   while   do...while...)

 

自定义抛出异常:

public class Demo {

	public static void main(String args[]) {

		// guessNum(10000);
		int num = 10;

		// guessNum2(num);

		guessNum3(num);

	}

	public static void guessNum(int num) {
		if (num < 0 || num >= 100) {
			System.out.println("不符合要求!!");
		} else {
			System.out.println("您猜的是:" + num);

		}

	}

	// 抛出强制检测异常,必须在定义方法的时候throws
	public static void guessNum2(int num) throws Exception {
		if (num < 0 || num >= 100) {
			// 创建一个异常对象
			Exception ex = new Exception("不符合要求!!");
			// 抛出异常对象
			throw ex;
		}
		System.out.println("您猜的是:" + num);

	}

	// 抛出运行时异常,在定义方法的时候不需要throws
	public static void guessNum3(int num) {
		if (num < 0 || num >= 100) {
			// 创建一个运行时异常对象
			RuntimeException ex = new RuntimeException("不符合要求!!");
			// 抛出异常对象
			throw ex;
		}
		System.out.println("您猜的是:" + num);

	}

}

 

运行结果:
您猜的是:10

 

 

学会使用try-catch-finally来处理异常:

/*使用try-catch 
 
*/  
  
public class TryCatchTest {  
  
   
  
public static void main(String[] args) {  
  
int number,value;  
  
try{  
  
number = 0;  
  
value = 3/number;  
  
//可能会抛出ArithmeticException异常,使用catch老捕获这个异常  
  
}catch(ArithmeticException e){  
  
e.printStackTrace();  
  
System.out.println("错误:被0整除");  
  
}  
  
}  
  
}  
  

 

equals()方法;

==
	比较的是两个变量是不是引用的同一个地址
	
	
equals:
	所有类都包含一个equals()方法,是从Object中继承来的
equals的返回值是true还是false取决于如何重写

equals的重写的基本原则
自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。 
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。 
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。 
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。 
对于任何非空引用值 x,x.equals(null) 都应返回 false。 

 

public class Student {

	private static String name;

	public Student(String name) {
		this.name = name;
	}

	// 重写equals的方法
	public boolean equals(Student obj) {
		return Student.name.equals(obj.name);
	}
	
}

 

public class Democracy {
	
	public static void main(String[] args) {

		String s1 = "abc";
		String s2 = "abc";
		String s3 = new String("abc");
		String s4 = new String("abc");

		Integer t1 = 100;
		Integer t2 = new Integer(100);

		System.out.println(s1 == s2);
		System.out.println(s2 == s3);
		System.out.println(s3 == s4);
		System.out.println(t1.equals(t2));
		System.out.println("----------------------------------");
		System.out.println(s1.equals(s2));
		System.out.println(s2.equals(s3));
		System.out.println(s3.equals(s4));

		 int a = 100;
		 int b = 100;
		 System.out.println(a == b);
		System.out.println("----------------------------------");
		Student stu1 = new Student("abc");
		Student stu2 = new Student("abc");
		System.out.println(stu1.equals(stu2));

	}


}

 

运行结果:
true
false
false
true
----------------------------------
true
true
true
true
----------------------------------
true

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值