Java核心基礎第2篇-Java基本語法

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類型。

Java數(shù)據(jù)類型

4.1 整型

Java各整型類型有固定的數(shù)據(jù)范圍和字段長度奠支,不受操作系統(tǒng)OS的影響馋辈,以保證Java程序的可移植性。
并且Java提供四種整型(byte,short,int,long)用于表示沒有小數(shù)部分的值倍谜,并且允許它們?yōu)樨摂?shù)迈螟。

mark

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的兩倍

mark

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ù)類型按容量大小排序為:


Java數(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包中的兩個很有用的類:BigIntegerBigDecimal

這兩個類可以處理包含任意長度數(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ā)布熔酷!歡迎轉載,注明出處豺裆!

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拒秘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子臭猜,更是在濱河造成了極大的恐慌躺酒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔑歌,死亡現(xiàn)場離奇詭異羹应,居然都是意外死亡,警方通過查閱死者的電腦和手機丐膝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門量愧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帅矗,你說我怎么就攤上這事偎肃。” “怎么了浑此?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵累颂,是天一觀的道長。 經(jīng)常有香客問我,道長紊馏,這世上最難降的妖魔是什么料饥? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮朱监,結果婚禮上岸啡,老公的妹妹穿的比我還像新娘。我一直安慰自己赫编,他們只是感情好巡蘸,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著擂送,像睡著了一般悦荒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嘹吨,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天搬味,我揣著相機與錄音,去河邊找鬼蟀拷。 笑死碰纬,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的匹厘。 我是一名探鬼主播嘀趟,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼愈诚!你這毒婦竟也來了她按?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤炕柔,失蹤者是張志新(化名)和其女友劉穎酌泰,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匕累,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡陵刹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了欢嘿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衰琐。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖炼蹦,靈堂內(nèi)的尸體忽然破棺而出羡宙,到底是詐尸還是另有隱情,我是刑警寧澤掐隐,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布狗热,位于F島的核電站钞馁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏匿刮。R本人自食惡果不足惜僧凰,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熟丸。 院中可真熱鬧训措,春花似錦、人聲如沸虑啤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狞山。三九已至,卻和暖如春叉寂,著一層夾襖步出監(jiān)牢的瞬間萍启,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工屏鳍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留勘纯,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓钓瞭,卻偏偏與公主長得像驳遵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子山涡,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容