摘要:類的成員方法類的成員方法的定義中的使用之靜態(tài)變量我們可以基于一個(gè)類創(chuàng)建多個(gè)該類的對象,每個(gè)對象都擁有自己的成員,互相獨(dú)立。靜態(tài)初始化塊只在類加載時(shí)執(zhí)行,且只會執(zhí)行一次,同時(shí)靜態(tài)初始化塊只能給靜態(tài)變量賦值,不能初始化普通的成員變量。
java類的學(xué)習(xí) 先上一個(gè)代碼
package bankCard; import java.util.Scanner; // 銀行卡類 public class bankCard { // 靜態(tài)變量 static String host = "www.gcsn.site"; // 成員變量 private static int ID; // 賬號 private double blance; // 余額 // 構(gòu)造函數(shù) public bankCard() { // 無參構(gòu)造函數(shù) } public bankCard(int id, double money) { //有參構(gòu)造函數(shù) ID = id; blance = money; } // 成員函數(shù)(共有) / 成員方法 public double intId() { // 存錢 System.out.println("請輸入您要存的錢數(shù),只能是整錢"); Scanner write_in = new Scanner(System.in); // 局部變量 double money = write_in.nextInt(); this.blance +=money; System.out.println("您的ID卡號為"+ID+"的賬戶存入"+money+"元余額為"+blance); return blance; } // 成員函數(shù)(共有) public double outId() { // 取錢 System.out.println("請輸入您要取出的錢數(shù),只能是整錢"); Scanner write_in = new Scanner(System.in); double money = write_in.nextInt(); if(money > blance) { System.out.println("您的余額不足!當(dāng)前余額為"+blance); }else { this.blance -=money; System.out.println("您的ID卡號為"+ID+"的賬戶取出"+money+"元,剩余余額為"+blance); } return blance; } public static void main(String [] args) { // 推薦使用類來訪問 System.out.println("static-----" +bankCard.host); System.out.println("static-----" +host); // 靜態(tài)成員函數(shù)可以直接訪問靜態(tài)變量 bankCard b1 = new bankCard(1234, 2000.00); b1.intId(); b1.outId(); } }成員變量和局部變量
成員變量和局部變量的區(qū)別
作用域不同
局部變量只能在定義它的方法內(nèi)使用。 成員變量則是可以在整個(gè)類內(nèi)都可以使用。
初始值不同
java會給成員變量一個(gè)初始值, java不會給局部變量一個(gè)初始值(必須自己初始化)。
兩類變量同名時(shí),局部變量具有更高的優(yōu)先級
構(gòu)造方法var car = new Car(); // 通常我們都會new 實(shí)例化一個(gè)對象,其實(shí)new后面跟的就是構(gòu)造方法
使用new + 構(gòu)造方法 來實(shí)例化一個(gè)新的對象。 構(gòu)造方法是定義在類中的,用來初始化一個(gè)對象。 構(gòu)造方法必須于類名相同,且沒有返回值。 當(dāng)沒有構(gòu)造方法時(shí),系統(tǒng)會自動(dòng)添加一個(gè)無參的構(gòu)造方法; 如果自定義了一個(gè)構(gòu)造方法,那么系統(tǒng)將不會為我們創(chuàng)建無參的構(gòu)造方法了,也就無法調(diào)用無參的構(gòu)造方法。 構(gòu)造方法的重載: 方法名相同,但是參數(shù)不同的多個(gè)方法,調(diào)用的時(shí)候會根據(jù)不同的參數(shù)來選擇相應(yīng)的構(gòu)造函數(shù)。類的成員方法
1 類的成員方法的定義
Java 中的 static 使用之【靜態(tài)變量】我們可以基于一個(gè)類創(chuàng)建多個(gè)該類的對象,每個(gè)對象都擁有自己的成員,互相獨(dú)立。然而在某些時(shí)候,我們更希望【該類所有的對象共享同一個(gè)成員】。此時(shí)就是 static 大顯身手的時(shí)候了!!
Java 中被 static 修飾的成員稱為【靜態(tài)成員或類成員】。它屬于整個(gè)類所有,而不是某個(gè)對象所有,即被類的所有對象所共享。靜態(tài)成員可以使用類名直接訪問,也可以使用對象名進(jìn)行訪問。當(dāng)然,鑒于他作用的特殊性更推薦用類名訪問~~
靜態(tài)成員屬于整個(gè)類,當(dāng)系統(tǒng)第一次使用該類時(shí),就會為其分配內(nèi)存空間直到該類被卸載才會進(jìn)行資源回收!~~
public class HelloWorld { // 定義靜態(tài)變量,保存班級名稱 static String host = "www.gcsn.site"; public static void main(String[] args) { HelloWorld.host = "www.baidu.com"; // 訪問靜態(tài)變量,輸出班級名稱 System.out.println("static-----" +HelloWorld.host); } }Java 中的 static 使用之【靜態(tài)方法】
與靜態(tài)變量一樣,我們也可以使用 static 修飾方法,稱為【靜態(tài)方法或類方法】。其實(shí)之前我們一直寫的 main 方法就是靜態(tài)方法。
1. 靜態(tài)方法可以直接調(diào)用靜態(tài)變量,但是不能直接調(diào)用非靜態(tài)變量
如果希望在靜態(tài)方法中調(diào)用非靜態(tài)變量,可以通過創(chuàng)建類的對象,然后通過對象來訪問非靜態(tài)變量。如
2、 在普通成員方法中,則可以直接訪問同類的非靜態(tài)變量和靜態(tài)變量,
3、 靜態(tài)方法中不能直接調(diào)用非靜態(tài)方法,需要通過對象來訪問非靜態(tài)方法。
總結(jié)
靜態(tài)方法: 能夠直接調(diào)用靜態(tài)成員,不可以直接調(diào)用非靜態(tài)成員, 不能夠直接調(diào)用非靜態(tài)方法Java 中的初始化塊和靜態(tài)初始化塊
普通方法, 既可以直接訪問靜態(tài)變量又可以訪問非靜態(tài)變量
如果使用 static 修飾初始化塊,就稱為靜態(tài)初始化塊。
靜態(tài)初始化塊只在類加載時(shí)執(zhí)行,且只會執(zhí)行一次,同時(shí)靜態(tài)初始化塊只能給靜態(tài)變量賦值,不能初始化普通的成員變量。
來看一個(gè)例子
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76709.html
摘要:單件模式提供這個(gè)實(shí)例的全局訪問點(diǎn)。實(shí)現(xiàn)單件模式,需要私有構(gòu)造器,一個(gè)靜態(tài)方法,一個(gè)靜態(tài)變量。設(shè)計(jì)到多線程問題,同步會降低程序效率。 擁有獨(dú)立且唯一的對象 這次講述的是單件模式,就是整個(gè)內(nèi)容里只有一個(gè)實(shí)例化唯一對象。這么說可能有點(diǎn)拗口,這么說吧,比方說,線程池,緩存,注冊表,日志文件,甚至做JDBC中連接,關(guān)閉,增刪改查數(shù)據(jù)庫的Connection類(個(gè)人命名也許并不一樣)、工具類等等...
摘要:我的是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)。因?yàn)槲倚睦砗芮宄业哪繕?biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來的學(xué)習(xí)計(jì)劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)offer。然后五月懷著忐忑的心情開始了螞蟻金...
摘要:歡迎進(jìn)入基礎(chǔ)課程博客地址本系列文章將主要針對一些基礎(chǔ)知識點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸開發(fā)菜鳥還是業(yè)界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時(shí)留言或加。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸JAVA開發(fā)菜鳥還是業(yè)界...
摘要:歡迎進(jìn)入基礎(chǔ)課程博客地址本系列文章將主要針對一些基礎(chǔ)知識點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸開發(fā)菜鳥還是業(yè)界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時(shí)留言或加。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸JAVA開發(fā)菜鳥還是業(yè)界...
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報(bào)率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術(shù)專家我看過哪些技術(shù)類書籍。 大家好,我是...
閱讀 1819·2019-08-30 13:54
閱讀 2734·2019-08-29 17:27
閱讀 1123·2019-08-29 17:23
閱讀 3357·2019-08-29 15:20
閱讀 1234·2019-08-29 11:28
閱讀 1576·2019-08-26 10:39
閱讀 1324·2019-08-26 10:29
閱讀 649·2019-08-26 10:13