摘要:變量中的類型變量中的類型分為三種靜態(tài)變量或者類變量實(shí)例變量局部變量靜態(tài)變量靜態(tài)變量也被稱為類變量,因?yàn)樗鼈兣c類相關(guān)聯(lián),并且對于類的所有實(shí)例對象都是通用的。局部變量是定義在一個(gè)類的函數(shù)里面,其作用范圍被限制在該函數(shù)內(nèi)部,外部無法訪問該變量。
1. 理解 Java 中的變量
程序中需要處理數(shù)據(jù),Java 中的變量是用來裝載數(shù)據(jù)。變量類似一個(gè)盒子,我們通過這個(gè)盒子,就可以操作盒子里面的數(shù)據(jù)。
Java 中每個(gè)變量都有名稱和數(shù)值。名稱不會變化,但是里面的數(shù)值可以變化,像一個(gè)盒子里面可以去裝不同的東西。
Java 變量中的值不一定總是數(shù)值,還可以是文本內(nèi)容或者字母,還可以是其他類型的數(shù)據(jù)。
Java 中變量定義需要顯示的指定存放數(shù)據(jù)類型,一旦指定,只能存儲指定類型數(shù)據(jù)。當(dāng)創(chuàng)建變量的時(shí)候,需要在內(nèi)存中申請空間。內(nèi)存管理系統(tǒng)根據(jù)變量的類型為變量分配存儲空間,分配的空間只能用來儲存該類型數(shù)據(jù)。
Java 中變量是這樣定義的:
data_type variable_name = value;
比如用變量 passengers 記錄公交車每個(gè)站乘客的數(shù)量。
int passengers;//聲明一個(gè)名字為 passengers的變量,指定存放數(shù)據(jù)類型為整數(shù) passengers = 0;//為 passengers 變量初始化一個(gè)整數(shù)值 0 //也可以聲明變量時(shí),就初始化值。 int passenger1 = 10;//定義變量paasenger1,并初始化值為整數(shù)10
注意:這里的 “=” 不是數(shù)學(xué)里面等于的意思,是把右邊的數(shù)據(jù),賦值給左邊變量。
定義變量后,可以對變量更新為不同的值。變量只保留最后一次更新的值。
2. Java 中變量的命名約定Java中變量的名字命名需要遵循一些規(guī)則:
1)變量名稱中不可以有空格。比如 int pas senger = 0;是不合法的, 因?yàn)閜assengers中存在空格
2)變量名稱可以以特殊字符開頭,例如$和像和_ 像int $num = 10;是有效的定義。
3)根據(jù)Java編碼標(biāo)準(zhǔn),變量名應(yīng)以小寫字母開頭;對于具有多個(gè)單詞的冗長變量名稱,可以這樣做:int smallNumber; int bigNumber; (用大寫字母開始第二個(gè)單詞,也稱為駝峰命名規(guī)則)。
4)Java 中的變量名稱區(qū)分大小寫,也就是 int Num; 和 int num;定義了兩個(gè)不同的變量。
3. Java 變量中的類型Java 變量中的類型分為三種:
1)靜態(tài)變量(或者類變量)
2)實(shí)例變量
3)局部變量
3.1 靜態(tài)變量靜態(tài)變量也被稱為類變量,因?yàn)樗鼈兣c類相關(guān)聯(lián),并且對于類的所有實(shí)例對象都是通用的。例如,A類中定義了一個(gè)靜態(tài)變量 a,對于從 A 類的創(chuàng)建的任何實(shí)例對象都能夠訪問靜態(tài)變量 a。如果通過一個(gè)實(shí)例對象改變了靜態(tài)變量 a 的值,那么靜態(tài)變量的改變會應(yīng)用到其他所有的對象。實(shí)例說明一下:
public class StaticVariableExample { //定義一個(gè)靜態(tài)變量 public static String myClassVar = "class or static variable"; public static void main(String[] args) { // 創(chuàng)建三個(gè)實(shí)例對象 StaticVariableExample obj1 = new StaticVariableExample(); StaticVariableExample obj2 = new StaticVariableExample(); StaticVariableExample obj3 = new StaticVariableExample(); //三個(gè)對象都可以訪問 myClassVar ,輸出 “class or static variable” System.out.println(obj1.myClassVar); System.out.println(obj2.myClassVar); System.out.println(obj3.myClassVar); //通過實(shí)例對象 obj2 改變靜態(tài)變量 myClassVar的值 obj2.myClassVar = "Change value for myClassVar"; // 三個(gè)都會輸出:"Change value for myClassVar" System.out.println(obj1.myClassVar); System.out.println(obj2.myClassVar); System.out.println(obj3.myClassVar); } }
控制臺輸出:
class or static variable class or static variable class or static variable Change value for myClassVar Change value for myClassVar Change value for myClassVar
靜態(tài)變量可以理解為屬于類(Class)模板的變量,不屬于實(shí)例對象,但是對象可以訪問。因?yàn)閷儆陬惸0?,所有也可以直接訪問靜態(tài)變量,例如在上面實(shí)例的 main方法中可以直接這樣打印輸出:
System.out.println(myClassVar);
注意:只有靜態(tài)變量可以這樣直接訪問。局部變量和實(shí)例變量不可以直接訪問3.2 實(shí)例變量
類的每個(gè)實(shí)例(對象)都有自己的實(shí)例變量副本。與靜態(tài)變量不同,實(shí)例變量具有自己獨(dú)立的實(shí)例變量副本。在下面的程序中使用obj2對象更改了實(shí)例變量值,并且當(dāng)使用所有三個(gè)對象顯示變量時(shí),只有obj2值被更改,其他值保持不變。這表明三個(gè)對象都有自己的副本實(shí)例變量。
實(shí)例變量示例:
public class InstanceVariableExample { //定義實(shí)例變量 String myInstanceVar = "instance variable"; public static void main(String[] args) { //創(chuàng)建三個(gè)實(shí)例對象 InstanceVariableExample obj1 = new InstanceVariableExample(); InstanceVariableExample obj2 = new InstanceVariableExample(); InstanceVariableExample obj3 = new InstanceVariableExample(); //每個(gè)對象擁有實(shí)例變量副本,都輸出:“instance variable” System.out.println(obj1.myInstanceVar); System.out.println(obj2.myInstanceVar); System.out.println(obj3.myInstanceVar); //obj2改變的只是自己的實(shí)例變量副本,不改變其他實(shí)例對象的實(shí)例變量 obj2.myInstanceVar = "Change Text"; System.out.println(obj1.myInstanceVar); System.out.println(obj2.myInstanceVar); System.out.println(obj3.myInstanceVar); } }
控制臺輸出:
instance variable instance variable instance variable instance variable Change Text instance variable
可以理解為實(shí)例對象擁有各自的實(shí)例變量,類只是定義了一個(gè)實(shí)例變量的模板。產(chǎn)生新的實(shí)例對象時(shí),會從類模板拷貝實(shí)例變量給實(shí)例對象。3.3 局部變量
什么是局部變量,顧名思義,該類型變量只在一個(gè)局部范圍內(nèi)有效,超出范圍無效。外部就無法訪問該變量。
局部變量是定義在一個(gè)類的函數(shù)里面,其作用范圍被限制在該函數(shù)內(nèi)部,外部無法訪問該變量。
[認(rèn)識 Java]() 文章中介紹過函數(shù)的概念
下面,我用一個(gè)例子來說明:
public class LocalVaribleExample { //定義一個(gè)實(shí)例變量 myVar public String myVar = "instance variable"; public void myMethod() { // 定義一個(gè)局部變量,只作用在該方法內(nèi)部 String myVar = "Inside Method"; String myVar2 = "Inside Method 2" System.out.println(myVar); } public static void main(String[] args) { //創(chuàng)建一個(gè)實(shí)例對象 LocalVaribleExample obj = new LocalVaribleExample(); System.out.println("調(diào)用函數(shù)"); obj.myMethod(); System.out.println(obj.myVar); //System.out.println(obj.myVar2);//會編譯出錯(cuò),外部無法訪問方法內(nèi)局部變量 } }
控制臺輸出:
調(diào)用函數(shù) Inside Method instance variable
說明:局部變量的作用范圍只在方法內(nèi)部
如果不聲明實(shí)例變量:
public String myVar = "instance variable";
那么,main 方法中的直接調(diào)用:
System.out.println(obj.myVar);
會拋出編譯錯(cuò)誤。因?yàn)闊o法在myMethod外更改和訪問myVar局部變量。
4. 更多練習(xí)實(shí)例 4.1 Java程序來查找一個(gè)字符的ASCII值ASCII是用于將英文字符表示為數(shù)字的代碼,英文字母的每個(gè)字母都被分配了從0到127的數(shù)字。例如,大寫字母P的ASCII代碼是80。
在Java編程中,我們有兩種方法來查找字符的ASCII值
1)通過給int變量分配一個(gè)字符
2)通過類型轉(zhuǎn)換字符值為int
public class Demo { public static void main(String[] args) { char ch = "P"; int asciiCode = ch; // 強(qiáng)制轉(zhuǎn)換char類型為int類型 int asciiValue = (int)ch; System.out.println("ASCII value of "+ch+" is: " + asciiCode); System.out.println("ASCII value of "+ch+" is: " + asciiValue); } }
控制臺輸出:
ASCII value of P is: 80 ASCII value of P is: 804.2 Java 程序中兩個(gè)數(shù)字相乘
1)控制臺輸入兩個(gè)整數(shù),并打印結(jié)果:
import java.util.Scanner; public class Demo { public static void main(String[] args) { /* 讀取用戶的鍵盤輸入的掃描器對象 */ Scanner scan = new Scanner(System.in); System.out.print("Enter first number: "); // 讀取鍵盤輸入的數(shù)字,并賦值給變量num1 int num1 = scan.nextInt(); System.out.print("Enter second number: "); int num2 = scan.nextInt(); // 使用后關(guān)閉掃描器 scan.close(); // 計(jì)算兩個(gè)整數(shù)相乘的結(jié)果 int product = num1*num2; //控制臺打印乘法結(jié)果 System.out.println("Output: "+product); } }
控制臺:
Enter first number: 20 Enter second number: 6 Output: 120
2)兩個(gè)小數(shù)相乘:
這里我們使用數(shù)據(jù)類型double來表示數(shù)字,可以輸入整數(shù)以及浮點(diǎn)數(shù)。
import java.util.Scanner; public class Demo { public static void main(String[] args) { //讀取用戶的鍵盤輸入的掃描器對象 Scanner scan = new Scanner(System.in); System.out.print("Enter first number: "); // 讀取鍵盤輸入的數(shù)值,并賦值給變量num1 double num1 = scan.nextDouble(); System.out.print("Enter second number: "); double num2 = scan.nextDouble(); // 使用后關(guān)閉掃描器 scan.close(); // 計(jì)算兩個(gè)數(shù)值相乘的結(jié)果 double product = num1*num2; //控制臺打印乘法結(jié)果 System.out.println("Output: "+product); } }
控制臺:
Enter first number: 1.5 Enter second number: 2.5 Output: 3.754.3 計(jì)算三角面積
1)用戶輸入寬和高
import java.util.Scanner; class AreaTriangleDemo { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.println("Enter the width of the Triangle:"); double base = scanner.nextDouble(); System.out.println("Enter the height of the Triangle:"); double height = scanner.nextDouble(); //Area = (width*height)/2 double area = (base* height)/2; System.out.println("Area of Triangle is: " + area); } }
控制臺輸出:
Enter the width of the Triangle: 2 Enter the height of the Triangle: 2 Area of Triangle is: 2.0
2)程序中定義寬和高
class AreaTriangleDemo2 { public static void main(String args[]) { double base = 20.0; double height = 110.5; double area = (base* height)/2; System.out.println("Area of Triangle is: " + area); } }
控制臺輸出:
Area of Triangle is: 1105.0
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68182.html
摘要:語言中給我們提供了專門用來操作這些數(shù)據(jù)的代碼符號,統(tǒng)稱為運(yùn)算符。運(yùn)算符的優(yōu)先級運(yùn)算符優(yōu)先級決定一個(gè)表達(dá)式里術(shù)語的分組。一定的運(yùn)算符比其他運(yùn)算符擁有更高的優(yōu)先級。 showImg(https://segmentfault.com/img/remote/1460000012983569?w=900&h=500); 在前面的內(nèi)容已經(jīng)學(xué)會了如何定義變量和初始化變量。定義變量的目的就是為了操作數(shù)...
摘要:程序執(zhí)行的過程,我們可以把它認(rèn)為是一個(gè)流,實(shí)際的業(yè)務(wù)需求會根據(jù)不同的情況,來控制程序不同的流轉(zhuǎn)。中對應(yīng)的結(jié)構(gòu)為控制結(jié)構(gòu)。程序跳轉(zhuǎn)到語句后面的語句執(zhí)行。 showImg(https://segmentfault.com/img/remote/1460000012984073?w=900&h=500); 程序執(zhí)行的過程,我們可以把它認(rèn)為是一個(gè)流,實(shí)際的業(yè)務(wù)需求會根據(jù)不同的情況,來控制程序不...
摘要:需要注意的地方輸入法狀態(tài)調(diào)整為英文狀態(tài)代碼的縮進(jìn)不要忘記分號下面圖片標(biāo)注內(nèi)容。語句語句是程序最小的一個(gè)執(zhí)行單位,像一個(gè)指令,程序中,必須使用一個(gè)英文分號結(jié)束一條語句。建議,第一個(gè)簡單的程序,我已經(jīng)詳細(xì)的為你做了演練與解釋。 在上一篇文章 【[準(zhǔn)備編譯環(huán)境】]()中我們完成了 Java 編譯環(huán)境的搭建,這篇文章內(nèi)容主要是來教你怎么開始編寫第一個(gè) Java 程序,并運(yùn)行它。 分為兩個(gè)步驟,...
摘要:變量常量綁定無特定關(guān)鍵字直接設(shè)值將一個(gè)文字列放到名為的變量里的類型由文字列上面定義的正則表達(dá)式變成了整數(shù)這里就帶來一個(gè)在大工程里很容易帶來困擾的問題理解代碼不得不受制于類型極易變的變量要理解代碼所必需的工作量極大可變變量前綴將變量與 變量(常量)綁定 python無特定關(guān)鍵字,直接設(shè)值a = r^s*(d{4}-d{2}-d{2})s{1,2}(.+)$ # 將一個(gè)文字列放到名為a的...
摘要:字符串和基本數(shù)據(jù)類型也能通過進(jìn)行拼接操作,比如字符串的內(nèi)容為。即基本類型和字符串類型相加時(shí),基本類型會自動(dòng)轉(zhuǎn)換為其字符串表示,在這個(gè)例子中相當(dāng)于回顧包裝類這一小節(jié)的代碼類型的最大值就是將字符串和數(shù)據(jù)類型的拼接。 數(shù)據(jù)類型定義了變量可以采用的值,例如,定義變量為 int 類型,則只能取整數(shù)值。 在 Java 中有兩類數(shù)據(jù)類型: 1)原始數(shù)據(jù)類型 2)非原始數(shù)據(jù)類型 - 數(shù)組和字符串是非原...
閱讀 1985·2021-11-24 09:38
閱讀 3346·2021-11-22 12:07
閱讀 1917·2021-09-22 16:03
閱讀 1972·2021-09-02 15:41
閱讀 2629·2021-07-24 23:28
閱讀 2220·2019-08-29 13:17
閱讀 1561·2019-08-29 12:25
閱讀 2675·2019-08-29 11:10