instanceof 屬於
是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。
用法:
result = object instanceof class
參數:
Result:布爾類型。
Object:必選項。任意對象表達式。
Class:必選項。任意已定義的對象類。
說明:
如果 object 是 class 的一個實例,則 instanceof 運算符返回 true。如果 object 不是指定類的一個實例,或者 object 是 null,則返回 false。
代碼塊
普通代碼塊:
在方法或語句中出現的{}就稱爲普通代碼塊。普通代碼塊和一般的語句執行順序由他們在代碼中出現的次序決定--“先出現先執行”
public
class
CodeBlock01{
public
static void
main(String[] args){
{
int x=3;
System.out.println("1,普通代碼塊內的變量x="+x);
}
int x=1;
System.out.println("主方法內的變量x="+x);
{
int y=7;
System.out.println("2,普通代碼塊內的變量y="+y);
}
}
}
構造塊:
直接在類中定義且沒有加static關鍵字的代碼塊稱爲{}構造代碼塊。構造代碼塊在創建對象時被調用,每次創建對象都會被調用,並且構造代碼塊的執行次序優先於類構造函數。
public class
CodeBlock02{
{
System.out.println("第一代碼塊");
}
public
CodeBlock02(){
System.out.println("構造方法");
}
{
System.out.println("第二構造塊");
}
public static
void
main(String[] args){
new
CodeBlock02();
new
CodeBlock02();
new
CodeBlock02();
}
}
靜態代碼塊:
在java中使用static關鍵字聲明的代碼塊。靜態塊用於初始化類,爲類的屬性初始化。每個靜態代碼塊只會執行一次。由於JVM在加載類時會執行靜態代碼塊,所以靜態代碼塊先於主方法執行。
//如果類中包含多個靜態代碼塊,那麼將按照"先定義的代碼先執行,後定義的代碼後執行"。
//注意:1 靜態代碼塊不能存在於任何方法體內。2 靜態代碼塊不能直接訪問靜態實例變量和實例方法,需要通過類的實例對象來訪問。
class
Code{
{
System.out.println("Code的構造塊");
}
static{
System.out.println("Code的靜態代碼塊");
}
public
Code(){
System.out.println("Code的構造方法");
}
}
public class
CodeBlock03{
{
System.out.println("CodeBlock03的構造塊");
}
static{
System.out.println("CodeBlock03的靜態代碼塊");
}
public
CodeBlock03(){
System.out.println("CodeBlock03的構造方法");
}
public static
void main(String[] args){
System.out.println("CodeBlock03的主方法");
new
Code();
new
Code();
new
CodeBlock03();
new
CodeBlock03();
}
}
包裝類
Byte Short Integer Long Boolean Float Double Character
在八個類名中,除了Integer和Character類以後,其它六個類的類名和基本數據類型一直,只是類名的第一個字母大寫即可。
對於包裝類說,這些類的用途主要包含兩種:
a、作爲和基本數據類型對應的類類型存在,方便涉及到對象的操作。
b、包含每種基本數據類型的相關屬性如最大值、最小值等,以及相關的操作方法。
String轉整數類型 整數轉String
int -> String
int i=12345;
String s="";
第一種方法:s=i+"";
第二種方法:s=String.valueOf(i);
這兩種方法有什麼區別呢?作用是不是一樣的呢?是不是在任何下都能互換呢?
String -> int
s="12345";
int i;
第一種方法:i=Integer.parseInt(s);
第二種方法:i=Integer.valueOf(s).intValue();
這兩種方法有什麼區別呢?作用是不是一樣的呢?是不是在任何下都能互換呢?
以下是答案:
第一種方法:s=i+"";//會產生兩個String對象
第二種方法:s=String.valueOf(i);//直接使用String類的靜態方法,只產生一個對象
第一種方法:i=Integer.parseInt(s);//直接使用靜態方法,不會產生多餘的對象,但會出現異常
第二種方法:i=Integer.valueOf(s).intVlaue();//Integer.valueOf(s)相當於new Integer(Integer。parseInt(s)),也會出現異常,但會多產生一個對象