java String.equals() 問題

本帖最後由 CT333 於 2020-8-24 21:33 編輯

Given:
  1. String name1 = "Tony";
複製代碼
想check name1係咪Tony, 咁:
  1. if("Tony".equals(name1)){}
複製代碼
  1. if(name1.equals("Tony")){}
複製代碼
有咩分別?

如果name1冇assign value
if(name1.equals("Tony")){}
會throw null pointer exception

TOP

如果name1冇assign value
if(name1.equals("Tony")){}
會throw null pointer exception
望月小妖 發表於 2020-8-24 22:36


實際例子:

String name1 = null;
if ("Tony".equals(name1)) {} // false
if (name1.equals("Tony")) {} // NullPointException

TOP

上面 ching 講左分別
因為 variable 本身 nullable,
寫得多, 你會習慣性咁用第二種寫法, 咁樣可以減少好多 NPE

TOP

if("Tony".equals(name1)){}

係,咁樣一定唔會NPE,但係你會無左configurability.

不如試下咁樣?

String toCompare='Tony';
if (toCompare != null && toCompare.equals(<String to compare>))......

TOP

上面 ching 講左分別
因為 variable 本身 nullable,
寫得多, 你會習慣性咁用第二種寫法, 咁樣可以減少好多 ...
rabbit82047 發表於 2020-8-25 08:55


我反如慣左
try {
   if (name1.equals("Tony")) {}
} catch (Exception e) {}

TOP

回覆 6# KinChungE


    Good Practice

但好多情況係只需要知 T/F

TOP

我反如慣左
try {
   if (name1.equals("Tony")) {}
} catch (Exception e) {}
KinChungE 發表於 2020-8-25 11:49



try catch好似有額外overhead?
而且為左咁整個block,睇code時會辛苦左

就算唔寫 "literal".equals(variable)
都好似係#5簡潔啲

定係你講下笑

TOP

try catch好似有額外overhead?
而且為左咁整個block,睇code時會辛苦左

就算唔寫 "literal".equals(va ...
EITCo 發表於 2020-8-25 14:07


我講係成個function由頭到尾try catch

TOP

我講係成個function由頭到尾try catch
KinChungE 發表於 2020-8-25 16:17



    有冇考慮過method throws埋個exception出去?

TOP