摘要:靜態(tài)變量在第一次被訪問(wèn)時(shí)創(chuàng)建,在程序結(jié)束時(shí)銷毀。但為了對(duì)類的使用者可見(jiàn),大多數(shù)靜態(tài)變量聲明為類型。類變量被聲明為類型時(shí),類變量名稱一般建議使用大寫(xiě)字母。如果靜態(tài)變量不是和類型,其命名方式與實(shí)例變量以及局部變量的命名方式一致。
大齡后學(xué)中年,熱愛(ài)技術(shù)行業(yè),自學(xué)思路分享理解,歡迎各位指正~1.變量類型
* (成員變量)類變量:獨(dú)立于方法之外的變量,用 static 修飾。 * (成員變量)實(shí)例變量:獨(dú)立于方法之外的變量,不過(guò)沒(méi)有 static 修飾。 * 局部變量:類的方法中的變量。
public class Variable{ static int allClicks=0; // 類變量 String static String str="hello world"; // 實(shí)例變量 public void method(){ int i =0; // 局部變量 } }局部變量特點(diǎn):
局部變量聲明在方法、構(gòu)造方法或者語(yǔ)句塊中;
局部變量在方法、構(gòu)造方法、或者語(yǔ)句塊被執(zhí)行的時(shí)候創(chuàng)建,當(dāng)它們執(zhí)行完成后,變量將會(huì)被銷毀;
訪問(wèn)修飾符不能用于局部變量;
局部變量只在聲明它的方法、構(gòu)造方法或者語(yǔ)句塊中可見(jiàn);
局部變量是在棧上分配的。
局部變量沒(méi)有默認(rèn)值,所以局部變量被聲明后,必須經(jīng)過(guò)初始化,才可以使用。
/* * BasicOne age 沒(méi)有初始化,所以在編譯是會(huì)出現(xiàn)報(bào)錯(cuò)*/ public class BasicOne { public BasicOne() { // TODO Auto-generated constructor stub } public void pupAge(){ int age; //age 沒(méi)有初始化 age = age + 7; System.out.println("小狗的年齡是"+ age); } public static void main(String[] args) { BasicOne test = new BasicOne(); test.pupAge(); } }實(shí)例變量特點(diǎn):
實(shí)例變量聲明在一個(gè)類中,但在方法、構(gòu)造方法和語(yǔ)句塊之外;
當(dāng)一個(gè)對(duì)象被實(shí)例化之后,每個(gè)實(shí)例變量的值就跟著確定;
實(shí)例變量在對(duì)象創(chuàng)建的時(shí)候創(chuàng)建,在對(duì)象被銷毀的時(shí)候銷毀;
實(shí)例變量的值應(yīng)該至少被一個(gè)方法、構(gòu)造方法或者語(yǔ)句塊引用,使得外部能夠通過(guò)這些方式獲取實(shí)例變量信息;
實(shí)例變量可以聲明在使用前或者使用后;
訪問(wèn)修飾符可以修飾實(shí)例變量;
實(shí)例變量對(duì)于類中的方法、構(gòu)造方法或者語(yǔ)句塊是可見(jiàn)的。一般情況下應(yīng)該把實(shí)例變量設(shè)為私有。通過(guò)使用訪問(wèn)修飾符可以使實(shí)例變量對(duì)子類可見(jiàn);
實(shí)例變量具有默認(rèn)值。數(shù)值型變量的默認(rèn)值是0,布爾型變量的默認(rèn)值是false,引用類型變量的默認(rèn)值是null。變量的值可以在聲明時(shí)指定,也可以在構(gòu)造方法中指定;
實(shí)例變量可以直接通過(guò)變量名訪問(wèn)。但在靜態(tài)方法以及其他類中,就應(yīng)該使用完全限定名:ObejectReference.VariableName。
import java.io.*; public class Employee{ // 這個(gè)實(shí)例變量對(duì)子類可見(jiàn) public String name; // 私有變量,僅在該類可見(jiàn) private double salary; //在構(gòu)造器中對(duì)name賦值 public Employee (String empName){ name = empName; } //設(shè)定salary的值 public void setSalary(double empSal){ salary = empSal; } // 打印信息 public void printEmp(){ System.out.println("名字 : " + name ); System.out.println("薪水 : " + salary); } public static void main(String[] args){ Employee empOne = new Employee("RUNOOB"); empOne.setSalary(1000); empOne.printEmp(); } }類變量(靜態(tài)變量static)
類變量也稱為靜態(tài)變量,在類中以static關(guān)鍵字聲明,但必須在方法構(gòu)造方法和語(yǔ)句塊之外。
無(wú)論一個(gè)類創(chuàng)建了多少個(gè)對(duì)象,類只擁有類變量的一份拷貝。
靜態(tài)變量除了被聲明為常量外很少使用。常量是指聲明為public/private,final和static類型的變量。常量初始化后不可改變。
靜態(tài)變量?jī)?chǔ)存在靜態(tài)存儲(chǔ)區(qū)。經(jīng)常被聲明為常量,很少多帶帶使用static聲明變量。
靜態(tài)變量在第一次被訪問(wèn)時(shí)創(chuàng)建,在程序結(jié)束時(shí)銷毀。
與實(shí)例變量具有相似的可見(jiàn)性。但為了對(duì)類的使用者可見(jiàn),大多數(shù)靜態(tài)變量聲明為public類型。
默認(rèn)值和實(shí)例變量相似。數(shù)值型變量默認(rèn)值是0,布爾型默認(rèn)值是false,引用類型默認(rèn)值是null。變量的值可以在聲明的時(shí)候指定,也可以在構(gòu)造方法中指定。此外,靜態(tài)變量還可以在靜態(tài)語(yǔ)句塊中初始化。
靜態(tài)變量可以通過(guò):ClassName.VariableName的方式訪問(wèn)。
類變量被聲明為public static final類型時(shí),類變量名稱一般建議使用大寫(xiě)字母。如果靜態(tài)變量不是public和final類型,其命名方式與實(shí)例變量以及局部變量的命名方式一致。
import java.io.*; public class Employee { //salary是靜態(tài)的私有變量 private static double salary; // DEPARTMENT是一個(gè)常量 public static final String DEPARTMENT = "開(kāi)發(fā)人員"; public static void main(String[] args){ salary = 10000; System.out.println(DEPARTMENT+"平均工資:"+salary); } }2.修飾符 和 static
訪問(wèn)控制
修飾符 | 當(dāng)前類 | 同一包內(nèi) | 子孫類(同一包) | 子孫類(不同包) | 其他包 |
---|---|---|---|---|---|
public | Y | Y | Y | Y | Y |
protected | Y | Y | Y | Y/N(說(shuō)明) | N |
default | Y | Y | Y | N | N |
private | Y | N | N | N | N |
static void main(String[] args)這里的主函數(shù)就不需要return任何變量,所以使用void修飾。
public class BasicOne { public String name;//實(shí)例變量 public double salary;// 私有變量,僅在該類可見(jiàn) //在構(gòu)造器中對(duì)name賦值報(bào)錯(cuò)沒(méi)有return public Employee (String empName){ name = empName ; } }
解決1
public void Employee (String empName){ name = empName ; }
解決 2
public class BasicOne { public String name;//實(shí)例變量 public double salary;// 私有變量,僅在該類可見(jiàn) //在構(gòu)造器中對(duì)name賦值報(bào)錯(cuò)沒(méi)有return public BasicOne (String empName){ name = empName ; } }4.總例子
package basicForMando; import sun.awt.EmbeddedFrame; //import object.Static; /* * 1.基礎(chǔ)知識(shí) * (1)修飾符 常用的 public * public static void main(String[] args) {} * public 可替換修飾符 * 訪問(wèn)控制修飾符 : default, public , protected, private * 非訪問(wèn)控制修飾符 : final, abstract, strictfp * */ /* 局部變量 * BasicOne age 沒(méi)有初始化,所以在編譯是會(huì)出現(xiàn)報(bào)錯(cuò)*/ public class BasicOne { // 1. 實(shí)例變量 public String name; // 1. 私有變量,僅在該類可見(jiàn) private double salary; // 3.靜態(tài)變量 salary是靜態(tài)的私有變量 private static double salary1; // 3.靜態(tài)變量(常量) DEPARTMENT是一個(gè)常量 public static final String DEPARTMENT = "開(kāi)發(fā)人員"; // bug 在構(gòu)造器中對(duì)name賦值 沒(méi)有return public BasicOne(String empName) { name = empName; return; } // 設(shè)定salary的值 public void setSalary(double empSal) { salary = empSal; } // 可以有兩個(gè) 因?yàn)橹剌d數(shù)據(jù)類型不同 public BasicOne() { // TODO Auto-generated constructor stub } public void printEmp() { System.out.println("名字 : " + name); System.out.println("薪水 : " + salary); } // 2.局部變量對(duì)象 public void pupAge() { int age = 0;// bug 局部變量初始化 age = age + 7; System.out.println("小狗的年齡是" + age + "歲"); } public static void main(String[] args) { BasicOne test = new BasicOne(); test.pupAge(); BasicOne empOne = new BasicOne("RUNOOB"); empOne.setSalary(1000); empOne.printEmp(); salary1 = 10000; System.out.println(DEPARTMENT + "平均工資:" + salary1); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74498.html
摘要:下面開(kāi)始今天的知識(shí),先看下基礎(chǔ)語(yǔ)法的總綱今天我們接著學(xué)習(xí)變量使用變量的注意事項(xiàng)數(shù)據(jù)類型和類型轉(zhuǎn)換。推薦閱讀從零開(kāi)始學(xué)之基礎(chǔ)語(yǔ)法上從零開(kāi)始學(xué)之基礎(chǔ)概述本文原創(chuàng)發(fā)布于微信公眾號(hào),編程思維成長(zhǎng)正能量,關(guān)注并回復(fù)編程閱讀等關(guān)鍵字獲取免費(fèi)學(xué)習(xí)資料 showImg(https://segmentfault.com/img/remote/1460000016134163); Java?基礎(chǔ)斷更一周了...
摘要:一切都是對(duì)象之前自己學(xué)習(xí)就是以系統(tǒng)的角度去學(xué)習(xí),就是我們把這些知識(shí)點(diǎn)羅列出來(lái),然后做一個(gè)全面的學(xué)習(xí)。按照面向?qū)ο蟮乃枷?,一切都是?duì)象,不管什么數(shù)據(jù)都應(yīng)該是對(duì)象,但是對(duì)于一些基礎(chǔ)的數(shù)據(jù)類型為了運(yùn)行效率和內(nèi)存的優(yōu)化,將個(gè)基本類型進(jìn)行了特殊處理。 一切都是對(duì)象 之前自己學(xué)習(xí)Java就是以系統(tǒng)的角度去學(xué)習(xí),就是我們把這些知識(shí)點(diǎn)羅列出來(lái),然后做一個(gè)全面的學(xué)習(xí)。這樣的的確確可以將知識(shí)點(diǎn)都學(xué)習(xí)全面,...
摘要:現(xiàn)在我們開(kāi)始說(shuō)編程特性第一條變量和數(shù)據(jù)類型,賦值和輸出。從廣為流傳的說(shuō)起,用建立一個(gè)新的工程在目錄建一個(gè)文件變量和數(shù)據(jù)類型,賦值和輸出在中,方法是應(yīng)用程序的入口方法。變量包含三個(gè)知識(shí)點(diǎn),新建變量是字符串類型給變量賦值。 用9天入門(mén)三門(mén)編程語(yǔ)言,有可能嘛,尤其是對(duì)沒(méi)有基礎(chǔ)的同學(xué)來(lái)說(shuō)?對(duì)于想學(xué)好的編程的人來(lái)說(shuō),無(wú)論從哪一門(mén)語(yǔ)言開(kāi)始入手,語(yǔ)言的本身其實(shí)并不是我們最應(yīng)該的關(guān)心的,至少不是作為一...
摘要:基礎(chǔ)知識(shí)復(fù)習(xí)后端掘金的作用表示靜態(tài)修飾符,使用修飾的變量,在中分配內(nèi)存后一直存在,直到程序退出才釋放空間。將對(duì)象編碼為字節(jié)流稱之為序列化,反之將字節(jié)流重建成對(duì)象稱之為反序列化。 Java 學(xué)習(xí)過(guò)程|完整思維導(dǎo)圖 - 后端 - 掘金JVM 1. 內(nèi)存模型( 內(nèi)存分為幾部分? 堆溢出、棧溢出原因及實(shí)例?線上如何排查?) 2. 類加載機(jī)制 3. 垃圾回收 Java基礎(chǔ) 什么是接口?什么是抽象...
閱讀 2432·2023-04-26 00:46
閱讀 593·2023-04-25 21:36
閱讀 737·2021-11-24 10:19
閱讀 2282·2021-11-23 09:51
閱讀 1028·2021-10-21 09:39
閱讀 841·2021-09-22 10:02
閱讀 1677·2021-09-03 10:29
閱讀 2707·2019-08-30 15:53