Java入門系列(一)

![image](http://www.zoncare.com/images/index_r2_c.jpg)

---

# Java入門系列(一)

## 主要內(nèi)容

* 基礎語法

* 基本數(shù)據(jù)類型

* 修飾符

## 基礎語法

第一個例子

```java

public class HelloWorld {

/* 第一個Java程序

* 它將打印字符串 Hello World

*/

public static void main(String []args) {

System.out.println("Hello World"); // 打印 Hello World

}

}

```

### 基本語法

- 大小寫敏感:Java是大小寫敏感的劣针,這就意味著標識符Hello與hello是不同的仆百。

- 類名:對于所有的類來說再膳,類名的首字母應該大寫。如果類名由若干單詞組成撮奏,那么每個單詞的首字母應該大寫,例如 MyFirstJavaClass 被饿。

- 方法名:所有的方法名都應該以小寫字母開頭医咨。如果方法名含有若干單詞,則后面的每個單詞首字母大寫灰追。

源文件名:源文件名必須和類名相同堵幽。當保存文件的時候,你應該使用類名作為文件名保存(切記Java是大小寫敏感的)弹澎,文件名的后綴為.java朴下。(如果文件名和類名不相同則會導致編譯錯誤)。

- 主方法入口:所有的Java 程序由public static void main(String []args)方法開始執(zhí)行苦蒿。

### 標識符

Java所有的組成部分都需要名字殴胧。類名、變量名以及方法名都被稱為標識符。

關于Java標識符团滥,有以下幾點需要注意:

- 所有的標識符都應該以字母(A-Z或者a-z),美元符($)竿屹、或者下劃線(_)開始

- 首字符之后可以是任何字符的組合

- 關鍵字不能用作標識符

- 標識符是大小寫敏感的

- 合法標識符舉例:age、$salary灸姊、_value拱燃、__1_value

- 非法標識符舉例:123abc、-salary

### 修飾符

像其他語言一樣力惯,Java可以使用修飾符來修飾類中方法和屬性碗誉。主要有兩類修飾符:

- 可訪問修飾符 : default, public , protected, private

- 不可訪問修飾符 : final, abstract, strictfp

### 變量

- 局部變量

- 類變量(靜態(tài)變量)

- 成員變量(非靜態(tài)變量)

### 枚舉

Java 5.0引入了枚舉,枚舉限制變量只能是預先設定好的值父晶。使用枚舉可以減少代碼中的bug诗充。

例如,我們?yōu)楣暝O計一個程序诱建,它將限制果汁為小杯、中杯碟绑、大杯俺猿。這就意味著它不允許顧客點除了這三種尺寸外的果汁。

```java

class FreshJuice {

enum FreshJuiceSize{ SMALL, MEDUIM, LARGE }

FreshJuiceSize size;

}

public class FreshJuiceTest {

public static void main(String []args){

FreshJuice juice = new FreshJuice();

juice.size = FreshJuice. FreshJuiceSize.MEDUIM ;

}

}

```

### 關鍵字

關鍵字 | 描述

---|---

abstract | 抽象方法格仲,抽象類的修飾符

assert | 斷言條件是否滿足

boolean | 布爾數(shù)據(jù)類型

break | 跳出循環(huán)或者label代碼段

byte | 8-bit 有符號數(shù)據(jù)類型

case | switch語句的一個條件

catch | 和try搭配撲捉異常信息

char | 16-bit Unicode字符數(shù)據(jù)類型

class | 定義類

const | 未使用

continue | 不執(zhí)行循環(huán)體剩余部分

default | switch語句中的默認分支

do | 循環(huán)語句押袍,循環(huán)體至少會執(zhí)行一次

double | 64-bit雙精度浮點數(shù)

else | if條件不成立時執(zhí)行的分支

enum | 枚舉類型

extends | 表示一個類是另一個類的子類

final | 表示一個值在初始化之后就不能再改變了,表示方法不能被重寫,或者一個類不能有子類

finally | 為了完成執(zhí)行的代碼而設計的凯肋,主要是為了程序的健壯性和完整性谊惭,無論有沒有異常發(fā)生都執(zhí)行代碼。

float | 32-bit單精度浮點數(shù)

for | for循環(huán)語句

goto | 未使用

if | 條件語句

implements | 表示一個類實現(xiàn)了接口

import | 導入類

instanceof | 測試一個對象是否是某個類的實例

int | 32位整型數(shù)

interface | 接口侮东,一種抽象的類型圈盔,僅有方法和常量的定義

long | 64位整型數(shù)

native | 表示方法用非java代碼實現(xiàn)

new | 分配新的類實例

package | 一系列相關類組成一個包

private | 表示私有字段,或者方法等悄雅,只能從類內(nèi)部訪問

protected | 表示字段只能通過類或者其子類訪問,子類或者在同一個包內(nèi)的其他類

public | 表示共有屬性或者方法

return | 方法返回值

short | 16位數(shù)字

static | 表示在類級別定義驱敲,所有實例共享的

strictfp | 浮點數(shù)比較使用嚴格的規(guī)則

super | 表示基類

switch | 選擇語句

synchronized | 表示同一時間只能由一個線程訪問的代碼塊

this | 表示調(diào)用當前實例或者調(diào)用另一個構造函數(shù)

throw | 拋出異常

throws | 定義方法可能拋出的異常

transient | 修飾不要序列化的字段

try | 表示代碼塊要做異常處理或者和finally配合表示是否拋出異常都執(zhí)行finally中的代碼

void | 標記方法不返回任何值

volatile | 標記字段可能會被多個線程同時訪問,而不做同步

while | while循環(huán)

## 基本數(shù)據(jù)類型

Java的兩大數(shù)據(jù)類型:

- 內(nèi)置數(shù)據(jù)類型

- 引用數(shù)據(jù)類型

### 內(nèi)置數(shù)據(jù)類型

Java語言提供了八種基本類型宽闲。六種數(shù)字類型(四個整數(shù)型众眨,兩個浮點型),一種字符類型容诬,還有一種布爾型娩梨。

#### byte:

- byte數(shù)據(jù)類型是8位、有符號的览徒,以二進制補碼表示的整數(shù)狈定;

- 最小值是-128(-2^7);

- 最大值是127(2^7-1)习蓬;

- 默認值是0掸冤;

- byte類型用在大型數(shù)組中節(jié)約空間厘托,主要代替整數(shù),因為byte變量占用的空間只有int類型的四分之一稿湿;

- 例子:byte a = 100铅匹,byte b = -50。

#### short:

- short數(shù)據(jù)類型是16位饺藤、有符號的以二進制補碼表示的整數(shù)

- 最小值是-32768(-2^15)包斑;

- 最大值是32767(2^15 - 1);

- Short數(shù)據(jù)類型也可以像byte那樣節(jié)省空間涕俗。一個short變量是int型變量所占空間的二分之一罗丰;

- 默認值是0;

- 例子:short s = 1000再姑,short r = -20000萌抵。

#### int:

- int數(shù)據(jù)類型是32位、有符號的以二進制補碼表示的整數(shù)元镀;

- 最小值是-2,147,483,648(-2^31)绍填;

- 最大值是2,147,483,647(2^31 - 1);

- 一般地整型變量默認為int類型栖疑;

- 默認值是0讨永;

- 例子:int a = 100000, int b = -200000。

#### long:

- long數(shù)據(jù)類型是64位遇革、有符號的以二進制補碼表示的整數(shù)卿闹;

- 最小值是-9,223,372,036,854,775,808(-2^63);

- 最大值是9,223,372,036,854,775,807(2^63 -1)萝快;

- 這種類型主要使用在需要比較大整數(shù)的系統(tǒng)上锻霎;

- 默認值是0L;

- 例子: long a = 100000L揪漩,Long b = -200000L量窘。

#### float:

- float數(shù)據(jù)類型是單精度、32位氢拥、符合IEEE 754標準的浮點數(shù)蚌铜;

- float在儲存大型浮點數(shù)組的時候可節(jié)省內(nèi)存空間;

- 默認值是0.0f嫩海;

- 浮點數(shù)不能用來表示精確的值冬殃,如貨幣;

- 例子:float f1 = 234.5f叁怪。

#### double:

- double數(shù)據(jù)類型是雙精度审葬、64位、符合IEEE 754標準的浮點數(shù);

- 浮點數(shù)的默認類型為double類型涣觉;

- double類型同樣不能表示精確的值痴荐,如貨幣;

- 默認值是0.0d官册;

- 例子:double d1 = 123.4生兆。

#### boolean:

- boolean數(shù)據(jù)類型表示一位的信息;

- 只有兩個取值:true和false膝宁;

- 這種類型只作為一種標志來記錄true/false情況鸦难;

- 默認值是false;

- 例子:boolean one = true员淫。

#### char:

- char類型是一個單一的16位Unicode字符合蔽;

- 最小值是’\u0000’(即為0);

- 最大值是’\uffff’(即為65,535)介返;

- char數(shù)據(jù)類型可以儲存任何字符拴事;

- 例子:char letter = ‘A’。

### 引用類型

- 在Java中圣蝎,引用類型的變量非常類似于C/C++的指針刃宵。引用類型指向一個對象,指向?qū)ο蟮淖兞渴且米兞客背埂_@些變量在聲明時被指定為一個特定的類型,比如Employee鞍陨、Pubby等步淹。變量一旦聲明后,類型就不能被改變了诚撵。

- 對象缭裆、數(shù)組都是引用數(shù)據(jù)類型。

- 所有引用類型的默認值都是null寿烟。

- 一個引用變量可以用來引用與任何與之兼容的類型消略。

- 例子:Site site = new Site("Runoob")嗡贺。

### Java常量

常量在程序運行時,不會被修改的量。

在 Java 中使用 final 關鍵字來修飾常量巫俺,聲明方式和變量類似:

```java

final double PI = 3.1415927;

```

雖然常量名也可以用小寫,但為了便于識別锄贼,通常使用大寫字母表示常量曲稼。

字面量可以賦給任何內(nèi)置類型的變量。例如:

```java

byte a = 68;

char a = 'A'

```

byte待锈、int漠其、long、和short都可以用十進制、16進制以及8進制的方式來表示和屎。

當使用常量的時候拴驮,前綴0?表示8進制,而前綴0x代表16進制柴信。例如:

```java

int decimal = 100;

int octal = 0144;

int hexa =? 0x64;

```

和其他語言一樣套啤,Java的字符串常量也是包含在兩個引號之間的字符序列。下面是字符串型字面量的例子:

```java

"Hello World"

"two\nlines"

"\"This is in quotes\""

```

字符串常量和字符常量都可以包含任何Unicode字符颠印。例如:

```java

char a = '\u0001';

String a = "\u0001";

```

Java語言支持一些特殊的轉(zhuǎn)義字符序列纲岭。

符號 | 字符含義

--- | ---

\n | 換行 (0x0a)

\r | 回車 (0x0d)

\f | 換頁符(0x0c)

\b | 退格 (0x08)

\s | 空格 (0x20)

\t | 制表符

\" | 雙引號

\' | 單引號

\\ | 反斜杠

\ddd | 八進制字符 (ddd)

\uxxxx | 16進制Unicode字符 (xxxx)

## 修飾符

Java語言提供了很多修飾符,主要分為以下兩類:

- 訪問修飾符

- 非訪問修飾符

-

修飾符用來定義類线罕、方法或者變量止潮,通常放在語句的最前端。我們通過下面的例子來說明:

```java

public class className {

// ...

}

private boolean myFlag;

static final double weeks = 9.5;

protected static final int BOXWIDTH = 42;

public static void main(String[] arguments) {

// 方法體

}

```

### 訪問控制修飾符

Java中钞楼,可以使用訪問控制符來保護對類喇闸、變量、方法和構造方法的訪問询件。Java支持4種不同的訪問權限燃乍。

- 默認的,也稱為 default宛琅,在同一包內(nèi)可見刻蟹,不使用任何修飾符。

- 私有的嘿辟,以 private 修飾符指定舆瘪,在同一類內(nèi)可見。

- 共有的红伦,以 public 修飾符指定英古,對所有類可見。

- 受保護的昙读,以 protected 修飾符指定召调,對同一包內(nèi)的類和所有子類可見。

#### 訪問控制和繼承

請注意以下方法繼承的規(guī)則:

- 父類中聲明為public的方法在子類中也必須為public蛮浑。

- 父類中聲明為protected的方法在子類中要么聲明為protected唠叛,要么聲明為public。不能聲明為private沮稚。

- 父類中聲明為private的方法玻墅,不能夠被繼承。

### 非訪問修飾符

為了實現(xiàn)一些其他的功能壮虫,Java也提供了許多非訪問修飾符澳厢。

- static修飾符环础,用來創(chuàng)建類方法和類變量。

- Final修飾符剩拢,用來修飾類线得、方法和變量,final修飾的類不能夠被繼承徐伐,修飾的方法不能被繼承類重新定義贯钩,修飾的變量為常量,是不可修改的办素。

- Abstract修飾符角雷,用來創(chuàng)建抽象類和抽象方法。

- Synchronized和volatile修飾符性穿,主要用于線程的編程勺三。

#### Static修飾符

- 靜態(tài)變量:

Static關鍵字用來聲明獨立于對象的靜態(tài)變量,無論一個類實例化多少對象需曾,它的靜態(tài)變量只有一份拷貝吗坚。 靜態(tài)變量也被成為類變量。局部變量不能被聲明為static變量呆万。

- 靜態(tài)方法:

Static關鍵字用來聲明獨立于對象的靜態(tài)方法商源。靜態(tài)方法不能使用類的非靜態(tài)變量。靜態(tài)方法從參數(shù)列表得到數(shù)據(jù)谋减,然后計算這些數(shù)據(jù)牡彻。

#### Final修飾符

##### Final變量:

Final變量能被顯式地初始化并且只能初始化一次。被聲明為final的對象的引用不能指向不同的對象出爹。但是final對象里的數(shù)據(jù)可以被改變庄吼。也就是說final對象的引用不能改變,但是里面的值可以改變以政。

Final修飾符通常和static修飾符一起使用來創(chuàng)建類常量霸褒。

實例:

```java

public class Test{

final int value = 10;

// 下面是聲明常量的實例

public static final int BOXWIDTH = 6;

static final String TITLE = "Manager";

public void changeValue(){

value = 12; //將輸出一個錯誤

}

}

```

##### Final方法

類中的Final方法可以被子類繼承伴找,但是不能被子類修改盈蛮。

聲明final方法的主要目的是防止該方法的內(nèi)容被修改。

如下所示技矮,使用final修飾符聲明方法抖誉。

```java

public class Test{

public final void changeName(){

// 方法體

}

}

```

##### Final類

Final類不能被繼承,沒有類能夠繼承final類的任何特性衰倦。

實例:

```java

public final class Test {

// 類體

}

```

#### Abstract修飾符

##### 抽象類:

抽象類不能用來實例化對象袒炉,聲明抽象類的唯一目的是為了將來對該類進行擴充。

一個類不能同時被abstract和final修飾樊零。如果一個類包含抽象方法我磁,那么該類一定要聲明為抽象類孽文,否則將出現(xiàn)編譯錯誤。

抽象類可以包含抽象方法和非抽象方法夺艰。

實例:

```java

abstract class Caravan{

private double price;

private String model;

private String year;

public abstract void goFast(); //抽象方法

public abstract void changeColor();

}

```

##### 抽象方法

抽象方法是一種沒有任何實現(xiàn)的方法芋哭,該方法的的具體實現(xiàn)由子類提供。抽象方法不能被聲明成final和strict郁副。

任何繼承抽象類的子類必須實現(xiàn)父類的所有抽象方法减牺,除非該子類也是抽象類。

如果一個類包含若干個抽象方法存谎,那么該類必須聲明為抽象類拔疚。抽象類可以不包含抽象方法。

抽象方法的聲明以分號結(jié)尾既荚,例如:public abstract sample();

實例:

```java

public abstract class SuperClass{

abstract void m(); //抽象方法

}

class SubClass extends SuperClass{

//實現(xiàn)抽象方法

void m(){

.........

}

}

```

#### Synchronized修飾符

Synchronized關鍵字聲明的方法同一時間只能被一個線程訪問稚失。Synchronized修飾符可以應用于四個訪問修飾符。

實例:

```java

public synchronized void showDetails(){

.......

}

```

#### Transient修飾符

序列化的對象包含被transient修飾的實例變量時固以,java虛擬機(JVM)跳過該特定的變量墩虹。

該修飾符包含在定義變量的語句中,用來預處理類和變量的數(shù)據(jù)類型憨琳。

實例:

```java

public transient int limit = 55;? // will not persist

public int b; // will persist

```

#### Volatile修飾符

Volatile 修飾的成員變量在每次被線程訪問時诫钓,都強制從共享內(nèi)存中重新讀取該成員變量的值。而且篙螟,當成員變量發(fā)生變化時菌湃,會強制線程將變化值回寫到共享內(nèi)存。這樣在任何時刻遍略,兩個不同的線程總是看到某個成員變量的同一個值惧所。

一個volatile對象引用可能是null。

實例:

```java

public class MyRunnable implements Runnable

{

private volatile boolean active;

public void run()

{

active = true;

while (active) // 第一行

{

// 代碼

}

}

public void stop()

{

active = false; // 第二行

}

}

```

通常情況下绪杏,在一個線程調(diào)用 run() 方法(在 Runnable 開啟的線程)下愈,在另一個線程調(diào)用 stop() 方法。 如果 第一行 中緩沖區(qū)的 active 值被使用蕾久,那么在 第二行 的 active 值為 false 時循環(huán)不會停止势似。

但是以上代碼中我們使用了 volatile 修飾 active,所以該循環(huán)會停止僧著。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末履因,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子盹愚,更是在濱河造成了極大的恐慌栅迄,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皆怕,死亡現(xiàn)場離奇詭異毅舆,居然都是意外死亡西篓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門憋活,熙熙樓的掌柜王于貴愁眉苦臉地迎上來污淋,“玉大人,你說我怎么就攤上這事余掖〈绫” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵盐欺,是天一觀的道長赁豆。 經(jīng)常有香客問我,道長冗美,這世上最難降的妖魔是什么魔种? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮粉洼,結(jié)果婚禮上节预,老公的妹妹穿的比我還像新娘。我一直安慰自己属韧,他們只是感情好安拟,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宵喂,像睡著了一般糠赦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锅棕,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天拙泽,我揣著相機與錄音,去河邊找鬼裸燎。 笑死顾瞻,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的德绿。 我是一名探鬼主播荷荤,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼脆炎!你這毒婦竟也來了梅猿?” 一聲冷哼從身側(cè)響起氓辣,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秒裕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后钞啸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體几蜻,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡喇潘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了梭稚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颖低。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖弧烤,靈堂內(nèi)的尸體忽然破棺而出忱屑,到底是詐尸還是另有隱情,我是刑警寧澤暇昂,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布莺戒,位于F島的核電站,受9級特大地震影響急波,放射性物質(zhì)發(fā)生泄漏从铲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一澄暮、第九天 我趴在偏房一處隱蔽的房頂上張望名段。 院中可真熱鬧,春花似錦泣懊、人聲如沸伸辟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽自娩。三九已至,卻和暖如春渠退,著一層夾襖步出監(jiān)牢的瞬間忙迁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工碎乃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姊扔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓梅誓,卻偏偏與公主長得像恰梢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子梗掰,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

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

  • 1. Java基礎部分 基礎部分的順序:基本語法嵌言,類相關的語法,內(nèi)部類的語法及穗,繼承相關的語法摧茴,異常的語法,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • Win7下如何打開DOS控制臺埂陆? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,599評論 4 12
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理苛白,服務發(fā)現(xiàn)娃豹,斷路器,智...
    卡卡羅2017閱讀 134,663評論 18 139
  • 姓名:冉喬琪~公司:天興醫(yī)藥 【日精進打卡第※138※天】 【知~學習】 《六項精進》2遍 共356遍 《大學》1...
    小小新醬閱讀 196評論 0 0
  • real_chy閱讀 264評論 0 0