前言
在Java階段,基礎的知識就是掌握好Java語言的簡易規則,今天就先來介紹變量與數據類型及其運算符。
一.變量
“變量來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變量可以通過變量名訪問。在指令式語言中,變量通常是可變的;
1.1 Java中常用的四種變量
- 實例變量
- 類變量
- 局部變量
- 參數
public class Variable{
static int allClicks=0; // 類變量
String str="hello world"; // 實例變量
public static void method(int param1,int param2 //參數){
int i =0; // 局部變量
}
}
1.1.1 JAVA的局部變量
○ 局部變量聲明在方法、構造方法或者語句塊中;
○ 局部變量在方法、構造方法、或者語句塊被執行的時候創建,當它們執行完成+ 後,變量將會被銷燬;
○ 訪問修飾符不能用於局部變量;
○ 局部變量只在聲明它的方法、構造方法或者語句塊中可見;
○ 局部變量是在棧上分配的。
○ 局部變量沒有默認值,所以局部變量被聲明後,必須經過初始化,纔可以使用。
1.1.2 JAVA的實例變量
○ 實例變量聲明在一個類中,但在方法、構造方法和語句塊之外;
○ 當一個對象被實例化之後,每個實例變量的值就跟着確定;
○ 實例變量在對象創建的時候創建,在對象被銷燬的時候銷燬;
○ 實例變量的值應該至少被一個方法、構造方法或者語句塊引用,使得外部能夠通過這些方式獲取實例變量信息;
○ 實例變量可以聲明在使用前或者使用後;
○ 訪問修飾符可以修飾實例變量;
○ 實例變量對於類中的方法、構造方法或者語句塊是可見的。一般情況下應該把實例變量設爲私有。通過使用訪問修飾符可以使實例變量對子類可見;
○ 實例變量具有默認值。數值型變量的默認值是0,布爾型變量的默認值是false,引用類型變量的默認值是null。變量的值可以在聲明時指定,也可以在構造方法中指定;實例變量可以直接通過變量名訪問。但在靜態方法以及其他類中,就應該使用完全限定名:ObejectReference.VariableName。
1.1.3 JAVA的類變量(靜態變量)
○ 類變量也稱爲靜態變量,在類中以static關鍵字聲明,但必須在方法構造方法和語句塊之外。
○ 無論一個類創建了多少個對象,類只擁有類變量的一份拷貝。
○ 靜態變量除了被聲明爲常量外很少使用。常量是指聲明爲public/private,final和static類型的變量。常量初始化後不可改變。
○ 靜態變量儲存在靜態存儲區。經常被聲明爲常量,很少單獨使用static聲明變量。
○ 靜態變量在程序開始時創建,在程序結束時銷燬。
○ 與實例變量具有相似的可見性。但爲了對類的使用者可見,大多數靜態變量聲明爲public類型。
○ 默認值和實例變量相似。數值型變量默認值是0,布爾型默認值是false,引用類型默認值是null。變量的值可以在聲明的時候指定,也可以在構造方法中指定。此外,靜態變量還可以在靜態語句塊中初始化。
○ 靜態變量可以通過:ClassName.VariableName的方式訪問。
○ 類變量被聲明爲public static final類型時,類變量名稱一般建議使用大寫字母。如果靜態變量不是public和final類型,其命名方式與實例變量以及局部變量的命名方式一致。
1.1.4 Java中的參數
○ 形參不能離開方法。形參只有在方法內纔會發生作用,也只有在方法中使用,不會在方法外可見。而實參可以再程序的任何地方都使用。
○ 形參代表一個合集,具有不確定性,而形參代表一個獨立事物,具有確定性(即使是爲null)。也就是說,形參不能代表具體的對象,只能代表這些對象共同的屬性(比如超類、各種其他自定義屬性等等),而實參則是具體的對象(比如超類的實例)。
1.2 定義變量
定義變量的兩種方式
- 定義變量後直接+分號 ——定義變量未初始化 (int a;)
int a; //聲明
- 定義變量 = value —— 定義變量且進行初始化 (int a = 100)
int a = 100; //聲明並賦值
1.3 命名變量名(類名、方法名)
1.3.1 變量命名規則
1. 必須以字母(包括中文)、下劃線、美元符$ 開頭
2. 變量可以包括數字,但不能以數字開頭
3. 除了“_”或“$”符號以外,變量名不能包含任何特殊字符
4. 不能使用Java中的關鍵字
5. 大小寫敏感
1.3.2 變量命名規範
1. 永遠不要用美元符和下劃線命名
2. 永遠使用有意義的名字作爲變量名包括縮寫
3. 不要用中文以及拼音命名
4. 類名稱 ——單個單詞的首字母都大寫。比如:HelloWorldApp
5. 方法名稱 ——單個單詞,除第一個單詞以外,首字母大寫。比如:helloWorldApp
6. 常量(不可修改)——每個單詞都大寫,用下劃線分割。比如:final int COUNT_OF_COURSES =100
7. 類名稱 和 變量名稱 一般用名詞;方法名稱一般用動詞
二.數據類型
以下兩張圖片可以更直觀的瞭解常用的數據類型。
三.包裝類的應用
將基本數據類型封裝成對象的好處在於可以在對象中定義更多的功能方法操作該數據。
常用的操作之一:用於基本數據類型與字符串之間的轉換。
public class transition{
public static void main(String[] args){
//聲明一個字符串
String name = "1234567";
//字符串轉換數值性
byte num1 = Byte.parseByte(name);
short num2 = Short.parseShort(name);
int num3 = Integer.parseInt(name);
long num4 = Long.parseLong(name);
//字符串轉換小數
float num5 = Float.parseFloat(name);
double num6 = Double.parseDouble(name);
//字符串轉換字符
char num7 = naem.charAt(1);
//基本數據類型轉換字符串
String name =String.valueOf(123);
String naem =123+"";
}
}
四.運算符
4.1 賦值運算符
= += -= *= /= %=
4.2 邏輯運算符
&& || ! ? :
4.3 算數運算符
+ - * / %
4.4 比較運算符
> < >= <= == !=
4.5 一元運算符
++ -- ++i i++
4.6 位運算符
~(按位取反) &(按位與) |(按位或) ^(按位異或)
4.7 位移運算符
<<(左移) >>(右移) >>>(無符號右移)
五.接收輸入的數據
5.1 在Java中接收數據,我們需要用到Java中的Scanner類包。
import java.util.Scanner; //引用接收數據類型的類包
public class date{
//程序執行入口
/**
*我們接收基本數據類型和引用數據類型
*/
public static void main(String[] args){
Scanner input=new Scanner(System.in); //創建接收數據的對象
//接收整型
byte num1 = input.nextByte(); //接收byte類型
short num2 = input.nextShort(); //接收short類型
int num3 = input.nextInt(); //接收int類型
long num4 = input.nextLong(); //接收long類型
//接收浮點型
float num4 = input.nextFloat(); //接收float類型
double num5 = input.nextDouble(); //接收double類型
//接收字符型
char num6 = input.next().charAt(0); //接收char類型
//接收布爾型
boolean num7 = input.nextBoolean(); //接收boolean類型
//接收字符串
String num8 = input.next(); //接收String類型
}
}
5.2 我們可以接收整數的進制類型
import java.util.Scanner; //引用接收數據類型的類包
public class date{
//程序執行入口
/**
*可以在整型類型中輸入進制
*/
public static void main(String[] args){
Scanner input=new Scanner(System.in); //創建接收數據的對象
//接收整型
byte num1 = input.nextByte(2); //接收2進制byte類型
short num2 = input.nextShort(8); //接收8進制short類型
int num3 = input.nextInt(10); //接收10進制int類型
long num4 = input.nextLong(16); //接收16進制long類型
}
}
六.數據類型轉換
6.1 自動類型轉換(隱式類型轉換)
不同類型之前進行計算時,數據類型會往大的數據類型轉換
6.2 強制類型轉換(顯示類型轉換)
強制類型轉換往往是從寬大的類型轉換爲小的數據類型
public class type{
//程序執行入口
public static void main(String[] args){
int a = 10;
double b = 20.5;
double c = a +b;//低級轉高級,自動轉換
int d = (int) c;//高級轉低級,強制轉換
}
}