javaisinstanceof
『壹』 java中 a instanceof b的用法 前面的a對應的實例如不是b類的類型或b子類類型 是否會報錯
bill instanceOf PhoneBill 這就相當與一個布爾表達式,結果 是true 或 false ,不會報錯
instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。舉個例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
聲明了一個String對象引用,指向一個String對象,然後用instancof來測試它所指向的對象是否是Object類的一個實例,顯然,這是真的,所以返回true,也就是isObject的值為True
『貳』 Java 中:if(Object類型 instanceof Vector集合)
instanceof是Java的一個二元操作符,和==,>,<是同一類東西。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。舉個例子:
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
聲明一個String對象引用,指向一個String對象,然後用instanceof來測試它所指向的對象是否是Object類的一個實例,顯然,這是真的,所以返回true,也就是isObject的值為true。
instanceof有一些用處。比如我們寫了一個處理賬單的系統,其中有這樣三個類:
public class Bill {//省略細節}
public class PhoneBill extends Bill {//省略細節}
public class GasBill extends Bill {//省略細節}
在處理程序里有一個方法,接受一個Bill類型的對象,計算金額。假設兩種賬單計算方法不同,而傳入的Bill對象可能是兩種中的任何一種,所以要用instanceof來判斷:
public double calculate(Bill bill) {
if (bill instanceof PhoneBill) {
//計算電話賬單
}
if (bill instanceof GasBill) {
//計算燃氣賬單
}
...
}
這樣就可以用一個方法處理兩種子類。
然而,這種做法通常被認為是沒有好好利用面向對象中的多態性。其實上面的功能要求用方法重載完全可以實現,這是面向對象變成應有的做法,避免回到結構化編程模式。只要提供兩個名字和返回值都相同,接受參數類型不同的方法就可以了:
public double calculate(PhoneBill bill) {
//計算電話賬單
}
public double calculate(GasBill bill) {
//計算燃氣賬單
}
所以,使用instanceof在絕大多數情況下並不是推薦的做法,應當好好利用多態。
instanceof 一般情況下 用在對象類型的強制轉換 ,
例如:
繼承關系 class Manager extends Employee
----------------------------------------------------------
public void doSomething(Employee e) {
if ( e instanceof Mangaer){
Manager m = (Manager) e ;
}
}
-----------------------------------------------------------
『叄』 Java里isInstance,instanceof和isAssignableFrom的區別
對象 instanceof 類 obj instanceof class 如果class obj1 = obj成立的話,返回true,否則返回false 類.isInstance(對象) class.isInstance(obj) 如果class obj1 = obj成立的話,返回true,否則返回false
『肆』 java中instanceof和getClass的區別分析
java instanceof和getClass()的區別以及繼承與組合的區別
1.instanceof:比較的是繼承關系或者實現關系的類類型,子類對象或者實現類對象放在前面,例如:
class A{}
class B extends A{}
B b = new B();
b instanceof A
2.getClass():比較任何類的類型(兩個毫不相乾的類型,當然這也沒啥意義),也可以通過isAssignableFrom(Class<?> cls)方法比較,以下是API原意:
判定此 Class 對象所表示的類或介面與指定的 Class 參數所表示的類或介面是否相同,或是否是其超類或超介面。如果是則返回true;否則返回 false。如果該 Class 表示一個基本類型,且指定的 Class 參數正是該 Class 對象,則該方法返回 true;否則返回 false。
它是通過父類名稱點class,或者父類對象點getClass(),點isAssignableFrom(子類名稱點class,或者子類對象點getClass()),進行比較。
『伍』 java中怎麼使用instanceof運算符判斷對象是不是由某個類的是賦值true 不是則
使用方法是 對象 instanceof 類,返回的本身就是布爾類型
『陸』 java 中 instanceof 怎麼理解,能否舉個例子,看了書還是有點模糊
instanceof 類似一個符號一樣,類似+號,-號,=號這種的,你可以這樣理解的
舉個例子哈,假如現在我有兩個父類,Person類和Animal類,現在有以下關系
Student extends Person(學生肯定是一個人,所以學生類繼承人類)
Dog extends Animal(狗肯定是動物,所以狗類繼承動物類)
所以現在我new一個Student對象小明和一個Dog對象旺財
Student student= new Student("小明");
Dog dog = new Dog("旺財");
你看+號,1+2表示是前者1和後者2相加是吧,返回一個數字
而instanceof 表示,前者對象是否是後者對象的一個實例,返回true或false,好,現在以上例子來說
student instanceof Student // return true
小明肯定是學生類的一個實例
student instanceof Person // return true
這也是true,因為小明是一個學生,他也是一個人啊,所以小明肯定是人的一個實例
dog instanceof Person // return false
這就是false了,因為旺財是一條狗,不是人,所以它不是人的一個實例,所以返回false
總結:instanceof多用在多態的使用中用於判斷當前類是哪些父類的子類
『柒』 Java 中有沒有直接可以判斷兩個類是否相同的方法
java沒有直接判斷兩個雷是否相同,但提供了如下方法:
1、如果說兩個對象的判斷可以使用 equals,或者 ==。
2、如果判斷對象是否某個類 可以使用 instanceof ,isInstance
3、如果兩個類的比較 可以使用 isAssignableFrom,但只能得到是否是自身或者子類的結果,不能完
如下代碼:
importjava.util.ArrayList;
publicclassceshi{
publicstaticvoidmain(String[]args){
Strings1=newString("javaisland");//測試兩個對象是否相同
System.out.println(s1instanceofString);//true
Strings2=newString("javaisland");//測試是否對象屬於某個類
System.out.println(String.class.isInstance(s2));//true
System.out.println(ArrayList.class.isAssignableFrom(Object.class));//false
System.out.println(Object.class.isAssignableFrom(ArrayList.class));//true
}
}
運行結果如下:
『捌』 java中 instanceof 運算符的用法
instanceof的作用是測試它左邊的對象是否是它右邊的類的實例(或對象),因此instanceof的左邊AA應該是某個類的對象的名字,而右邊的BB應該是某個類的名字。作個比喻假設C是一個類,有語句C mc=new C(); 語句mc instanceof C;測試的結果應為true,很明顯左邊的對象mc是類C的實例。而語句md instanceof C;則反回false,因為md不是類C的一個實例。
BB應該不能是一個變數名,比如int i=2; 那麼不能是AA instanceof i;如果是這樣那AA應該為什麼呢?因為AA是應是一個名字,因此這樣的測試是無意義的。
現在你應該車底明白了吧