成员变量和局部变量的区别_Java 变量类型
今天主要學習Java變量類型,主要是局部變量、實例變量和類變量(靜態變量)。
Java語言中,所有的變量在使用前必須聲明。聲明變量的基本格式如下:
type identifier [ = value][, identifier [= value] ...] ;
格式說明:type為Java數據類型。identifier是變量名。可以使用逗號隔開來聲明多個同類型變量。
以下列出了一些變量的聲明實例。注意有些包含了初始化過程。
int a, b, c;??? ? ? ?// 聲明三個int型整數:a、 b、c
int d = 3, e = 4, f = 5;?// 聲明三個整數并賦予初值
byte z = 22;? ? ? ? ?// 聲明并初始化 z
String s = "runoob";? // 聲明并初始化字符串 s
double pi = 3.14159;?// 聲明了雙精度浮點型變量 pi
char x = 'x';? ? ? ? // 聲明變量 x 的值是字符 'x'。
Java語言支持的變量類型有:
類變量:獨立于方法之外的變量,用 static 修飾。
實例變量:獨立于方法之外的變量,不過沒有 static 修飾。
局部變量:類的方法中的變量。
public class Variable{
? ??static int allClicks=0;? ? // 類變量
? ??String str="hello world";? // 實例變量
? ??public void method(){
? ? ? ??int i =0;? // 局部變量
? ??}
}
Java局部變量方法中或者某局部塊中聲明定義的變量或方法的參數被稱為局部變量,局部變量可以和全局變量重名,但是局部變量會屏蔽全局變量。在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。
1.局部變量在方法體內里面的變量;
2.局部變量使用前必須初始化值;
3.局部變量沒有默認初始化值;
4.局部變量的作用域是從定義開始到定義它的代碼塊結束;
備注:局部變量調用前沒有初始化,所以編譯的時候就會報錯
1.在以下實例中age是一個局部變量。定義在pupAge()方法中,它的作用域就限制在這個方法中。
package com.runoob.test;
public class Test{?
? ?public void pupAge(){
? ? ??int age = 0;
? ? ??age = age + 7;
? ? ??System.out.println("小狗的年齡是: " + age);
? ?}
? ?public static void main(String[] args){
? ? ??Test test = new Test();
? ? ??test.pupAge();
???}
}
運行結果為:
小狗的年齡是:7
2.在下面的例子中 age 變量沒有初始化,所以在編譯時會出錯:
package com.runoob.test;
?public class Test{?
? ?public void pupAge(){
? ? ??int age;
? ? ??age = age + 7;
? ? ??System.out.println("小狗的年齡是 : " + age);
? ?}
? ?public static void main(String[] args){
? ? ??Test test = new Test();
? ? ??test.pupAge();
? ?}
}
運行結果為:
Test.java:4:variable number might not have been initialized(變量的數目可能沒有被初始化)
age = age + 7;
? ? ? ? ?^
1 error
Java實例變量1.實例變量是類實例化后,系統為其創建的一個類的實例變量的拷貝,它們可以修改實例變量的值,而不會影響其他的實例;而類變量只有一個拷貝,修改它的值將影響所有的實例。
2.實例變量則屬對象私有,某一個對象將其值改變,不影響其他對象;
3.從屬于類,由類生成對象時,才分配存儲空間,各對象間的實例變量互不干擾,能通過對象的引用來訪問實例變量。
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.0);
? ? ? empOne.printEmp();
? ?}
}
運行結果為:
$ javac Employee.java?
$ java Employee
名字 : RUNOOB
薪水 : 1000.0
Java類變量(靜態變量)1.類變量是所有對象共有,其中一個對象將它值改變,其他對象得到的就是改變后的結果;
2.類變量則是用static聲明,系統為每個類變量分配一次存儲空間。即所有的實例共享一個類變量。
3.類變量(即靜態變量)是全局變量
4.比較特殊的實例變量,用static修飾的,一個類共用這個變量,所有由這類生成的對象都共用這個變量,類裝載時就分配存儲空間。一個對象修改了變量,則所以對象中這個變量的值都會發生改變。
5.方法中或者某局部塊中聲明定義的變量或方法的參數被稱為局部變量類變量又叫靜態成員變量,它不需要創建對象就可以已經在內存中存在了。?
類就像一份說明書,說明這種類的實例對象的規格。而在創建實例對象的時候,內存中會為每一個實例對象的每一個非靜態成員變量開辟一段內存空間,用來存儲這個對象所有的非靜態成員變量值。即使兩個不同的實例對象是屬于同一個class類,但是它們的同名非靜態成員變量在內存中占用的空間是不同的。?
而靜態成員變量也就是類變量不同。所有的實例對象都共用一個類變量,內存中只有一處空間是放這個類變量值的。因此,如果一個對象把類變量值改了,另外一個對象再取類變量值就是改過之后的了。
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);
? ? }
}
運行結果為:
開發人員平均工資:10000.0
參考菜鳥教程學習:https://www.runoob.com/java/java-variable-types.html
精彩推薦Java基礎語法Java對象和類Java基本數據類型好看你就點點我總結
以上是生活随笔為你收集整理的成员变量和局部变量的区别_Java 变量类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bootstrap中导航、导航栏、表单及
- 下一篇: java map取值_Java Set接