Java基本語法
本章一起來探討下Java的基本語法。主要從以下幾個方面展開:
- Java關鍵字
- Java標識符
- Java變量
- Java數(shù)據(jù)類型
- Java運算符
學完本章內(nèi)容之后抒痒,我們對Java會有更深的認識激才,同時也可以使用Java完成基本的操作程帕。
一如失、關鍵字
1.1 含義
被java賦予了特殊含義案糙,用作專門用途的字符串限嫌。
例如:
-
public
:表示公共的 -
class
:定義類
1.2特點
- 所有的單詞都是小寫
- goto:表示java的預留關鍵字
1.3 關鍵字列表
Java提供了很多關鍵字,具體如下表:
用于定義數(shù)據(jù)類型的關鍵字 | ||||
class | interface | enum | byte | short |
int | long | float | double | char |
boolean | void | |||
用于定義數(shù)據(jù)類型值的關鍵字 | ||||
true | false | null | ||
用于定義流程控制的關鍵字 | ||||
if | else | switch | case | default |
while | do | for | break | continue |
return |
用于定義訪問修飾符的關鍵字 | ||||
private | protected | public | ||
用于定義類时捌,函數(shù)怒医,變量修飾符的關鍵字 | ||||
abstract | final | static | synchronized | |
用于定義類與類之間關系的關鍵字 | ||||
extends | implements | |||
用于定義建立實例及引用實例,判斷實例的關鍵字 | ||||
new | this | super | instanceof | |
用于異常處理的關鍵字 | ||||
try | catch | finally | throw | throws |
用于包的關鍵字 | ||||
package | import | |||
其他修飾符關鍵字 | ||||
native | strictfp | transient | volatile | assert |
二奢讨、標識符
2.1 Java標識符含義
Java 對各種變量稚叹、方法和類等要素命名時使用的字符序列稱為標識符
凡是自己可以起名字的地方都叫標識符。
2.2 Java標識符命名的規(guī)則
1.由26個英文字母大小寫拿诸,數(shù)字:0-9 扒袖,_或 $ 組成
2.數(shù)字不可以開頭。
3.不可以使用關鍵字和保留字亩码,但能包含關鍵字和保留字季率。
4.Java中嚴格區(qū)分大小寫,長度無限制描沟。
5.標識符不能包含空格飒泻。
注意:取名滿足見名知意鞭光,長度不宜過長。小于30個字符;
2.3 java標識符的命格規(guī)則
很多公司里面泞遗,對命名有嚴格的要求
1.包名: xxxyyyzzz
所有的名稱都是小寫;
多個單詞都是小寫衰猛;
可以使用.創(chuàng)建多層包名
2.類名和接口名 XxxYyyZzz
首字母大寫;
多個單詞組成刹孔,首字母都是大寫;
3.變量和方法名 xxxYyyZzz
首個單詞首字母小寫啡省;
多個單詞組成,除了第一個單詞首字母小寫髓霞,其余單詞首字母大寫;
4.常量的名稱 XXX_YYY_ZZZ
常量的名稱都是大寫卦睹;
多個單詞組成使用下劃線鏈接;
三、變量
3.1 概念
- 內(nèi)存中的一個存儲區(qū)域;
- 該區(qū)域有自己的名稱(變量名)和類型(數(shù)據(jù)類型);
- Java中每個變量必須先聲明方库,后使用;
- 該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化;
- 變量是通過使用變量名來訪問這塊區(qū)域的;
- 變量的作用域:一對{ }之間有效
3.2 定義格式
數(shù)據(jù)類型 變量名 = [初始值];
//例如
int num1 = 90;
3.3 變量的分類
a.按照申明(創(chuàng)建)的位置劃分
1.成員變量|全局變量|屬性
a.定義在方法的外部结序,類的內(nèi)部;
b.范圍在該類下所有的地方都可以使用,包括里面多個方法內(nèi)部;
2.局部變量
a.定義在方法或者代碼塊的內(nèi)容;
b.只在定義的方法或者代碼塊的{}里面使用;
之間的區(qū)別:
a.定義位置不一樣;
b.局部變量在使用之前必須賦值。全局變量會生成對應數(shù)據(jù)類型的默認值;
b.按照數(shù)據(jù)類型劃分
1.基本數(shù)據(jù)類型
數(shù)值型:
整數(shù)型:
byte:
short:
int:
long:
默認的類型是int
浮點型:
float
double:
Java 的浮點型常量默認為 double 型纵潦,聲明 float 型常量徐鹤,須后加 ‘f’ 或 ‘F’。
字符型:
char:
a.使用 '' 單引號定義內(nèi)容;
b.可以存放一個中文
c.可以存放Java中還允許使用轉義字符‘\’來將其后的字符轉變?yōu)樘厥庾址统A垦恪@纾篶har c3 = '\n'; -- '\n'表示換行符
d.直接使用 Unicode 值來表示字符型常量:‘\uXXXX’返敬。其中,XXXX代表一個十六進制整數(shù)寥院。如: \u000a 表示 \n劲赠。
e.char 類型是可以進行運算的。因為它都對應有 Unicode 值秸谢。
布爾型:
boolean:
boolean類型數(shù)據(jù)只允許取值true和false
2.引用數(shù)據(jù)類型
除了以上8種基本類型之外凛澎,其余的都是引用數(shù)據(jù)類型。包括:String估蹄、Object包裝類等
3.4 變量初始化
聲明一個變量之后塑煎,必須用賦值語句對變量進行顯式初始化,千萬不要使用未初始化的局部變量臭蚁。
例如最铁,Java編譯器認為下面的語句序列是錯誤的:
public static void main(String[] args) {
String username; //Variable 'username' might not have been initialized
System.out.println("username = " + username);
}
要想對一個已經(jīng)聲明過的變量進行賦值,就需要將變量名放在等號(=)左側刊棕,相應取值的Java表達式放在等號的右側
public static void main(String[] args) {
String username;
username = "豬小明"; //賦值
System.out.println("username = " + username);
}
也可以將變量的聲明和初始化放在同一行中炭晒。例如:
String username = "豬小明"; //賦值
3.5 常量
在Java中,利用關鍵字final
指示常量甥角。例如:
public static void main(String[] args) {
final double PI = 3.14;
//PI = 3.10; //異常 Cannot assign a value to final variable 'PI'
System.out.println("PI = " + PI);
}
關鍵字final表示這個變量只能被賦值一次。一旦被賦值之后识樱,就不能夠再更改了嗤无。習慣上震束,常量名使用全大寫。
四当犯、Java數(shù)據(jù)類型
Java是—種強類型語言垢村。這就意味著必須為每一個變量聲明一種類型,在內(nèi)存中分配了不同大小的內(nèi)存空間嚎卫。在Java中嘉栓,一共有8種基本類型(primitive type),其中有4種整型拓诸、2種浮點類型侵佃、1種用于表示Unicode編碼的字符單元的字符類型char和1種用于表示真值的boolean類型。
4.1 整型
Java各整型類型有固定的數(shù)據(jù)范圍和字段長度奠支,不受操作系統(tǒng)OS的影響馋辈,以保證Java程序的可移植性。
并且Java提供四種整型(byte
,short
,int
,long
)用于表示沒有小數(shù)部分的值倍谜,并且允許它們?yōu)樨摂?shù)迈螟。
Java的整型默認為int
類型,如果聲明long
型整型必須在數(shù)值后添加l
或者L
int num1 = 100;
long num2 = 100L;
在通常情況下尔崔,int類型最常用答毫。但如果表示星球上的居住人數(shù),就需要使用long類型了,因為int類型數(shù)值范圍最大的是 2的31次方(正好超過20億)季春。這樣的話如果使用int肯定會超過范圍烙常。
4.2 浮點型
與整數(shù)類型類似,Java 浮點類型也有固定的表數(shù)范圍和字段長度鹤盒,不受具體OS的影響蚕脏。
浮點類型通常用于表示有小數(shù)部分的數(shù)值。float表示單精度侦锯;double表示雙精度驼鞭,同時也是float的兩倍
Java 的浮點型常量默認為 double 型,聲明 float 型常量尺碰,須后加 ‘f’
或 ‘F’
挣棕。
double d1 = 10.5;
float d2 = 10.5F;
浮點數(shù)值不適用于無法接受舍入誤差的金融計算中。例如亲桥,命令System.out.printIn(2.0-1.1)將打印出0.8999999999999999洛心,而不是人們想象的0.9。
這種舍入誤差的主要原因是浮點數(shù)值采用二進制系統(tǒng)表示题篷,而在二進制系統(tǒng)中無法精確地表示分數(shù)1/10词身。
這 就好像十進制無法精確地表示分數(shù)1/3一樣。如果在數(shù)值計算中不允許有任何舍入誤差番枚,就應該使用BigDecimal
類法严,例如金額
4.3 char字符類型
char 型數(shù)據(jù)用來表示通常意義上"字符"损敷。
字符型常量的三種表現(xiàn)形式:
- 字符常量是用單引號(‘ ’)括起來的單個字符,涵蓋世界上所有書面語的字符深啤。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
- Java中還允許使用轉義字符‘\’來將其后的字符轉變?yōu)樘厥庾址统A哭致@纾篶har c3 = '\n'; -- '\n'表示換行符
- 直接使用 Unicode 值來表示字符型常量:‘\uXXXX’。其中溯街,XXXX代表一個十六進制整數(shù)诱桂。如:\u000a 表示 \n。
char 類型是可以進行運算的呈昔。因為它都對應有 Unicode 值挥等。
4.4 boolean
boolean 類型適于邏輯運算,一般用于程序流程控制:
- if條件控制語句韩肝;
- while循環(huán)控制語句触菜;
- do-while循環(huán)控制語句;
- for循環(huán)控制語句哀峻;
boolean類型數(shù)據(jù)只允許取值true和false涡相,不可以0或非 0 的整數(shù)替代true和false,這點和C語言不同剩蟀。
4.5 基本數(shù)據(jù)類型轉換
經(jīng)常需要將一種數(shù)值類型轉為另一種數(shù)值類型催蝗,但是在轉換的過程中一定要注意可能會造成數(shù)據(jù)的精度丟失,例如:double類型轉為int類型育特,那么小數(shù)點后面的數(shù)值就會丟失丙号;
Java針對現(xiàn)實情況分別提高兩種數(shù)值轉換方式:自動類型轉換
和強制類型轉換
4.5.1 自動類型轉換
容量小的類型自動轉換為容量大的數(shù)據(jù)類型。數(shù)據(jù)類型按容量大小排序為:
有多種類型的數(shù)據(jù)混合運算時缰冤,系統(tǒng)首先自動將所有數(shù)據(jù)轉換成容量最大的那種數(shù)據(jù)類型犬缨,然后再進行計算。
byte,short,char之間不會相互轉換棉浸,他們?nèi)咴谟嬎銜r首先轉換為int類型怀薛。
當把任何基本類型的值和字符串值進行連接運算時(+),基本類型的值將自動轉化為字符串類型迷郑。
4.5.2 強制類型轉換
將容量大的數(shù)據(jù)類型轉換為容量小的數(shù)據(jù)類型枝恋。使用時要加上強制轉換符(()
),但可能造成精度降低或溢出,格外要注意嗡害。
通常焚碌,字符串不能直接轉換為基本類型,但通過基本類型對應的包裝類則可以實現(xiàn)把字符串轉換成基本類型霸妹。如:
String a = "43"; int i = Integer.parseInt(a);
boolean類型不可以轉換為其它的數(shù)據(jù)類型十电。
4.6 大數(shù)值
如果基本的整數(shù)和浮點數(shù)精度不能夠滿足需求,那么可以使用java.math包中的兩個很有用的類:BigInteger
和BigDecimal
。
這兩個類可以處理包含任意長度數(shù)字序列的數(shù)值摆出。
- BigIntcger類實現(xiàn)了任意精度的整數(shù)運算朗徊,
- BigDecimal實現(xiàn)了任意精度的浮點數(shù)運算首妖。
使用靜態(tài)的valueOf方法可以將普通的數(shù)值轉換為大數(shù)值:
BigInteger bigInteger = BigInteger.valueOf(10);
BigDecimal bigDecimal = BigDecimal.valueOf(2.0);
遺憾的是偎漫,不能使用人們熟悉的算術運算符(如:+和*)處理大數(shù)值。而需要使用大數(shù) 值類中的add和multiply方法有缆。
4.6.1 BigInteger
BigIntcger類實現(xiàn)了任意精度的整數(shù)運算象踊。常用方法如下:
BigInteger方法名 | 含義 |
---|---|
static valueOf() | 將參數(shù)轉換為BigInteger |
add() | 相加 |
subtract() | 相減 |
multiply() | 相乘 |
divide() | 相除取整 |
remainder() | 取余 |
public static void main(String[] args) {
//int 轉為 BigInteger
BigInteger num1 = java.math.BigInteger.valueOf(100);
BigInteger num2 = java.math.BigInteger.valueOf(12);
//相加
BigInteger add = num1.add(num2);
System.out.println("相加:" + add);
//相減
BigInteger subtract = num1.subtract(num2);
System.out.println("相減:" + subtract);
//相乘
BigInteger multiply = num1.multiply(num2);
System.out.println("相乘:" + multiply);
//相除 取整
BigInteger divide = num1.divide(num2);
System.out.println("相除:" + divide);
//取摸|取余數(shù)
BigInteger remainder = num1.remainder(num2);
System.out.println("取余:" + remainder);
}
最終結果:
相加:112
相減:88
相乘:1200
相除:8
取余:4
4.6.1 BigDecimal
BigDecimal實現(xiàn)了任意精度的浮點數(shù)運算。常用方法如下:
BigDecimal方法名 | 含義 |
---|---|
static valueOf() | 將參數(shù)轉換為BigDecimal |
add() | 相加 |
subtract() | 相減 |
multiply() | 相乘 |
divide() | 相除取整 |
remainder() | 取余 |
public static void main(String[] args) {
//int 轉為 BigInteger
BigDecimal num1 = BigDecimal.valueOf(100.5);
BigDecimal num2 = BigDecimal.valueOf(12.3);
//相加
BigDecimal add = num1.add(num2);
System.out.println("相加:" + add);
//相減
BigDecimal subtract = num1.subtract(num2);
System.out.println("相減:" + subtract);
//相乘
BigDecimal multiply = num1.multiply(num2);
System.out.println("相乘:" + multiply);
//相除 保留兩位小數(shù),最后一位四舍五入棚壁。當然也可以使用其他模式
BigDecimal divide = num1.divide(num2,2, RoundingMode.UP);
System.out.println("相除兩位小數(shù)/四舍五入:" + divide);
//取摸|取余數(shù)
BigDecimal remainder = num1.remainder(num2);
System.out.println("取余:" + remainder);
}
最終結果:
相加:112.8
相減:88.2
相乘:1236.15
相除兩位小數(shù)/四舍五入:8.18
取余:2.1
五杯矩、Java運算符
Java提供了多種運算符來滿足正常的需求,我們可以將運算符分為以下幾類:
- 算術運算符
- 賦值運算符
- 比較運算符(關系運算符)
- 邏輯運算符
- 位運算符
- 三元運算符
5.1 算術運算符
運算符 | 運算 | 范例 | 結果 |
---|---|---|---|
+ | 正號 | +3 | 3 |
- | 負號 | b=4; -b | -4 |
+ | 加 | 5+5 | 10 |
- | 減 | 6-4 | 2 |
***** | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模 | 5%5 | 0 |
++ ++ | 自增(前):先運算后取值 自增(后):先取值后運算 | a=2;b=++a; a=2;b=a++; | a=3;b=3 a=3;b=2 |
- - - - | 自減(前):先運算后取值 自減(后):先取值后運算 | a=2;b=- -a a=2;b=a- - | a=1;b=1 a=1;b=2 |
+ | 字符串相加 | “He”+”llo” | “Hello” |
5.2 賦值運算符
運算符 | 運算 | 范例 | 結果 |
---|---|---|---|
= | 賦值 | b=5 | 5 |
+=, -=, *=, /=, %= | 計算完再賦值 | b = 5;b+=2 | 7 |
5.3 比較運算符(關系運算符)
運算符 | **運算 ** | 范例 | 結果 |
---|---|---|---|
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | false |
instanceof | 檢查是否是類的對象 | “Hello” instanceof String | true |
5.4 邏輯運算符
運算符 | 運算 | 范例 | 結果 |
---|---|---|---|
& | AND(與) | false & true | false |
| | OR(或) | false|true | true |
^ | XOR(異或) | true^false | true |
! | Not(非) | !true | false |
&& | AND(短路) | false&&true | false |
|| | OR(短路) | false||true | true |
5.5 三元運算符
三元運算符袖外,主要是根據(jù)條件表達式的不同史隆,選擇不能的結果
就類型if...else分支語句一樣,可以到達二選一結果曼验。
例如:成績大于等于60分表示<u>及格</u>泌射,否則就是<u>不及格</u>
//語法
(條件表達式)?表達式1:表達式2
-如果條件表達式為true,運算后的結果是表達式1;
-如果條件表達式為false,運算后的結果是表達式2鬓照;
//范例
int num1 = (100>1)?666:250;
因為100>1返回的是true,所以最終num1的結果是666
本博文由 IT蚱蜢哥 原創(chuàng)發(fā)布熔酷!歡迎轉載,注明出處豺裆!