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
相关推荐
而equals()方法则是Object类的一个成员方法,用于比较对象的内容是否相等。默认情况下,它只是简单地检查引用是否相同,即与“==”行为一致。但是,对于大多数非原始类型的类(如String、Integer等),equals()通常...
如果两个对象通过`equals()`方法比较后相等,那么它们的`hashCode()`方法必须返回相同的值。这是因为哈希表(如`HashSet`)依赖于`equals()`和`hashCode()`的一致性来正确地存储和查找对象。如果两个对象相等但它们...
- 相反,如果两个对象的`hashCode()`值相同,并不能保证这两个对象通过`equals()`方法比较也是相等的。这是因为可能存在不同的对象具有相同的哈希值,这种情况称为哈希冲突。 - 为了避免哈希冲突带来的性能问题,在...
在Java编程语言中,`hashCode()`和`equals()`方法是对象身份验证的关键组成部分,它们主要用于对象的比较和哈希表(如HashMap、HashSet等)的操作。理解这两个方法的工作原理对于编写高效和可靠的代码至关重要。 ...
默认情况下,`Object`类中的`equals`方法仅比较两个对象的引用是否相同。为了实现元素的唯一性,`Set`接口要求覆盖`equals`方法,使其能够根据元素的实际内容来进行比较。 - **内容比较**: 在`Set`接口的不同实现中...
// 输出 true,Integer类的equals方法比较的是值 Integer k = new Integer(5); Integer l = new Integer(5); System.out.println(k.equals(l)); // 输出 true,尽管k和l指向不同的对象,但值相等 ``` #### 总结 ...
例如,在`String`类中,`equals()`方法比较的是两个字符串的内容是否相同。 - **Java语言对`equals()`的要求**: - 对称性:如果`x.equals(y)`返回`true`,那么`y.equals(x)`也应该返回`true`。 - 反射性:对于...
在Object类的默认实现中,`equals()` 方法比较的是两个对象的内存地址,也就是说,只有当两个对象引用指向同一个内存位置时,`equals()` 才会返回`true`。然而,大多数时候我们需要比较的是对象的内容而不是它们的...
在 Java 中,默认的 equals() 方法是比较对象的引用是否指向同一块内存地址,而不是比较对象的值。因此,如果我们想比较两个对象的值是否相等,就需要重写 equals() 方法。重写 equals() 方法的目的是为了比较两个...
- 默认情况下,`equals`方法的行为类似于`==`,即比较对象引用是否相等。 - 为了使其比较对象的内容,通常需要重写`equals`方法。 - 在`String`类中,`equals`方法已经重写,用于比较两个`String`对象的内容是否...
在 `String` 类中,`equals()` 方法比较的是字符串的内容而不是引用。其源码如下: ```java public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof ...
"java基础之“==”与“equals”区别详解" 根据java基础之“==”与“equals”区别详解,以下是相关知识点: 1. “==”操作符的作用: 在java中,“==”操作符用于比较两个对象是否相等。对于基本类型来说,“==”...
在Java编程语言中,`==` 和 `equals()` 方法是用来比较对象或基本数据类型的值的。两者虽然在外观上相似,但它们的行为却大不相同,尤其在处理引用数据类型时。 1. `==` 操作符: - **基本数据类型**:`==` 用于...
- 对象相等是基于内容比较,使用`equals()`方法判断。 - 引用相等是指两个引用指向同一个对象,使用`==`操作符判断。 以上知识点涵盖了Java的基本特性、核心概念以及一些高级特性,理解这些将有助于深入学习和...
在Java编程语言中,`equals()`和`hashCode()`方法是两个非常重要的概念,尤其是在处理对象比较和容器(如HashMap和HashSet)操作时。这两个方法在Java的类库中有着核心地位,尤其是对于类实例的比较和存储。接下来,...
默认情况下,所有类都继承自`Object`类,而`Object`类的`equals()` 方法实际上与`==` 相同,比较的是对象的引用。然而,许多类(如`String`、`Integer`等)重写了这个方法,使其比较对象的内容。例如,对于两个字符...
总的来说,`equals()` 方法用于比较两个对象的内容是否相等,而 `toString()` 方法用于将对象转换为人类可读的字符串。这两个方法都是 `Object` 类的基础方法,但在自定义类时通常需要根据具体需求进行重写。通过...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是对象身份验证和哈希表操作的关键组成部分。当我们在自定义类中重写 `equals()` 方法时,通常也需要重写 `hashCode()` 方法,这是为了遵循一些重要的原则和保证...