Java基本語法


1.java語言發(fā)展史

·詹姆斯·高斯林

·SUN-(斯坦福大學(xué)網(wǎng)絡(luò)公司)

·1995年5月23日傻粘,java語言誕生

·1996年1月 JDK1.0

·1997年2月 JDK2.0

·1998年12月 JDK1.2(將java分成J2SE,J2EE,J2ME)

·2000年5月 J2SE1.3

·2002年2月 J2SE1.4

·2004年10月 JDK1.5(改名JavaSE5.0,JavaEE,JavaME)

·2006年12月 JavaSE6.0

·2009年04月20日臭笆,甲骨文(oracle)74億美元收購sun

·2011年7月 JavaSE7.0

·2014年3月JavaSE8.0


2.Java語言跨平臺(tái)原理

·平臺(tái):指的是操作系統(tǒng)(windows,linux,mac)

·跨平臺(tái):Java程序可以在任意操作系統(tǒng)上運(yùn)行,一次編寫到處運(yùn)行

·原理:實(shí)現(xiàn)跨平臺(tái)需要依賴Java的虛擬機(jī)JVM(Java Virtual Machine)


3.JRE和JDK

JRE(Java Runtime Environment java運(yùn)行環(huán)境)

包括java虛擬機(jī)(JVM)和java程序所需的核心類庫等蝙搔,如果想要運(yùn)行一個(gè)開發(fā)好的Java程序,計(jì)算機(jī)中只需安裝JRE即可

JDK(Java Develpment Kit Java開發(fā)工具包)

JDK是提供給Java開發(fā)人員使用的滴铅,其中包含了java的開發(fā)工具烘苹,也包括JRE。所以安裝了JDK,就不用在單獨(dú)安裝JREl .其中的開發(fā)工具:編譯工具(java.exe)運(yùn)行工具(java.exe)等--->使用JDK開發(fā)完成的java程序评雌,交給JRE去運(yùn)行


4.HelloWorld案例

源文件(編寫)---->編輯器---->字節(jié)碼文件---->解釋器------>結(jié)果

HelloWorld案例編寫

·首先定義一個(gè)類

-public class 類名

·在類定義后加上一對大括號(hào)

-{}

·在大括號(hào)中間添加一個(gè)主方(main)法/函數(shù)

-public static void main(String [] args){}

·在主方法的大括號(hào)中間添加一行輸出語句

-system.out.println("HelloWorld");

完整代碼

public class HelloWorld{

??? public static void main(String [] args){

??????? System.out.println("HelloWorld")树枫;

??? }

}

(文件路徑:../HelloWorld.java)

HelloWorld 案例編輯

cmd中

進(jìn)入HelloWorld.java文件的目錄

輸入:

javac HelloWorld.java

進(jìn)行編譯

輸入:

java HelloWorld

進(jìn)行運(yùn)行



5.注釋

注釋:用于解釋說明程序的文字

分類:單行 、多行

作用:解釋說明程序景东,提高程序的閱讀性

//這是單行注釋

/*

這是多行注釋

*/

例子:

//這是一個(gè)Helloworld的類

public class HelloWorld{

???? public static void main(String [] args){

???????? /*

???????? ???????? 這是多行注釋

???????? */

???????? System.out.println("HelloWorld"); //在控制臺(tái)輸出Hellow

???? }

}

運(yùn)行結(jié)果


注釋內(nèi)的內(nèi)容不顯示

6.關(guān)鍵字

被java語言賦予了特定含義的單詞

特點(diǎn):

??????? A:組成關(guān)鍵字的字母全部小寫

?????? B:常見的代碼編輯器對關(guān)鍵字有特殊的顏色標(biāo)記


關(guān)鍵字含義

abstract:表明類或者成員方法具有抽象屬性

asser:t斷言,用來進(jìn)行程序調(diào)試

boolean:基本數(shù)據(jù)類型之一奔誓,聲明布爾類型的關(guān)鍵字

break:提前跳出一個(gè)塊

byte:基本數(shù)據(jù)類型之一斤吐,字節(jié)類型

case:用在switch語句之中,表示其中的一個(gè)分支

catch:用在異常處理中厨喂,用來捕捉異常

char:基本數(shù)據(jù)類型之一和措,字符類型

class:聲明一個(gè)類

const:保留關(guān)鍵字,沒有具體含義

continue:回到一個(gè)塊的開始處

default:默認(rèn)蜕煌,例如派阱,用在switch語句中,表明一個(gè)默認(rèn)的分支斜纪。Java8 中也作用于聲明接口函數(shù)的默認(rèn)實(shí)現(xiàn)

do:用在do-while循環(huán)結(jié)構(gòu)中

double:基本數(shù)據(jù)類型之一贫母,雙精度浮點(diǎn)數(shù)類型

else:用在條件語句中,表明當(dāng)條件不成立時(shí)的分支

enum:枚舉

extends:表明一個(gè)類型是另一個(gè)類型的子類型盒刚。對于類腺劣,可以是另一個(gè)類或者抽象類;對于接口因块,可以是另一個(gè)接口

final:用來說明最終屬性橘原,表明一個(gè)類不能派生出子類,或者成員方法不能被覆蓋涡上,或者成員域的值不能被改變趾断,用來定義常量

finally:用于處理異常情況,用來聲明一個(gè)基本肯定會(huì)被執(zhí)行到的語句塊

float:基本數(shù)據(jù)類型之一吩愧,單精度浮點(diǎn)數(shù)類型

for:一種循環(huán)結(jié)構(gòu)的引導(dǎo)詞

goto:保留關(guān)鍵字芋酌,沒有具體含義

if:條件語句的引導(dǎo)詞

implements:表明一個(gè)類實(shí)現(xiàn)了給定的接口

import:表明要訪問指定的類或包

instanceof:用來測試一個(gè)對象是否是指定類型的實(shí)例對象

int:基本數(shù)據(jù)類型之一,整數(shù)類型

interface:接口

long:基本數(shù)據(jù)類型之一耻警,長整數(shù)類型

native:用來聲明一個(gè)方法是由與計(jì)算機(jī)相關(guān)的語言(如C/C++/FORTRAN語言)實(shí)現(xiàn)的

new:用來創(chuàng)建新實(shí)例對象

package:包

private:一種訪問控制方式:私用模式

protected:一種訪問控制方式:保護(hù)模式

public:一種訪問控制方式:共用模式

return:從成員方法中返回?cái)?shù)據(jù)

short:基本數(shù)據(jù)類型之一,短整數(shù)類型

static:表明具有靜態(tài)屬性

strictfp:用來聲明FP_strict(單精度或雙精度浮點(diǎn)數(shù))表達(dá)式遵循IEEE 754算術(shù)規(guī)范

super:表明當(dāng)前對象的父類型的引用或者父類型的構(gòu)造方法

switch:分支語句結(jié)構(gòu)的引導(dǎo)詞

synchronized:表明一段代碼需要同步執(zhí)行

this:指向當(dāng)前實(shí)例對象的引用

throw:拋出一個(gè)異常

throws:聲明在當(dāng)前定義的成員方法中所有需要拋出的異常

transient:聲明不用序列化的成員域

try:嘗試一個(gè)可能拋出異常的程序塊

void:聲明當(dāng)前成員方法沒有返回值

volatile:表明兩個(gè)或者多個(gè)變量必須同步地發(fā)生變化

while:用在循環(huán)結(jié)構(gòu)中

7.常量

在程序的執(zhí)行過程中隔嫡,其值不可以發(fā)生改變的量

常量分類:

A:字符串常量 ? ? "HelloWorld"

B:整數(shù)常量 ? ? ? ? 12甸怕,-23

C:小數(shù)常量???????? 12.23

D:字符常量????????? 'a','e'

E:布爾常量 ? ? ?? true,false

F:空常量?????????? null

例子:


public class changliang{

???? public static void main(String [] args){

???????? //字符串常量

???????? System.out.println("HelloWold");

???????? //整數(shù)常量

???????? System.out.println(12);

???????? System.out.println(-23);

???????? //小數(shù)常量

???????? System.out.println(12.23);

???????? //字符常量

???????? System.out.println('a');

???????? System.out.println('0');

???????? //布爾常量

???????? System.out.println(true);

???????? System.out.println(false);

???? }

}

運(yùn)行結(jié)果:


8.變量

變量:是內(nèi)存中的一小塊區(qū)域,在程序的執(zhí)行過程中腮恩,其值可以在一定范圍內(nèi)發(fā)生改變

組成

???? A:對區(qū)域有限定------>用數(shù)據(jù)類型來限定

???? B:必須對區(qū)域給一個(gè)名稱----->變量名

???? C:區(qū)域必須內(nèi)必須有內(nèi)容------>初始化值

定義格式

???? 數(shù)據(jù)類型 變量名 = 初始化值

9.數(shù)據(jù)變量

數(shù)據(jù)類型:Java是一種強(qiáng)類型語言梢杭,針對每一種數(shù)據(jù)都給出明確的數(shù)據(jù)類型。

數(shù)據(jù)類型分類:

A:整數(shù)?????????? 占用字節(jié)數(shù)

? byte???????? ????????? 1

? short??????? ????????? 2

? int???????????? ???????? 4

? long ?????????? ?????? 8

B:浮點(diǎn)數(shù)

? float ?????????? ?????? 4

? double ?????????? ?? 8

C:字符

? char ?????????? ?????? 2

D:布爾

? boolean?????????? ? 1

注意:

A:整數(shù)默認(rèn)是int類型秸滴,浮點(diǎn)數(shù)默認(rèn)是double類型

B:定義long類型數(shù)據(jù)的時(shí)候武契,要加L或者l,建議加L定義float類型的時(shí)候要加F或者f荡含,建議加F

例子:

/*

???? 變量的定義格式:

???? 數(shù)據(jù)類型 變量名 = 初始化值

???? 數(shù)據(jù)類型:

???? ???? byte,short,long,float,double,boolean

???? 注意:

???? ???? 定義long類型的變量時(shí)咒唆,最好直接加L

???? ???? 定義float類型的變量時(shí),最好直接加F

*/

public class VariableDemo{

???? public static void main(String [] args){

???? ???? //定義byte類型的變量

???? ???? byte b =10;

???? ???? System.out.println(10);

???? ???? System.out.println(b);

???? ???? //定義short類型的變量

???? ???? short s = 100;

???? ???? System.out.println(s);

???? ???? //定義int類型的變量

???? ???? int i = 1000;

???? ???? System.out.println(i);

???? ???? //定義long類型的變量

???? ???? long l = 10000000000000L;

???? ???? System.out.println(l);

???? ???? //定義float類型的變量

???? ???? float f = 12.34F;

???? ???? System.out.println(f);

???? ???? //定義char類型的變量

???? ???? char c = 'a';

???? ???? System.out.println(c);

???? ???? //定義boolean類型的變量

???? ???? boolean bb = true;

???? ???? System.out.println(bb);

???? }

}

運(yùn)行結(jié)果:


例子2:

/*

???? 變量定義的注意事項(xiàng):

????????A:變量未賦值释液,不能直接使用

????????B:變量只在它所屬的范圍內(nèi)有效

????????????變量屬于它所在的那塊大括

????????C:一行上可以定義多個(gè)變量全释,但不建議

*/

public class VariableDemo2{

????public static void main(String [] args){

????????//定義一個(gè)變量

????????int a = 10;

????????System.out.println(a);

????????int b ;

????????//System.out.println(b);? //----這里未賦值前使用變量,是錯(cuò)誤的

????????b = 20;

????????System.out.println(b);

????????{

????????????//代碼塊

????????????int c = 30;

????????????System.out.println(c);

????????}

????????//System.out.println(c); //-----這里的c是不存在的误债,因?yàn)樽兞恐辉谒鶎俚姆秶鷥?nèi)有效

????????/*????int aa,bb;

????????????aa = 10;

????????????bb = 20;

????????????System.out.println(aa);

????????????System.out.println(bb);

????????????//但是不建議這么寫

????????*/

????????//這么寫比上面的寫法清晰浸船,和規(guī)范

????????int aa = 10;

????????int bb = 20;

????????System.out.println(aa);

????????System.out.println(bb);

?????? }

}

運(yùn)行結(jié)果:


10.標(biāo)識(shí)符

標(biāo)識(shí)符:就是用來給包,類寝蹈,方法李命,變量起名字的符號(hào)

組成規(guī)則:

???? A:unicode字符:

???? ???? 數(shù)字字符,英文大小寫字母箫老,漢字(不建議使用)

???? B:下劃線_

???? C:美元符號(hào)$

注意事項(xiàng):

???? A:不能以數(shù)字開頭

???? B:不用以java中的關(guān)鍵字命名

常見命名規(guī)則:

???? A:基本要求----->見名知意

???? B:常見的命名

? ? ???? a,包(其實(shí)是文件夾封字,用于對類進(jìn)行管理)

???? ???? ???? 全部小寫,多級(jí)包.隔開

? ? ???? b,類

???? ???? ???? 一個(gè)單詞首字母大寫? eg:Student,Car

???? ???? ???? 多個(gè)單詞每個(gè)單詞的首字符大寫?? eg:HelloWorld

? ???? c,方法和變量

???? ???? 一個(gè)單詞首字母小寫? eg:age,show()

???? ???? 多個(gè)單詞組成從第二個(gè)單詞開始每個(gè)首字母大寫? eg:maxAge,getAge()

11.類型轉(zhuǎn)換

當(dāng)數(shù)據(jù)類型不一樣時(shí)耍鬓,將會(huì)發(fā)生類型轉(zhuǎn)換

自動(dòng)類型轉(zhuǎn)換(隱式)

???? 1.特點(diǎn):代碼不需要進(jìn)行特殊處理阔籽,自動(dòng)轉(zhuǎn)換

???? 2.規(guī)則:數(shù)據(jù)范圍從下到大


例子:

public class DataTypeDemo{

???? public static void main(String[] args){

???? ???? System.out.println(1024);//這就是一個(gè)整數(shù),默認(rèn)就是int類型

???? ???? System.out.println(3.14);//這就是一個(gè)浮點(diǎn)數(shù)界斜,默認(rèn)就是double類型

???? ???? //左邊是long類型仿耽,右邊是默認(rèn)的int類型,左右不一樣

???? ???? //一個(gè)等號(hào)代表賦值各薇,將右側(cè)的int常量项贺,交給左側(cè)的long變量進(jìn)行存儲(chǔ)

???? ???? //這一行代碼發(fā)生了自動(dòng)類型轉(zhuǎn)換

???? ???? long num1 = 100;

???? ???? System.out.println(num1);//100

???? ???? //左側(cè)是double類型,右側(cè)是float類型峭判,左右不一樣

???? ???? //float ---->double,符合從小到大的規(guī)則

???? ???? //也發(fā)生了自動(dòng)類型轉(zhuǎn)換

???? ???? double num2 = 2.5F;

???? ???? System.out.println(num2);//2.5

???? ???? //左側(cè)是float類型开缎,右側(cè)是long類型寞蚌,左右不一樣

???? ???? //long--->float ,范圍是float更大一些协怒,符合從小到大的規(guī)則

???? ???? //也發(fā)生了自動(dòng)類型轉(zhuǎn)換

???? ???? float num3 = 30L;

???? ???? System.out.println(num3);

???? }

}

運(yùn)行結(jié)果:


強(qiáng)制類型轉(zhuǎn)換(顯式)

???? 1.特點(diǎn):代碼需要進(jìn)行特殊的格式處理,不能自動(dòng)完成

???? 2.格式:范圍小的類型 范圍小的變量名 = (范圍小的類型)原本范圍大的類型

注意事項(xiàng):

???? 1.強(qiáng)制類型轉(zhuǎn)換一般不推薦使用扒怖,因?yàn)橛锌赡馨l(fā)生精度損失疗认、數(shù)據(jù)溢出

???? 2.byte/short/char這三種類型都可以發(fā)生數(shù)學(xué)運(yùn)算完残,例如加法‘+’

???? 3.byte/short/char這三種類型在運(yùn)算的時(shí)候伏钠,都會(huì)被首先提升成int類型,再進(jìn)行運(yùn)算

???? 4.boolean類型不能發(fā)生數(shù)據(jù)類型轉(zhuǎn)換

例子:

public class DataTypeDemo2{

???? public static void main(String[] args){

???? ???? //左邊是int類型谨设,右邊是long類型熟掂,不一樣

???? ???? //long-->int,不是從小到大

???? ???? //不能發(fā)生強(qiáng)制類型轉(zhuǎn)換

???? ???? //格式:范圍小的類型 范圍小的變量名 = (范圍小的類型)原本范圍大的類型

???? ???? int num = (int)100L;

???? ???? System.out.println(num);

???? ???? //long強(qiáng)制轉(zhuǎn)換成int類型

???? ???? int num2 = (int)6000000000L;

???? ???? System.out.println(num2);//1705032704---->數(shù)據(jù)溢出

???? ???? //double--->int ,強(qiáng)制類型轉(zhuǎn)換

???? ???? int num3 = (int)3.99;

???? ???? System.out.println(num3);//3----->精度損失,這不是四舍五入,而是所有的小數(shù)位被舍

???? ???? //棄

???? ???? char zifu1 = 'A';//這是一個(gè)字符變量扎拣,里面是大寫字母A

???? ???? System.out.println(zifu1+1);//66赴肚,也就是大寫字母A也被當(dāng)做65進(jìn)行運(yùn)算

???? ???? //計(jì)算機(jī)的底層會(huì)用一個(gè)數(shù)字(二進(jìn)制)來表示字符A,也就是65

???? ???? //一旦char類型進(jìn)行數(shù)學(xué)運(yùn)算二蓝,那么字符會(huì)按照一定的規(guī)則翻譯成一個(gè)數(shù)字

???? ???? byte num4 = 40;//注意:右側(cè)的數(shù)值大小不能超過右側(cè)的類型范圍

???? ???? byte num5 = 50;

???? ???? //byte + byte ---->int + int ---> int

???? ???? int result1 = num4+num5;

???? ???? System.out.println(result1);

???? ???? short num6 = 60;

???? ???? //byte + short ---->int + int ---> int

???? ???? //int 強(qiáng)制轉(zhuǎn)換成short誉券,注意必須邏輯上真實(shí)大小沒有超過short范圍

???? ???? short result2 = (short)(num4 + num6);

???? ???? System.out.println(result2);

???? }

}

運(yùn)行結(jié)果:



12.ASCII碼表

數(shù)字和字符對照關(guān)系表(編碼表):

???? ASCII碼表:American Standard code for Information Interchage -美國信息交換標(biāo)準(zhǔn)代碼表

??? Unincode碼表:也是數(shù)字和符號(hào)的對照關(guān)系,開通0-127部分和ASCII碼表一樣刊愚,但從128開始包?? ??? ??? 含更多字符

??? 48 - '0'

??? 65 - 'A'

??? 97 - 'a'



例子:

public class DataCharDemo{

???? public static void main(String[] args){

???? ???? char zifu1= '1';

???? ???? System.out.println(zifu1+0);//49

???? ???? char zifu2 = 'A';//其實(shí)底層保存的是65數(shù)字

???? ???? char zifu3 = 'c';

???? ???? //左側(cè)是int類型踊跟,右邊是char類型

???? ???? //char -- > int ,符合從小到大

???? ???? //發(fā)生自動(dòng)類型轉(zhuǎn)換

???? ???? int num = zifu3;

???? ???? System.out.println(num);

???? ???? char zifu4 = '中';//正確寫法

???? ???? System.out.println(zifu4+0);//20013

???? }

}

運(yùn)行結(jié)果:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鸥诽,隨后出現(xiàn)的幾起案子琴锭,更是在濱河造成了極大的恐慌,老刑警劉巖衙传,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異厕九,居然都是意外死亡蓖捶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門扁远,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俊鱼,“玉大人,你說我怎么就攤上這事畅买〔⑾校” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵谷羞,是天一觀的道長帝火。 經(jīng)常有香客問我,道長湃缎,這世上最難降的妖魔是什么犀填? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮嗓违,結(jié)果婚禮上九巡,老公的妹妹穿的比我還像新娘。我一直安慰自己蹂季,他們只是感情好冕广,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布疏日。 她就那樣靜靜地躺著,像睡著了一般撒汉。 火紅的嫁衣襯著肌膚如雪沟优。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天神凑,我揣著相機(jī)與錄音净神,去河邊找鬼。 笑死溉委,一個(gè)胖子當(dāng)著我的面吹牛鹃唯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓣喊,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼坡慌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藻三?” 一聲冷哼從身側(cè)響起洪橘,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棵帽,沒想到半個(gè)月后熄求,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逗概,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年弟晚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逾苫。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卿城,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铅搓,到底是詐尸還是另有隱情瑟押,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布星掰,位于F島的核電站多望,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蹋偏。R本人自食惡果不足惜便斥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望威始。 院中可真熱鬧枢纠,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至木西,卻和暖如春畴栖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背八千。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國打工吗讶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恋捆。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓照皆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親沸停。 傳聞我的和親對象是個(gè)殘疾皇子膜毁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359