第一部分 Java基礎(chǔ)語法(上)

Java標(biāo)識符

Java所有的組成部分都需要名字界阁。類名挠阁、變量名以及方法名都被稱為標(biāo)識符饱普。

規(guī)范

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

首字符之后可以是字母(A-Z或者a-z),美元符($)旗们、下劃線(_)或數(shù)字的任何字符組合

關(guān)鍵字不能用作標(biāo)識符

標(biāo)識符是大小寫敏感的

類名最好要大寫,用來區(qū)分他是一個類


java命名規(guī)范

(1)類名接口名:所有首字母大寫XxxYyyZzz

(2)變量名构灸,函數(shù)名:xxYyZz

(3)包名:xxyyzz

(4)常量名? XXX_YYY_ZZZ

格式問題

Java關(guān)鍵字

這些保留字不能用于常量上渴、變量、和任何標(biāo)識符的名稱喜颁。(不用記稠氮,以后會接觸)

Java注釋:一定要寫

(被注釋內(nèi)容不會被編譯,僅僅起到提示的作用半开,便于后期review代碼)

1.// 單行注釋

2./*

多行注釋

*/

3./**多行注釋隔披,可以生成文檔,又叫文檔注釋 ?命令行輸入javadoc? xxx.java

*/

1.單行注釋可以在單行注釋里面寂拆。

2.多行注釋不能嵌套在多行注釋里面奢米。

常量

常量表示不能被改變的數(shù)值

變量

變量指的是內(nèi)存中的一塊存儲區(qū)域抓韩,該區(qū)域有自己的名稱(變量名)和類型(數(shù)據(jù)類型),該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化鬓长,變量的作用范圍只在該“{}”中有效

int a谒拴; {? a=6; }? ? ? //? a等于6 ? ? ? ?{? int a =6;}? ? ? //定義在{}內(nèi)的變量,{}外不可以訪問

所以說如果你想要在{}之后訪問大括號里進行變化的變量涉波,此變量必須在{}外聲明

定義變量的格式

1.數(shù)據(jù)類型? 變量名 = 初始化值(聲明并初始化)

2.先聲明彪薛,再初始化

注意:(1)變量的定義格式是固定的,變量就如同數(shù)學(xué)中的未知數(shù)

? ? ? ? ? ? (2)變量被使用必須有初始值怠蹂,它其實就是內(nèi)存中的一小塊區(qū)域善延,用變量名訪問

? ? ? ? ? ? (3)變量只能被聲明一次

二進制(了解) ? 025表示八進制 ?0x256表示16進制

java二進制采用補碼形式表示正負(fù)數(shù)區(qū)分的標(biāo)志:符號位(0正城侧,1負(fù))

正數(shù)補碼是其本身易遣,負(fù)數(shù)補碼取反+1

所以計算機二進制與十進制轉(zhuǎn)換,要先把二進制轉(zhuǎn)換為原碼作為過渡再進行轉(zhuǎn)換嫌佑。

1.十進制轉(zhuǎn)換為二進制:除2取余豆茫,除盡為止,余數(shù)從上向下看為二進制源碼結(jié)果屋摇,由于是正數(shù)所以原碼和補碼相同



2.二進制轉(zhuǎn)換為十進制:累加求和

3.負(fù)十進制轉(zhuǎn)換為負(fù)數(shù)二進制:取絕對值揩魂,轉(zhuǎn)換為二進制,取反加1



4.負(fù)二進制:取反加1炮温,轉(zhuǎn)換為十進制火脉,乘-1


拓展:為什么byte表示的是8個字節(jié),范圍卻是-128到127呢柒啤?

-128到127.共256個數(shù)倦挂。剛好可以用一個字節(jié)(8位)表示出來(2^8=256);

01111111表示的是127 担巩,按道理128表示的是10000000方援,可是因為第一位是一個符號位,所以byte正數(shù)最大值就為127涛癌,當(dāng)?shù)谝晃坏扔?的時候就是負(fù)數(shù)犯戏,把10000000看作是一個負(fù)數(shù)的補碼,轉(zhuǎn)換為十進制就是把10000000取反加1為10000000十進制就是128拳话,再乘-1為-128

127后面是-128先匪,最大的正數(shù)之后是最小的負(fù)數(shù)。這就跟鐘表一樣假颇,12點鐘后面是1點中鐘一樣胚鸯。

byte b=(byte)128,? ? 把128賦值給b,計算機語言 是通過二進制補碼表示的笨鸡,但因為正數(shù)原碼補碼相同姜钳,所以b的值變成了10000000坦冠,這時你要輸出b,計算機發(fā)現(xiàn)第一位的符號位是1哥桥,則把它看成是負(fù)數(shù)的補碼辙浑,輸出時再轉(zhuǎn)換為十進制則變成負(fù)128(賦值時,計算機接收的是二進制的補碼拟糕,輸出的時候把補碼轉(zhuǎn)換為原碼在轉(zhuǎn)換為十進制然后再輸出


基本數(shù)據(jù)類型:四型八種(可以想象是一種容器判呕,承裝事物)

整型 (整數(shù)):byte(1個字節(jié)8位? -128-127)、short(2個字節(jié))送滞、int(4個字節(jié))侠草、long(8個字節(jié))

浮點型(小數(shù)):float(4個字節(jié),2的-149次方—2的127次方)犁嗅、double(8個字節(jié)边涕,非常大)

布爾型(表示真假):boolean(1字節(jié))

字符型:char(2字節(jié))用單引號括起來,只能是兩個字母褂微,一個漢字等于兩個字符(0-65535)

ascii掌握? ? a-z(97-122)功蜓,A-Z(65-90),1-9(48-57)宠蚂,每個ascii都對應(yīng)一個字符

Java中默認(rèn)的整數(shù)類型是int式撼,如果要定義為long ,則要在數(shù)值后加上L或者l

默認(rèn)的浮點型是雙精度浮點求厕,如果要定義float著隆,則要在數(shù)值后面加上f或者F

一個字節(jié)等于8位,1個字節(jié)等于256個數(shù)甘改。2^8

一個英文字母或者阿拉伯?dāng)?shù)字占一個字節(jié)

一個漢字占2個字節(jié)

可為數(shù)字加下劃線旅东,讓人更易閱讀,編譯器自動去除


轉(zhuǎn)義字符:具有特殊含義的字符

System.out.prinltn(‘\’’);

\’算是一個整體標(biāo)識一個單引號

\v豎向跳格? ? ? ? ? \b退格? ? ? ?

? \r回車(表示的是回到本行行首)? ?

System.out.println('h');

System.out.println('\r');

System.out.println('a');? //最后輸出的是 a因為\r回到了行首十艾,a覆蓋了h

? \\反斜線符"\"? ? ? ? ? \n新行

\t跳向下一個tab位置(橫向跳到下一制表位置)? 縮進的時候都要寫

數(shù)據(jù)類型轉(zhuǎn)換

1.自動類型轉(zhuǎn)換

小類型可自動轉(zhuǎn)換為大類型

byte a=12;? int b=a? byte自動轉(zhuǎn)換為int

特例:char和int型可以互相自動轉(zhuǎn)換腾节,例如char c='1' ? ?c不僅等于‘1’還等于49(因為在計算機內(nèi)部是通過二進制進行交互的忘嫉,char型在計算機中先轉(zhuǎn)為int再轉(zhuǎn)為二進制)

2.強制類型轉(zhuǎn)換

(比如把裝滿水的大杯子往小杯子里倒水,多余的會溢出案腺,而小向大倒沒有問題庆冕。)

大類型轉(zhuǎn)換為小類型,可能損失精度

int a=3劈榨;

byte b=(byte)a访递;

short s = 3; s = s+2; s+=2,有什么區(qū)別,為什么同辣?

s=s+2不正確拷姿,因為運算的時候轉(zhuǎn)為int型惭载,不能把int型賦給short型,

s+=2會自動強轉(zhuǎn)為short進行運算

字符串類型(引用類型)

String str = ""; // 這個跟"abc"响巢、"中國"描滔,本質(zhì)上這都一樣,只是空串踪古,長度為0罷了

""是空字符串含长,但是也是字符串,沒有什么東西伏穆。? //字符串初始化用“”拘泞,不用null

而null是空的意思,什么都沒有枕扫,沒有地址田弥。

字符串與基本數(shù)據(jù)類型的轉(zhuǎn)換

String s=“”+123;? ? ? ? //基本數(shù)據(jù)類型轉(zhuǎn)換為字符串铡原,空串加基本數(shù)據(jù)類型(+可用于字符串連接)

Integer.parseInt(數(shù)字字符串)偷厦;? ? ? ? ? ? ? //字符串轉(zhuǎn)換為數(shù)字

Double.parseDouble(數(shù)字字符串);

s.charAt(index)//字符串轉(zhuǎn)換為字符


java代碼是順序執(zhí)行的


運算符(相等是==? 燕刻,賦值是= 千萬不要寫錯只泼!

算術(shù)運算符:+ - * /? % ++ -- ? ? ?

(1) int a=5; int b=2卵洗; int c=a/b请唱;? ? int表示整數(shù),小數(shù)部分被舍棄过蹂,答案為2

(2) int a=3;int b=4;double c=a/b;? ? ? a/b運算之后是int型十绑,舍棄小數(shù)部分為0,自動轉(zhuǎn)換為double增加精度變成0.0

(3) int i=3酷勺; int a=i/2 + i/4? =1+0? ? 每一次i的運算返回值都是int型

(4) double a=3;int b=4;double c=a/b? 兩數(shù)想運算本橙,返回的結(jié)果是兩數(shù)據(jù)類型中較大的(精度)

整型運算自動轉(zhuǎn)換為int進行運算,浮點型運算自動轉(zhuǎn)換為double進行運算脆诉,因此要得到特定其它類型甚亭,需要進行強制轉(zhuǎn)換

注:不知道有沒有有這樣的疑問:

? ? ? ? 為什么byte a=1+2; 是合法的而? ? byte a=1击胜; byte b=2亏狰;byte c=a1+a2;就是非法的偶摔,這是因為a1+a2在運算的時候自動轉(zhuǎn)成了int型然后再運算暇唾,返回值變成了int型,或許還會想為什么兩者代表的都是1+2為什么第二個非法呢,因為在運算的時候第二個1和2從byte型的盒子里跑到了int型的盒子內(nèi)策州,而第一個里的1和2不在任何盒子里瘸味,所以第二個如果要把它變成byte型,就要打破盒子也就是強轉(zhuǎn)

i++先運算(包括比較)抽活,先賦值硫戈,先輸出,再自加下硕,自加表示對本身的操作等同于i=i+1(int i=5;int a=i++;? ? 此時a=5丁逝,i=6 ) ? ?byte a=127 ? byte=++a; ? 是對a本身操作梭姓,a的類型并沒有轉(zhuǎn)換霜幼,而

byte c=a+1 ? 右邊變成一個運算,所以會自動轉(zhuǎn)換為int型

int i=5;int a=i++ + i++;? ? ? ? 此時a=11誉尖,i=7第一個i++是5++罪既,第二個i++因為第一個i++結(jié)束變成6++? ,所以a=5+6=11铡恕;? ? i=i+1+1=7

int b=i++ + i-- + i++? ? 5++? + 6-- + 5++ =16

++i 先自加琢感,再賦值(int i=5;int a=++i;? ? 此時a=6,i=6 )

面試題

int i=3探熔;? i=i++驹针;? i=i++;? 輸出的i都為3诀艰,不變

原因:其實a++的運算柬甥,是在a進行運算之前,先開辟一塊內(nèi)存用來存儲變量a的復(fù)制其垄,b真正指向的其實是a運算之前的復(fù)制苛蒲,所以b的值為3

而i=i++,由于兩邊變量相同绿满,i的復(fù)制最后覆蓋了i++后的值

i++在內(nèi)存中是比較奇特的臂外,而a=b+c 在內(nèi)存中,b和c并不會復(fù)制棒口,而是直接將b和c相加寄月,得到的值賦給a

i*=++i ? ? ? i= i* ++i=12*13

邏輯和關(guān)系運算符

!=表不等? == 表相等

&&短路與无牵,||短路或? 如果第一個表達式能確定結(jié)果,第二個表達式就不進行計算

&厂抖,|? 兩個表達式都進行計算

建議用短路與與短路或茎毁,避免一些錯誤產(chǎn)生,例:x!=0&&1/x? 當(dāng)x=0時確定結(jié)果七蜘,不會執(zhí)行第二個表達式避免了錯誤的產(chǎn)生

expression1 ^ expression2 異或谭溉,兩側(cè)真假相同,為假


三元運算符

condition橡卤?expression1:expression2? ? 當(dāng)condition為真時計算第一個表達式扮念,為假計算第二個表達式

面試題:? ? System.out.println(3>2?2:3.0);

注:1.表達式1和表達式2決定返回值類型

? ? ? ? 2.如果表達式類型不一致碧库,必須進行類型轉(zhuǎn)換柜与,轉(zhuǎn)換為表達式類型中較大的一個類型,從而決定返回值

? ? ? ??3.表達式1和表達式2中都可以再套一個三元運算符構(gòu)成了復(fù)雜的三元運算符


位運算符(針對二進制)嵌灰,1表示true弄匕,0表示false ?(了解)

無符號右移:符號位不跟著移動,有符號右移>>>:符號跟著一起移動(不存在有符號左移)

5<<2左移兩位? ? 0000 0101? 左移兩位后0001 0100

5>>2

若是int型表32位沽瞭,則 1<<35? 與1<<3相同迁匠,因為需要進行模32的運算

1&1為1,否則為0? 0|0為0驹溃,否則為1

異或:相同為false(0)城丧,不同為true(1)

4取反為-5 ?4二進制為0100取反為1011,第一位為1表負(fù)數(shù)豌鹤,-1去反轉(zhuǎn)換為十進制為-5

面試題:把8變成2最快效率亡哄,把8右移二位(因為8/2計算機也會先轉(zhuǎn)換為2進制,再運算)


輸入輸出

控制臺輸入:構(gòu)建Scanner對象傍药,并與“標(biāo)準(zhǔn)輸入流”System.in關(guān)聯(lián)磺平。

Scanner in=new Scanner(System.in); ? ?

String name=in.nextLine()拐辽;? //nextLine()表示獲取一行 ??

使用println有可能讀取的是一個空行

String firstName=in.next()拣挪;? //讀取一個單詞,以空格為分隔符

int age=int.nextInt俱诸;? //讀取一個整數(shù)菠劝,舉一反三可以讀取其它基本類型

格式化輸出(了解)實際調(diào)用了format

System.out.printf(“hello,%s睁搭,you‘ll be %d”赶诊,name,age) ? 表示以%s的形式表示name

每一個以%字符開始的格式說明符都用相應(yīng)的參數(shù)替換园骆,f表浮點舔痪,s表字符串,d表十進制

%8.2f? 表示 打印8個字符锌唾,小數(shù)點后有兩位

%锄码,d ? ? 表示將整數(shù)以逗號進行間隔

print 表示不換行的打印


輸出時不管任何類型都會先轉(zhuǎn)換為String然后輸出

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夺英,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子滋捶,更是在濱河造成了極大的恐慌痛悯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件重窟,死亡現(xiàn)場離奇詭異载萌,居然都是意外死亡,警方通過查閱死者的電腦和手機巡扇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門扭仁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人霎迫,你說我怎么就攤上這事斋枢。” “怎么了知给?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵瓤帚,是天一觀的道長。 經(jīng)常有香客問我涩赢,道長戈次,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任筒扒,我火速辦了婚禮,結(jié)果婚禮上花墩,老公的妹妹穿的比我還像新娘。我一直安慰自己和泌,他們只是感情好祠肥,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仇箱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忠烛。 梳的紋絲不亂的頭發(fā)上权逗,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天垒拢,我揣著相機與錄音火惊,去河邊找鬼奔垦。 笑死,一個胖子當(dāng)著我的面吹牛椿猎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播按灶,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼筐咧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了量蕊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤残炮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后势就,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡袖牙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年抱完,在試婚紗的時候發(fā)現(xiàn)自己被綠了贼陶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巧娱。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖禁添,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情老翘,我是刑警寧澤锻离,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布汽纠,位于F島的核電站傀履,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钓账。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一服协、第九天 我趴在偏房一處隱蔽的房頂上張望啦粹。 院中可真熱鬧,春花似錦卖陵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至餐曹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間台猴,已是汗流浹背朽合。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饱狂,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓休讳,卻偏偏與公主長得像讲婚,于是被迫代替她去往敵國和親俊柔。 傳聞我的和親對象是個殘疾皇子筹麸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法活合,類相關(guān)的語法物赶,內(nèi)部類的語法白指,繼承相關(guān)的語法,異常的語法块差,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • Win7下如何打開DOS控制臺侵续? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,595評論 4 12
  • 1 關(guān)鍵字 1.1 關(guān)鍵字的概述 Java的關(guān)鍵字對java的編譯器有特殊的意義,他們用來表示一種數(shù)據(jù)類型憨闰,或...
    哈哈哎呦喂閱讀 652評論 0 0
  • 北京的房價又漲了。 一名北大博士需五,中科院工作三年后,辭職離京了宏邮。 國家花費大量人力物力財力泽示,本人耗費無數(shù)心力智力體...
    方文武閱讀 932評論 1 5
  • 很多攻略對哥斯達黎加的介紹都不約而同的稱其為——世界上最幸福的國家(哥斯達黎加世界排名第六煞赢,僅次于以丹麥為首的五個...
    薄暮初陽閱讀 1,194評論 3 17