程序中須要處理數據,Java 中的變量是用來裝載數據。變量相似一個盒子,咱們經過這個盒子,就能夠操做盒子裏面的數據。java
Java 中每一個變量都有名稱和數值。名稱不會變化,可是裏面的數值能夠變化,像一個盒子裏面能夠去裝不一樣的東西。shell
Java 變量中的值不必定老是數值,還能夠是文本內容或者字母,還能夠是其餘類型的數據。編程
Java 中變量定義須要顯示的指定存放數據類型,一旦指定,只能存儲指定類型數據。當建立變量的時候,須要在內存中申請空間。內存管理系統根據變量的類型爲變量分配存儲空間,分配的空間只能用來儲存該類型數據。ide
Java 中變量是這樣定義的:函數
data_type variable_name = value;
好比用變量 passengers 記錄公交車每一個站乘客的數量。編碼
int passengers;//聲明一個名字爲 passengers的變量,指定存放數據類型爲整數 passengers = 0;//爲 passengers 變量初始化一個整數值 0 //也能夠聲明變量時,就初始化值。 int passenger1 = 10;//定義變量paasenger1,並初始化值爲整數10
注意:這裏的 「=」 不是數學裏面等於的意思,是把右邊的數據,賦值給左邊變量。
定義變量後,能夠對變量更新爲不一樣的值。變量只保留最後一次更新的值。spa
Java中變量的名字命名須要遵循一些規則:code
1)變量名稱中不能夠有空格。好比 int pas senger = 0;
是不合法的, 由於passengers中存在空格對象
2)變量名稱能夠以特殊字符開頭,例如$和像和_ 像int $num = 10;
是有效的定義。blog
3)根據Java編碼標準,變量名應以小寫字母開頭;對於具備多個單詞的冗長變量名稱,能夠這樣作:int smallNumber; int bigNumber; (用大寫字母開始第二個單詞,也稱爲駝峯命名規則)。
4)Java 中的變量名稱區分大小寫,也就是 int Num;
和 int num;
定義了兩個不一樣的變量。
Java 變量中的類型分爲三種:
1)靜態變量(或者類變量)
2)實例變量
3)局部變量
靜態變量也被稱爲類變量,由於它們與類相關聯,而且對於類的全部實例對象都是通用的。例如,A類中定義了一個靜態變量 a,對於從 A 類的建立的任何實例對象都可以訪問靜態變量 a。若是經過一個實例對象改變了靜態變量 a 的值,那麼靜態變量的改變會應用到其餘全部的對象。實例說明一下:
public class StaticVariableExample { //定義一個靜態變量 public static String myClassVar = "class or static variable"; public static void main(String[] args) { // 建立三個實例對象 StaticVariableExample obj1 = new StaticVariableExample(); StaticVariableExample obj2 = new StaticVariableExample(); StaticVariableExample obj3 = new StaticVariableExample(); //三個對象均可以訪問 myClassVar ,輸出 「class or static variable」 System.out.println(obj1.myClassVar); System.out.println(obj2.myClassVar); System.out.println(obj3.myClassVar); //經過實例對象 obj2 改變靜態變量 myClassVar的值 obj2.myClassVar = "Change value for myClassVar"; // 三個都會輸出:"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
靜態變量能夠理解爲屬於類(Class)模板的變量,不屬於實例對象,可是對象能夠訪問。由於屬於類模板,全部也能夠直接訪問靜態變量,例如在上面實例的 main
方法中能夠直接這樣打印輸出:
System.out.println(myClassVar);
注意:只有靜態變量能夠這樣直接訪問。局部變量和實例變量不能夠直接訪問
類的每一個實例(對象)都有本身的實例變量副本。與靜態變量不一樣,實例變量具備本身獨立的實例變量副本。在下面的程序中使用obj2對象更改了實例變量值,而且當使用全部三個對象顯示變量時,只有obj2值被更改,其餘值保持不變。這代表三個對象都有本身的副本實例變量。
實例變量示例:
public class InstanceVariableExample { //定義實例變量 String myInstanceVar = "instance variable"; public static void main(String[] args) { //建立三個實例對象 InstanceVariableExample obj1 = new InstanceVariableExample(); InstanceVariableExample obj2 = new InstanceVariableExample(); InstanceVariableExample obj3 = new InstanceVariableExample(); //每一個對象擁有實例變量副本,都輸出:「instance variable」 System.out.println(obj1.myInstanceVar); System.out.println(obj2.myInstanceVar); System.out.println(obj3.myInstanceVar); //obj2改變的只是本身的實例變量副本,不改變其餘實例對象的實例變量 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
能夠理解爲實例對象擁有各自的實例變量,類只是定義了一個實例變量的模板。產生新的實例對象時,會從類模板拷貝實例變量給實例對象。
什麼是局部變量,顧名思義,該類型變量只在一個局部範圍內有效,超出範圍無效。外部就沒法訪問該變量。
局部變量是定義在一個類的函數裏面,其做用範圍被限制在該函數內部,外部沒法訪問該變量。
[認識 Java]() 文章中介紹過函數的概念
下面,我用一個例子來講明:
public class LocalVaribleExample { //定義一個實例變量 myVar public String myVar = "instance variable"; public void myMethod() { // 定義一個局部變量,只做用在該方法內部 String myVar = "Inside Method"; String myVar2 = "Inside Method 2" System.out.println(myVar); } public static void main(String[] args) { //建立一個實例對象 LocalVaribleExample obj = new LocalVaribleExample(); System.out.println("調用函數"); obj.myMethod(); System.out.println(obj.myVar); //System.out.println(obj.myVar2);//會編譯出錯,外部沒法訪問方法內局部變量 } }
控制檯輸出:
調用函數 Inside Method instance variable
說明:局部變量的做用範圍只在方法內部
若是不聲明實例變量:
public String myVar = "instance variable";
那麼,main
方法中的直接調用:
System.out.println(obj.myVar);
會拋出編譯錯誤。由於沒法在myMethod
外更改和訪問myVar
局部變量。
ASCII是用於將英文字符表示爲數字的代碼,英文字母的每一個字母都被分配了從0到127的數字。例如,大寫字母P的ASCII代碼是80。
在Java編程中,咱們有兩種方法來查找字符的ASCII值
1)經過給int變量分配一個字符
2)經過類型轉換字符值爲int
public class Demo { public static void main(String[] args) { char ch = 'P'; int asciiCode = ch; // 強制轉換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: 80
1)控制檯輸入兩個整數,並打印結果:
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: "); // 讀取鍵盤輸入的數字,並賦值給變量num1 int num1 = scan.nextInt(); System.out.print("Enter second number: "); int num2 = scan.nextInt(); // 使用後關閉掃描器 scan.close(); // 計算兩個整數相乘的結果 int product = num1*num2; //控制檯打印乘法結果 System.out.println("Output: "+product); } }
控制檯:
Enter first number: 20 Enter second number: 6 Output: 120
2)兩個小數相乘:
這裏咱們使用數據類型double來表示數字,能夠輸入整數以及浮點數。
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: "); // 讀取鍵盤輸入的數值,並賦值給變量num1 double num1 = scan.nextDouble(); System.out.print("Enter second number: "); double num2 = scan.nextDouble(); // 使用後關閉掃描器 scan.close(); // 計算兩個數值相乘的結果 double product = num1*num2; //控制檯打印乘法結果 System.out.println("Output: "+product); } }
控制檯:
Enter first number: 1.5 Enter second number: 2.5 Output: 3.75
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