Java中的方法、常量、變量、參數(shù)用例詳解
在上一篇文章:一文搞清楚Java中的包、類、接口中我們講了Java中的包、類和接口,今天繼續(xù)將剩下的方法、常量、變量以及參數(shù)梳理完。
Java中的變量與常量
在JVM的運轉中,承載的是數(shù)據(jù),而數(shù)據(jù)的一種變現(xiàn)形式就是“量”,量分為:常量與變量,我們在數(shù)學和物理學中已經(jīng)接觸過變量的概念了,在Java中的變量就是在程序運行過程中可以改變其值的量。
常量
與變量相對應的是常量,所謂常量,即在作用域內(nèi)保持不變的值,一般用final關鍵字進行修飾,通常分為全局常量、類內(nèi)常量、局部常量。
【程序用例】
public class Person {
//全局常量
public static final String SEX = "男";
//類內(nèi)常量
private static final String BIRTHPLACE ="安徽";
public void method1(String str){
//局部常量-方法常量
final String LANGUAGE = "漢語";
}
public void method2(final int age){
//局部常量-參數(shù)常量,不可改,這段代碼會編譯報錯
age = 20;
}
}變量
變量同樣分為局部變量、成員變量和靜態(tài)變量
【程序用例】
public class Person {
//成員變量
//在類內(nèi)部但在方法體外聲明的變量稱為成員變量,或者實例變量,或者字段。
//之所以稱為實例變量,是因為該變量只能通過類的實例(對象)來訪問。
int data1 = 3;
//靜態(tài)變量
//通過 static 關鍵字聲明的變量被稱為靜態(tài)變量(類變量),
//它可以直接被類訪問
static int data2 = 4;
public int sum(){
//局部變量
//在方法體內(nèi)聲明的變量被稱為局部變量,該變量只能在該方法內(nèi)使用,
//類中的其他方法并不知道該變量。
int a = 1;
int b = 2;
return a+b;
}
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.data1 == person.sum());
System.out.println(Person.data2 == person.sum());
}
}【變量使用時注意事項】
局部變量
局部變量聲明在方法、構造方法或者語句塊中。
局部變量在方法、構造方法、或者語句塊被執(zhí)行的時候創(chuàng)建,當它們執(zhí)行完成后,將會被銷毀。
訪問修飾符不能用于局部變量。
局部變量只在聲明它的方法、構造方法或者語句塊中可見。
局部變量是在棧上分配的。
局部變量沒有默認值,所以局部變量被聲明后,必須經(jīng)過初始化,才可以使用。
成員變量
成員變量聲明在一個類中,但在方法、構造方法和語句塊之外。 當一個對象被實例化之后,每個成員變量的值就跟著確定。
成員變量在對象創(chuàng)建的時候創(chuàng)建,在對象被銷毀的時候銷毀。
成員變量的值應該至少被一個方法、構造方法或者語句塊引用,使得外部能夠通過這些方式獲取實例變量信息。 成員變量可以聲明在使用前或者使用后。
訪問修飾符可以修飾成員變量。
成員變量對于類中的方法、構造方法或者語句塊是可見的。一般情況下應該把成員變量設為私有。通過使用訪問修飾符可以使成員變量對子類可見;成員變量具有默認值。數(shù)值型變量的默認值是
0,布爾型變量的默認值是 false,引用類型變量的默認值是 null。變量的值可以在聲明時指定,也可以在構造方法中指定。
靜態(tài)變量
靜態(tài)變量在類中以 static 關鍵字聲明,須在方法、構造方法和語句塊之外。
無論一個類創(chuàng)建了多少個對象,類只擁有靜態(tài)變量的一份拷貝。 靜態(tài)變量除了被聲明為常量外很少使用。 靜態(tài)變量儲存在靜態(tài)存儲區(qū)。
靜態(tài)變量在程序開始時創(chuàng)建,在程序結束時銷毀。 與成員變量具有相似的可見性。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為 public 類型。
靜態(tài)變量的默認值和實例變量相似。 靜態(tài)變量還可以在靜態(tài)語句塊中初始化
Java中的方法
何為方法?我的理解是:方法是Java中對邏輯行為的一種程序實現(xiàn),通過方法的調用去實現(xiàn)我們想讓對象所擁有的行為,比如一個對象的增刪改查,只需要創(chuàng)建相應的方法即可!
方法的聲明
在方法聲明中,最重要的就是方法名(采用小駝峰命名法)與參數(shù),這兩者構成的方法的簽名,是方法重載的判斷依舊,除此之外,在聲明方法的時候,還會設置訪問權限、是否靜態(tài)、返回值類型等。結構如下圖:

實例方法
在類中聲明,無需static、abstract等關鍵字修飾,創(chuàng)建類對象,通過對象的引用所調用的方法為實例方法,類中最為常見的一種方法類型。上代碼!
public class Test {
public static void main(String[] args) {
Test sum = new Test();
System.out.println(sum.add(1,2));
}
//實例方法,求兩數(shù)之和
public int add(int a, int b) {
return a + b;
}
}靜態(tài)方法
若方法的聲明中加上了static關鍵字,靜態(tài)方法是屬于類的,而不是屬于類創(chuàng)建的對象或實例的,故在調用時無需通過對象實例。
public class Test {
public static void main(String[] args) {
System.out.println(sub(2,1));
}
public static int sub(int a,int b){
return a - b;
}
}【注意事項】
1、靜態(tài)方法只能訪問靜態(tài)成員 2、調用靜態(tài)方法時可能對象并沒有被初始化,此時非靜態(tài)變量還未初始化 3、非靜態(tài)方法的調用和非靜態(tài)成員變量的訪問要先創(chuàng)建對象
抽象方法
當一個方法被關鍵字abstract修飾后,且沒有方法體,那它就成為了一個抽象方法,抽象方法往往出現(xiàn)在抽象類和接口中。
/**
* @author JavaBUild
*/
abstract class AbstractDemo {
abstract void display();
}【注意事項】
1、抽象類中不一定必須要有抽象方法,但是有抽象方法的類必須是抽象類 2、若一個類繼承了抽象類,則必須實現(xiàn)抽象類中的抽象方法! 3、抽象類不能被實例化 4、抽象方法不能被聲明為靜態(tài) 5、抽象方法不能用 private 修飾 6、抽象方法不能用 final 修飾
native方法
我們在講Java的Object類時,已經(jīng)接觸過Java中的native方法了,它們用native關鍵字修飾,用C/C++語言實現(xiàn),聲明時native關鍵字必須在返回值前,不能用abstract修飾、沒有方法體,甚至沒有大括號!
public final native Class<?> getClass(); public native int hashCode(); protected native Object clone() throws CloneNotSupportedException;
這類方法存在的意義是作為Java標準類庫的一種擴展,或者兼容其他語言寫好的且更好用的類庫,或者提升程序執(zhí)行效率。
構造方法
除了以上那些方法外,Java中還有一種特殊的方法,名為構造方法,用以在對象初始化工作,Java 有兩種類型的構造方法:無參構造方法和有參構造方法。
當我們在一個類中不寫任何構造方法時,編譯器會默認一個無參構造方法,只不過這個方法是缺省的,顯示不可見。
構造方法的聲明規(guī)范
構造方法的名字必須和類名一樣;
構造方法沒有返回類型,包括 void;
構造方法不能是抽象的(abstract)、靜態(tài)的(static)、最終的(final)、同步的(synchronized)。
代碼示例
public class Test {
private String name;
private int age;
//默認構造方法,無參構造
public Test() {
}
//有參構造方法
public Test(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
//通過無參構造創(chuàng)建的對象,會有默認值
Test test1 = new Test();
//通過有參構造方法構造的對象,在初始化時便進行了賦值
Test test2 = new Test("JavaBuild", 18);
System.out.println(test1.name+":"+test1.age);
System.out.println(test2.name+":"+test2.age);
}
}輸出:
null:0
JavaBuild:18
Java中參數(shù)
上面構造方法中提及了有參構造和無參構造,那么現(xiàn)在就好好聊一聊這個參數(shù),參數(shù)應用于方法之中,作為方法運轉的條件和參考,當然這僅限于有參數(shù)的方法,方法中的參數(shù)分形參和實參,形參是在方法的定義階段,而實參則是在方法的調用階段,參數(shù)個數(shù)不限,類型不限,可以是基本數(shù)據(jù)類型,也可以是引用類型。
可變參數(shù)在jdk5中為了解決反射機制和printf中的問題引入了可變參數(shù)概念,顧名思義就是參數(shù)個數(shù)不確定的場景。定義方式:"參數(shù)類型...";
代碼示例
public class Test {
public static void main(String[] args) {
countLength("a");
countLength("a","b");
countLength("a","b","c");
}
public static void countLength(String... args){
System.out.println(args.length);
}
}【注意事項】
1、每個方法最多只有一個可變參數(shù) 2、可變參數(shù)必須是方法的最后一個參數(shù) 3、無法僅通過改變可變參數(shù)的類型,來重載方法 4、通過對 class 文件反編譯可以發(fā)現(xiàn),可變參數(shù)被編譯器處理成了數(shù)組
到此這篇關于Java中的方法、常量、變量、參數(shù)的文章就介紹到這了,更多相關Java中的方法、常量、變量、參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java使用分布式實現(xiàn)數(shù)據(jù)庫讀寫分離的示例代碼
在MySQL中可以通過配置主從復制來實現(xiàn)數(shù)據(jù)同步,本文主要介紹了Java使用分布式實現(xiàn)數(shù)據(jù)庫讀寫分離,具有一定的參考價值,感興趣的可以了解一下2024-07-07
Spring Boot整合MyBatis連接Oracle數(shù)據(jù)庫的步驟全紀錄
這篇文章主要給大家介紹了關于Spring Boot整合MyBatis連接Oracle數(shù)據(jù)庫的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-07-07
使用springboot activiti關閉驗證自動部署方式
這篇文章主要介紹了使用springboot activiti關閉驗證自動部署方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09

