Java 中的对象比较:==
与 equals
在 Java 中,比较对象时常用的两种方法是 ==
和 equals
。它们有不同的语义和用途,理解它们的区别对于编写正确的代码至关重要。
==
运算符
- 用途:比较两个对象的引用是否相同,即它们是否指向同一个内存地址。
- 基本数据类型:对于基本数据类型(如
int
、char
、boolean
等),==
比较的是值是否相等。 - 对象:对于对象(如
String
、Integer
等),==
比较的是对象的引用是否相同。
equals
方法
- 用途:比较两个对象的内容是否相等。
- 重写:对于大多数对象类型,
equals
方法需要被重写以提供有意义的内容比较。 - 字符串:对于
String
类型,equals
方法比较的是字符串的内容是否相等。
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @param o1 int整型 * @param o2 int整型 * @return int整型 */ public boolean flag = false; public void dfs(TreeNode root, ArrayList<Integer> path, int o){ if(flag || root == null) return; path.add(root.val); if(root.val == o){ flag = true; return; } dfs(root.left, path, o); dfs(root.right, path, o); if(flag) return; path.remove(path.size() - 1); } public int lowestCommonAncestor (TreeNode root, int o1, int o2) { // write code here ArrayList<Integer> p1 = new ArrayList<>(); ArrayList<Integer> p2 = new ArrayList<>(); dfs(root, p1, o1); flag = false; dfs(root, p2, o2); int res = 0; for(int i = 0; i < Math.min(p1.size(), p2.size()); i++){ if(p1.get(i).equals(p2.get(i))) res = p1.get(i); } return res; } }