導航:首頁 > 編程語言 > javainstanceof取反

javainstanceof取反

發布時間:2023-04-28 04:34:20

java中instanceof的用法

類型不兼容的情況下不能直接使用instanceof來進行判斷,如果這兩個類型是基本數據類型可以使用a.getClass().equals(B.class)(其中a是基本數據類型A的一個變數,相當於你這里的s,B是你想要比較的那個數據類型,這里相當於Boolean);如果這兩個類型是你自己創建的普通類,則可以讓他倆繼承一個共同的類,或者實現同一個介面。你這個屬於第一種情況,程序如下:

publicclassJudgeType{
publicstaticvoidmain(String[]args){
Strings="true";
Booleanb=true;

System.out.println(s.getClass().equals(Boolean.class));//輸出為false
}
}

再舉一個第二種的情況,程序如下:

publicclassTest{
publicstaticvoidmain(String[]args){
Personp=newTeacher();//使用多態

booleanb=pinstanceofStudent;
System.out.println(b);//輸出為false
}
}

classPerson{

}

classStudentextendsPerson{

}

classTeacherextendsPerson{

}

Ⅱ java關於instance的定義

java中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。

用法:
result = object instanceof class

參數:

Result:布爾類型。
Object:必選項。任意對象表達式。
Class:必選項。任意已定義的對象類。

說明:

如果 object 是 class 的一個實例,則 instanceof 運算符返回 true。如果 object 不是指定類的一個實例,或者 object 是 null,則返回 false。

但是instanceof在Java的編譯狀態和運行狀態是有區別的:

在編譯狀態中,class可以是object對象的父類,自身類,子類。在這三種情況下Java編譯時不會報錯。

在運行轉態中,class可以是object對象的父類,自身類,不能是子類。在前兩種情況下result的結果為true,最後一種為false。但是class為子類時編譯不會報錯。運行結果為false。

(2)javainstanceof取反擴展閱讀

例子:

介面Person

public interface Person {
public void eat();
}

實現類People

public class People implements Person {
private int a=0;

@Override
public void eat() {

System.out.println("======"+a);

}

}

子類xiaoming:

public class xiaoming extends People {

private String name;

@Override

public void eat() {
System.out.println("+++++++++");
}
}

主函數

public static void main(String[] args) {
People p=new People();
xiaoming x=new xiaoming();

System.out.println(p instanceof Person);
System.out.println(p instanceof xiaoming); -----2

System.out.println(x instanceof Person);
System.out.println(x instanceof People);
}

注意:上面2處的代碼在編譯時不會報錯。

運行結果:

true
false
true
true

參考資料網路:Java

網路:instance

Ⅲ instanceof的用法,要詳細的

instanceof屬於java關鍵字之一,instanceof 嚴格來說是Java中的一個雙目運算符,用來測試一個對象是否為一個類的實例,用法為:boolean result = obj instanceof Class

其中 obj 為一個對象,Class 表示一個類或者一個介面,當 obj 為 Class 的對象,或者是其直接或間接子類,或者是其介面的實現類,結果result 都返回 true,否則返回false。

注意:編譯器會檢查 obj 是否能轉換成右邊的class類型,如果不能轉換則直接報錯,如果不能確定類型,則通過編譯,具體看運行時定。


(3)javainstanceof取反擴展閱讀

obj 必須為引用類型,不能是基本類型。instanceof 運算符只能用作對象的判斷。在JavaSE規范中對 instanceof 運算符的規定就是:如果 obj 為 null,那麼將返回 false。

知道Java分為兩種數據類型,一種是基本數據類型,有八個分別是 byte short int long float double char boolean,一種是引用類型,包括類,介面,數組等等。

而Java中還有一種特殊的 null 類型,該類型沒有名字,所以不可能聲明為 null 類型的變數或者轉換為 null 類型,null 引用是 null 類型表達式唯一可能的值,null 引用也可以轉換為任意引用類型。不需要對 null 類型有多深刻的了解,只需要知道 null 是可以成為任意引用類型的特殊符號。

Ⅳ 在JAVA程序中instanceof是什麼意思

instanceof是什麼東東?

instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,返回boolean類型的數據。舉個例子:

String s = "I AM an Object!";

boolean isObject = s instanceof Object;

我們聲明了一個String對象引用,指向一個String對象,然後用instancof來測試它所指向的對象是否是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在絕大多數情況下並不是推薦的做法,應當好好利用多態。

Ⅳ java 編程instanceof 操作符

instanceof前面的引用和後面的類型之間至少要存在可能的繼承關系,也就是後面的類型應該和前面的引用類型一致或者是其子類。否則的話,instanceof絕無可能成立,也就是在編譯時就可以判斷這里結果一定是false了,也就沒有必要等到運行時再做這個instanceof運算了。因此,前後類型無關的instanceof運算在Java中是不允許的。

Ⅵ java 的 instanceof 問題

1. java中的instanceof 是一個二元操作符(運算符)運算符,由於是字母組成,
所以是Java的保留關鍵字,但是和>=,<=,==屬同一類,它的作用是用來判斷,
instanceof 左邊對象是否為instanceof 右邊類的實例,返回一個boolean類型值。
還可以用來判斷子父類的所屬關系。

2.用法:
boolean result = object instanceof class
3.參數:
Result:布爾類型。
Object:必選項。任意對象表達式。
Class:必選項。任意已定義的對象類。
4.擴展
如果 object 是 class 的一個實例,則 instanceof 運算符返回 true。
如果 object 不是指定類的一個實例,或者 object 是 null,則返回 false。

Ⅶ java中 instanceof 運算符的用法

instanceof表示的是實例化,也就是說是否為某個類型。舉例:
if("asb" instanceof String){ //執行代碼 };
解釋:也就回是說abc是否可以轉換為字答符串類型,如果可以的話,返回真。
備註:這樣做的好處是,先判斷了是否可以實例化,而不是直接進行強制類型轉換,也就不會出現類型轉換失敗的情況

Ⅷ Java中的instanceof判斷

A instanceof B
A是一個對象(使用new實例的對象)
B是一個類(回不是方法名)
他表示A這個對象是答否是B這個類的實例
代碼里base是Shout類型的一個變數,引用了Student的一個實例(Student是繼承了Shout的,所以可以這樣)
base instanceof Student 判斷base這個對象是否是Student這個類的實例,當然是啦,因為base引用的實例就是一個student實例
base instanceof Shout 判斷base這個對象是否是Shout這個類的實例,也是,因為Student是繼承Shout,根據上面的為true,這個也是true的
最後一個,沒什麼好想的,Object是所有的類的基類,所以任何實例instanceof Object都為true

Ⅸ JAVA的instanceOf什麼時候用啊

你好,

其實這個問題以前也困擾過我。我個人盯御理解的一個應用場合就是,當你拿到一個對象的引用時(例如參數),你可能閉陪需要判斷這個引用真正指向的類。所以你需要從該類繼承樹的最底層開始,使用instanceof操作符判斷,第一個結果為true的類即為引用真正指向的類。

例如下面的例子:

class Person{}
class Student extends Person{}
class Postgraate extends Student{}
class Animal{}
public class InstanceofTester {
public static void main(String[] args) {
instanceofTest(new Student());
}
public static void instanceofTest(Person p){
// 判斷p的真正類型
if (p instanceof Postgraate){
System.out.println("p是類Postgraate的實例");
} else if(p instanceof Student){
System.out.println("p是類Student的實例");
} else if(p instanceof Person){
System.out.println("p是類Person的實例");
} else if(p instanceof Object) {
System.out.println("p是類Object的實例");
}
/*if(p instanceof Animal){//此錯編譯錯誤,所以做注釋
System.out.println("p是類Animal的實例");
}*/
}
}

這個程序的輸出結轎則蠢果是:p是類Student的實例

Person類所在的繼承樹是:Object<--Person<--Student<--Postgraate。

這個例子中還加入一個Animal類,它不是在Person類的繼承樹中,所以不能作為instanceof的右操作數。

你可以跑跑程序,應該就明白什麼意思了。

instanceof的應用場合應該還有其它,看看其他朋友有沒補充。

希望對你有幫助。

閱讀全文

與javainstanceof取反相關的資料

熱點內容
windows7系統共享文件 瀏覽:62
ps前往文件夾 瀏覽:694
信捷plc編程用哪個軟體 瀏覽:939
vba導入文件 瀏覽:690
更新後版本英文怎麼說 瀏覽:267
桌面雲配置文件分離 瀏覽:505
iphone5如何升級4g網路 瀏覽:5
團購是在哪個app 瀏覽:897
打開多個word文檔圖片就不能顯示 瀏覽:855
騰訊新聞怎麼切換版本 瀏覽:269
app安裝失敗用不了 瀏覽:326
桌面文件滑鼠點開會變大變小 瀏覽:536
手機誤刪系統文件開不了機 瀏覽:883
微信兔子甩耳朵 瀏覽:998
android藍牙傳文件在哪裡 瀏覽:354
蘋果6s軟解是真的嗎 瀏覽:310
c語言代碼量大 瀏覽:874
最新網路衛星導航如何使用 瀏覽:425
以下哪些文件屬於圖像文件 瀏覽:774
zycommentjs 瀏覽:414

友情鏈接