ソース分析:Objects.equals(a,b)とa.equals(b)
2126 ワード
文書ディレクトリ前言 Objects.equals(a,b)解析 a.equals(b)解析 前言
変数は、基本タイプ変数と参照タイプ変数に分けられます.基本タイプ変数の値を比較する場合は「==」メソッドを使用しますが、参照タイプ変数の値を比較する場合はequals()メソッドを使用します.equals()メソッドはObjectベースクラスを継承し、もともと比較されているのもオブジェクトのアドレスですが、システムのデフォルトでは4つのクラスがこのメソッドを上書きします:Integer、String、Date、file、この4つのクラスが作成したオブジェクトはアドレスではなく対応する値を比較します.equals()メソッドには,Objects.equals(a,b)とa.equals(b)の2つの書き方があり,本稿ではこの2つの書き方を解析する.
Objects.equals(a,b)解析
まず、このメソッドのソースコードを表示します.
パラメータ時報空ポインタとしてnull値が異常であることを防止するために、ソースコード種に空判定が見られる.
a.equals(b)解析
a.equals(b)メソッドのソースコードを見てみましょう.
空の判定操作はなくnull値がこのメソッドを呼び出すと空のポインタ異常が報告されることがわかります.
変数は、基本タイプ変数と参照タイプ変数に分けられます.基本タイプ変数の値を比較する場合は「==」メソッドを使用しますが、参照タイプ変数の値を比較する場合はequals()メソッドを使用します.equals()メソッドはObjectベースクラスを継承し、もともと比較されているのもオブジェクトのアドレスですが、システムのデフォルトでは4つのクラスがこのメソッドを上書きします:Integer、String、Date、file、この4つのクラスが作成したオブジェクトはアドレスではなく対応する値を比較します.equals()メソッドには,Objects.equals(a,b)とa.equals(b)の2つの書き方があり,本稿ではこの2つの書き方を解析する.
Objects.equals(a,b)解析
まず、このメソッドのソースコードを表示します.
public static boolen equals(Object a,Object b){
return(a==b)||(a!=null&&a.equals(b));
}
パラメータ時報空ポインタとしてnull値が異常であることを防止するために、ソースコード種に空判定が見られる.
a.equals(b)解析
a.equals(b)メソッドのソースコードを見てみましょう.
public static boolen equals(Object obj){
return(this==obj)
}
空の判定操作はなくnull値がこのメソッドを呼び出すと空のポインタ異常が報告されることがわかります.