變量與常量
標識符
標識符的命名規則:
1)標識符可以由字母、數字、下劃線(_)和美元符($)組成,不能以數字開頭;
2)標識符嚴格區分大小寫;
3)標識符不能是Java關鍵字和保留字;
4)標識符的命名最好能反映出其作用。
例如合法的標識符:
Hello , hello_test , _hello , Void , abc$123
非法的標識符:
class , 123abc , abc 123 , void
關鍵字
標識符不能爲關鍵字和保留字,那我們來認識一下哪些是Java中的關鍵字:
編程語言學習經驗談
像學習英語、日語等語言一樣,接受語言的語法。
變量
什麼是變量
變量的三個元素:變量類型、變量名和變量值。
我們可以通過一間酒店的房間作爲例子來類比說明:
房間 | 變量 |
入住的客人(張三、李四) | 變量值(1、Lisi) |
房間名字 (101、203) | 變量名(name、age、sex) |
房間類型(單人間、標準間、商務間) | 變量類型(int、float、char) |
變量名的命名規則:
1)滿足標識符命名規則;
2)符合駝峯法命名規範。
示例:
年齡 age
學生姓名 stuName
要求:
1)簡單,做到見名知意;
2)變量名的長度沒有限制。
類的命名規則:
滿足Pascal命名法。
示例:
HelloWorld
數據類型
基本數據類型變量的存儲
數據類型分爲基本數據類型和引用數據類型。
引用數據類型包括數組和類等。
類定義的變量又叫對象。
變量按照作用範圍可以分爲:
-類級、對象實例級、方法級、塊級。
整型字面值
Java中有三種表示整數的方法:十進制、八進制、十六進制。
如:123(十進制),023(八進制), 0x1357(十六進制), 0X3c(十六進制), 0x1abcL(表示長整型的十六進制數)。
進製表示
八進制:以0開頭,包括0~7的數字。
如:037 , 056
十六進制表示:以0x或0X開頭,包括0~9的數字,及字母a~f,A~F;a/A表示數字10,以此類推。
如:0x12,0xabcf , 0XABCFF
變量聲明
格式: 數據類型 變量名;
例:
int n; //聲明整型變量n
long count; //聲明長整型變量count
賦值
在Java中使用 "=" 運算符進行賦值。
"=" 叫作賦值運算符,將運算符右邊的值賦給左邊的變量。
例:
int n; //定義int型變量n
n = 3; // 將3賦值給n
我們也可以在定義變量的同時給變量賦值,即變量的初始化。
例:
int n = 3; //定義int類型變量存放十進制數據
int octal = 037; //定義int類型變量存放八進制數據
long longNum = 0xa2cdf3ffL; //定義long類型變量存放十六進制長整型數據
short shortNum = 123; //定義變量存放短整型數據
byte b = 10; //定義變量存放byte類型數據
浮點型字面值
浮點型字面值默認情況下表示double類型,也可以在值後加d或D。
如:123.43d或123.43D
若表示float類型,則需要在字面值後加f或F。
如:23.4f或23.4F
public class FloatDemo {
public static void main(String[] args) {
//定義一個單精度浮點型變量,存放1234.328
float f = 1234.328f;
System.out.println("f="+f);
//定義一個雙精度浮點型變量,存放5623.465
double d = 5623.465;
System.out.println("d="+d);
//double類型變量表示的數據範圍是最大的
double d1 = 123L;
System.out.println("d1="+d1);
//變量間的賦值
double d2 = d;
System.out.println("d2="+d2);
}
}
字符型字面值
字符型字面值用單引號內的單個字符表示。
如: 'a' 'b' '$' 單引號中必須只有一個字符。
定義字符型變量
char a = 'a';
char ch = 65;
public class CharDemo {
public static void main(String[] args) {
//定義一個變量存放字符'a'
char a = 'a';
System.out.println("a="+a);
char ch = 65;
System.out.println("ch="+ch);
//char表示的數據範圍是0~65535
char ch1 = 65535;
System.out.println("ch1="+ch1);
//字面值超出表示數據範圍,需要進行強制類型轉換
char ch2 = (char)65536;
System.out.println("ch2="+ch2);
}
}
知識點補充
ASCII碼
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)。
它是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。
ASCII碼錶示
使用7位或8位二進制數組合來表示128或256種可能的字符。
-7位二進制數組合——標準ASCII碼,用於表示大小寫字母、標點符號、美式英語中的控制字符等。
-8位二進制數組合(後128位)——擴展ASCII碼,用於表示特殊符號,外來語言的字母等。
Unicode編碼
Unicode編碼的目標是支持世界上所有的字符集
char c = '\u005d';
Unicode表示法,在值前加前綴\u
布爾類型字面值
布爾值只能定義爲true和false。
例:
boolean b = true;
boolean flag = false;
字符串字面值
字符串不屬於基本數據類型,它是類!
雙引號引起來的0個或多個字符。
例:
String s = "";
public class StringDemo {
public static void main(String[] args) {
//定義一個空字符串
String s1 = "";
System.out.println("s1="+s1);
//定義一個字符串,內容時Hello
String s2 = "Hello";
System.out.println("s2="+s2);
//定義一個包含unicode字符的字符串
String s3 = "A\u005d\u005fBCD";
System.out.println("s3="+s3);
//定義一個包含空格的字符串,空格也會佔字符
String s4 = "Hello World";
System.out.println("s4="+s4);
}
}
轉義字符
字母前面加上捺斜線"\"來表示那些常見的不能顯示的ASCII字符。我們把這些字符稱爲轉義字符,如\t,\n等,因爲後面的字符,都不是它本來的ASCII字符意思了。
綜合案例
public class VarDemo {
public static void main(String[] args) {
//定義兩個整型變量x,y
//第一種方式,聲明變量的同時賦值——變量的初始化
//int x = 3,y = 5;
//先聲明變量,再賦值
int x,y;
x=3;
y=5;
System.out.println("x="+x);
System.out.println("y="+y);
//關於換行的問題
//函數換行
System.out.println();
//轉義字符換行
System.out.println(x+y+'\n');
//關於轉義字符
System.out.println(x+'\t'+y+'\n'); //輸出爲 27 原因 字符本身就是一個整型,此處相當於把字符轉換成整數,然後求和輸出了
//解決方法
//第一種,最左側加上 "" ,變成字符串的連接
System.out.println(""+x+'\t'+y+'\n');
//第二種,把單引號改爲雙引號
System.out.println(x+"\t"+y+'\n'); //輸出爲 3 5
System.out.println("\n\'"+x+"\'"); // 輸出 '3'
//定義一個漢字的字符
char ch = '愛';
System.out.println(ch);
char 中文 = '中'; //不建議中文作爲變量名
System.out.println(中文);
//用科學計數法表示浮點型數據
double d = 1.23E5;
float f = 1.23e5f;
double d1 = .2;
System.out.println("d="+d);
System.out.println("f="+f);
System.out.println("d1="+d1);
}
}
類型轉換
類型轉換分爲自動類型轉換和強制類型轉換。
自動類型轉換順序(又叫隱式類型轉換)
我們可以通過下圖,總結出自動類型轉換的規律:低級類型到高級類型的自動類型提升。
強制類型轉換
如果A類型的數據表示範圍比B類型大,則將A類型的值賦值給B類型,需要強制類型轉換。
如:
double d = 123.4;
float f = (float)d;
強制數據類型轉換的格式:(數據類型)數值
public class TypeExchange {
public static void main(String[] args) {
//char類型和int類型之間的轉換
char c = (char)65536;
int n;
n = c; //隱式類型轉換
c = (char)n; //強制類型轉換
//整型和浮點型的類型轉換問題
int x = 100;
long y = x;
x = (int)y;
float f = 1000000000000L;
System.out.println("f="+f); // f=1.0E12
//long 類型 轉換成 float/double 會出現丟失精度問題
float f1 = 142152563462345231L;
System.out.println("f1="+f1); // f1=1.4215256E17
}
}
常量
常量可以理解成一種特殊的變量,它的值被設定後,在程序運行過程中不允許被改變。
格式:final int n = 5;
public class FinalDemo {
public static void main(String[] args) {
int m = 5;
final int N = 5;
m = 10;
// N = 11; 編譯器報錯,不允許修改
final double PI = 3.14;
final double MIN_VALUE = 0;
}
}