`
百合不是茶
  • 浏览: 356170 次
社区版块
存档分类
最新评论

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

 

 

 

1
0
分享到:
评论

相关推荐

    Java常见笔试、面试题目深度剖析 相等性(==及equals方法)详解

    而equals()方法则是Object类的一个成员方法,用于比较对象的内容是否相等。默认情况下,它只是简单地检查引用是否相同,即与“==”行为一致。但是,对于大多数非原始类型的类(如String、Integer等),equals()通常...

    Java中的equals和hashCode方法详解1

    如果两个对象通过`equals()`方法比较后相等,那么它们的`hashCode()`方法必须返回相同的值。这是因为哈希表(如`HashSet`)依赖于`equals()`和`hashCode()`的一致性来正确地存储和查找对象。如果两个对象相等但它们...

    java中hashcode()和equals()方法详解

    - 相反,如果两个对象的`hashCode()`值相同,并不能保证这两个对象通过`equals()`方法比较也是相等的。这是因为可能存在不同的对象具有相同的哈希值,这种情况称为哈希冲突。 - 为了避免哈希冲突带来的性能问题,在...

    java中hashcode()和equals()的详解

    在Java编程语言中,`hashCode()`和`equals()`方法是对象身份验证的关键组成部分,它们主要用于对象的比较和哈希表(如HashMap、HashSet等)的操作。理解这两个方法的工作原理对于编写高效和可靠的代码至关重要。 ...

    set接口经常用的hashCode和equals方法详解

    默认情况下,`Object`类中的`equals`方法仅比较两个对象的引用是否相同。为了实现元素的唯一性,`Set`接口要求覆盖`equals`方法,使其能够根据元素的实际内容来进行比较。 - **内容比较**: 在`Set`接口的不同实现中...

    Java中的==和equals区别

    // 输出 true,Integer类的equals方法比较的是值 Integer k = new Integer(5); Integer l = new Integer(5); System.out.println(k.equals(l)); // 输出 true,尽管k和l指向不同的对象,但值相等 ``` #### 总结 ...

    java中hashcode()和equals()的详解.docx

    例如,在`String`类中,`equals()`方法比较的是两个字符串的内容是否相同。 - **Java语言对`equals()`的要求**: - 对称性:如果`x.equals(y)`返回`true`,那么`y.equals(x)`也应该返回`true`。 - 反射性:对于...

    java集合——Java中的equals和hashCode方法详解

    在Object类的默认实现中,`equals()` 方法比较的是两个对象的内存地址,也就是说,只有当两个对象引用指向同一个内存位置时,`equals()` 才会返回`true`。然而,大多数时候我们需要比较的是对象的内容而不是它们的...

    java中重写equals()方法的同时要重写hashcode()方法(详解)

    在 Java 中,默认的 equals() 方法是比较对象的引用是否指向同一块内存地址,而不是比较对象的值。因此,如果我们想比较两个对象的值是否相等,就需要重写 equals() 方法。重写 equals() 方法的目的是为了比较两个...

    JAVA中equals和的区别.doc

    - 默认情况下,`equals`方法的行为类似于`==`,即比较对象引用是否相等。 - 为了使其比较对象的内容,通常需要重写`equals`方法。 - 在`String`类中,`equals`方法已经重写,用于比较两个`String`对象的内容是否...

    java equals函数用法详解

    在 `String` 类中,`equals()` 方法比较的是字符串的内容而不是引用。其源码如下: ```java public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof ...

    java基础之 “==”与“equals”区别详解

    "java基础之“==”与“equals”区别详解" 根据java基础之“==”与“equals”区别详解,以下是相关知识点: 1. “==”操作符的作用: 在java中,“==”操作符用于比较两个对象是否相等。对于基本类型来说,“==”...

    Java中的== 和equals()方法详解与实例

    在Java编程语言中,`==` 和 `equals()` 方法是用来比较对象或基本数据类型的值的。两者虽然在外观上相似,但它们的行为却大不相同,尤其在处理引用数据类型时。 1. `==` 操作符: - **基本数据类型**:`==` 用于...

    java笔记整理(超详细) java笔记整理(超详细)

    - 对象相等是基于内容比较,使用`equals()`方法判断。 - 引用相等是指两个引用指向同一个对象,使用`==`操作符判断。 以上知识点涵盖了Java的基本特性、核心概念以及一些高级特性,理解这些将有助于深入学习和...

    equals 和 hashCode两者效果分析详解.docx

    在Java编程语言中,`equals()`和`hashCode()`方法是两个非常重要的概念,尤其是在处理对象比较和容器(如HashMap和HashSet)操作时。这两个方法在Java的类库中有着核心地位,尤其是对于类实例的比较和存储。接下来,...

    java equals和==的区别详解

    默认情况下,所有类都继承自`Object`类,而`Object`类的`equals()` 方法实际上与`==` 相同,比较的是对象的引用。然而,许多类(如`String`、`Integer`等)重写了这个方法,使其比较对象的内容。例如,对于两个字符...

    java中的equals()和toString()方法实例详解

    总的来说,`equals()` 方法用于比较两个对象的内容是否相等,而 `toString()` 方法用于将对象转换为人类可读的字符串。这两个方法都是 `Object` 类的基础方法,但在自定义类时通常需要根据具体需求进行重写。通过...

    java中为何重写equals时必须重写hashCode方法详解

    在Java编程语言中,`equals()` 和 `hashCode()` 方法是对象身份验证和哈希表操作的关键组成部分。当我们在自定义类中重写 `equals()` 方法时,通常也需要重写 `hashCode()` 方法,这是为了遵循一些重要的原则和保证...

Global site tag (gtag.js) - Google Analytics