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