Day1—概述契吉、變量與運(yùn)算符

java概述

1跳仿、java的三大特點(diǎn)

面向?qū)ο螅?/strong>
主要體現(xiàn)在兩個基本概念:類、對象
以及三大特性:封裝捐晶、繼承菲语、多態(tài)

健壯性:
吸收C/C++的優(yōu)點(diǎn),去掉了影響程序健壯性的部分(比如指針租悄、內(nèi)存申請以及釋放等等)

跨平臺性:
依賴于java虛擬機(jī)(JVM)谨究,可以在任何操作系統(tǒng)上運(yùn)行java程序

跨平臺性

2、java的兩種核心機(jī)制

java虛擬機(jī)(即jvm)
對于不同的操作系統(tǒng)泣棋,有不同的虛擬機(jī)胶哲,只有提供了對應(yīng)操作系統(tǒng)的虛擬機(jī),才可以在此基礎(chǔ)上運(yùn)行java程序潭辈。
jvm有效的屏蔽了因不同操作系統(tǒng)所造成的底層平臺的差別鸯屿,使得編譯后的java程序可以在任意平臺上運(yùn)行。

運(yùn)行機(jī)制

垃圾收集機(jī)制:
在 C 語言中把敢,由于它是一門底層的編程語言寄摆,沒有自動的垃圾回收機(jī)制,需要開發(fā)者手動進(jìn)行內(nèi)存管理修赞。這也使得 C 語言程序更加高效婶恼,但同時也更容易出現(xiàn)內(nèi)存泄漏桑阶、使用已經(jīng)被釋放的內(nèi)存等問題。
java取消了開發(fā)者回收無用空間內(nèi)存的責(zé)任:它提供一種系統(tǒng)級線程跟蹤存儲空間的分配情況勾邦。并在JVM空閑時蚣录,檢查并釋放那些可被釋放的存儲空間。
垃圾回收在Java程序運(yùn)行過程中自動進(jìn)行眷篇,程序員無法精確控制和干預(yù)萎河。
【注:即便是這樣,某些java程序依然存在著內(nèi)存泄漏和內(nèi)存溢出的問題蕉饼∨氨】

3、java環(huán)境搭建

明確jdk昧港、jre擎椰、jvm之間的關(guān)系
java開發(fā)工具包(jdk):提供給開發(fā)人員使用的java開發(fā)工具,該開發(fā)工具自帶jre部分慨飘,同時也包含了編譯工具(javac.exe)确憨、打包工具(jar.exe)等其它工具;
java運(yùn)行環(huán)境(jre):包含了jvm和java程序運(yùn)行所需要的核心庫等等瓤的,如果只是想運(yùn)行java程序休弃,只需要安裝jre即可;
java虛擬機(jī)(jvm)

以下是它們之間的包含關(guān)系:


java環(huán)境搭建

4圈膏、java語言中的注釋

單行注釋:

System.out.println("Hello World塔猾!") ;  // 單行注釋

多行注釋:

System.out.println("Hello World!") ;  
/* 
      多行注釋
*/

文檔注釋:

/**
      @author  指定java程序作者
      @version   指定java程序版本
*/

該注釋內(nèi)容可以被JDK提供的工具javadoc所解析稽坤,生成一套以網(wǎng)頁文件形式體現(xiàn)的該程序的說明文檔丈甸。

變量

1、標(biāo)識符與變量

標(biāo)識符:
Java 對各種變量尿褪、方法和類等要素命名時使用的字符序列稱為標(biāo)識符(凡是需要自己起名字的地方都叫標(biāo)識符)

語法規(guī)則:

  • 由26個英文字母大小寫睦擂,0-9 ,_或$ 組成
  • 數(shù)字不可以開頭杖玲。
  • 不可以使用關(guān)鍵字和保留字顿仇,但能包含關(guān)鍵字和保留字。
  • Java中嚴(yán)格區(qū)分大小寫摆马,長度無限制臼闻。
  • 標(biāo)識符不能包含空格辞做。

變量的聲明與賦值:

int a;    // 聲明變量蛉幸,只有聲明后才能使用芽突;
a = 10;    //給變量賦值迅栅;
int b = 20;    // 聲明、賦值同時進(jìn)行示姿;

成員變量與局部變量:
在方法體外商源,類體內(nèi)聲明的變量稱為成員變量萨驶。
在方法體內(nèi)部聲明的變量稱為局部變量。

2缤谎、基本數(shù)據(jù)類型

整型:byte抒倚、short褐着、int坷澡、long
java中整型常量默認(rèn)為int型,如需聲明long型常量含蓉,應(yīng)該在后面加上‘l’或‘L’频敛;
java程序中變量通常聲明為int型,除非不足以表示較大的數(shù)馅扣,才使用long斟赚。

整型

浮點(diǎn)型:float、double
java中的浮點(diǎn)型默認(rèn)為double型差油,其精度為float的兩倍拗军,如需要聲明float類型,需要在后面加上‘f’或‘F’蓄喇。

浮點(diǎn)型

字符型:char
char型用來表示通常意義上的字符发侵,占用2個字節(jié);
java中的所有字符都是用Unicode編碼妆偏,因此char類型是可以進(jìn)行運(yùn)算的:

char c1 = ' a ';
char c2 = ' 中 ';
char c3 = ' 9 ';
System.out.println(10 + c2);   // 20023
char類型運(yùn)算

此外刃鳄,char類型還可用于轉(zhuǎn)義字符:

char c = ' \n ' ;   // ' \n ' 表示換行符 

其它常見的轉(zhuǎn)義字符如下:


常見的轉(zhuǎn)義字符

Unicode編碼與UTF-8:
Unicode編碼能夠?qū)⑹澜缟系乃蟹柖技{入其中,并且對每一個符號都給予一個獨(dú)一無二的編碼钱骂,使用Unicode編碼不會造成亂碼問題叔锐;
但是Unicode編碼只是規(guī)定了一個符號的二進(jìn)制編碼,沒有規(guī)定這個符號該如何進(jìn)行存儲见秽。比如ASCII(用一個字節(jié)進(jìn)行存儲的編碼方式)與Unicode無法進(jìn)行區(qū)分愉烙,因?yàn)橛?jì)算機(jī)不知道三個字節(jié)究竟是表示一個字符還是三個字符;再者解取,英文字母一般情況下僅用一個字節(jié)表示都足夠了步责,如果強(qiáng)行規(guī)定用Unicode進(jìn)行編碼,每個字符都會占用3-4個字節(jié)肮蛹,那么剩下的字節(jié)都是0勺择,這對存儲空間來說是巨大的浪費(fèi);
為了解決這個問題伦忠,UTF-8是互聯(lián)網(wǎng)上最廣泛使用的一種Unicode的實(shí)現(xiàn)方式省核,它是一種變長的編碼方式,可以使用1-6個字節(jié)表示一個符號昆码,并且通過其獨(dú)特的編碼規(guī)則气忠,根據(jù)不同的符號而變化字節(jié)的長度邻储。

布爾型:boolean
boolean類型只有兩個值:true或者false,沒有null這個值旧噪;
【注:不可以使用0或非 0 的整數(shù)替代false和true吨娜,這點(diǎn)和C語言不同】
【但是Java虛擬機(jī)中沒有任何供boolean值專用的字節(jié)碼指令,Java語言表達(dá)所操作的boolean值淘钟,在編譯之后都使用java虛擬機(jī)中的int數(shù)據(jù)類型來代替:true用1表示宦赠,false用0表示∶啄福】

3勾扭、基本數(shù)據(jù)類型轉(zhuǎn)換

自動類型轉(zhuǎn)換:容量小的類型會自動轉(zhuǎn)換為容量大的類型;

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

強(qiáng)制類型轉(zhuǎn)換:將容量大的數(shù)據(jù)類型轉(zhuǎn)換為容量小的數(shù)據(jù)類型铁瞒。使用時要加上強(qiáng)制轉(zhuǎn)換符:()妙色,但可能造成精度降低或溢出,格外要注意;

int number1 = 10;
short num = (short)number1;
System.out.println("num = " + num);     //  num = 10
  • byte慧耍、short身辨、char之間不會相互計(jì)算,他們在進(jìn)行計(jì)算時會統(tǒng)一轉(zhuǎn)換為int型芍碧;
  • boolean類型不參與其它數(shù)據(jù)類型之間的運(yùn)算煌珊。

4、引用數(shù)據(jù)類型

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

5师枣、字符串

String類不是基本數(shù)據(jù)類型怪瓶,而是屬于引用數(shù)據(jù)類型;
一個字符串可以串接另一個字符串践美,也可以直接串接其他類型的數(shù)據(jù)洗贰。

int no = 10;
String str = "abcdef";
String str1 = str + "xyz" + no;   // string1 = "abcdefxyz10"

str1 = str1 + "123";   // string1 = "abcdefxyz10123"
char c = 'A';

double pi = 3.1416;
str1 = str1 + pi;   // string1 = "abcdefxyz101233.1416"
boolean b = false;
str1 = str1 + b;   // string1 = "abcdefxyz101233.1416false"
str1 = str1 + c;   // string1 = "abcdefxyz101233.1416falseA"

運(yùn)算符

1、二進(jìn)制

二進(jìn)制整數(shù)的三種形式:
原碼:直接將一個數(shù)值換成二進(jìn)制數(shù)陨倡。最高位是符號位敛滋;
負(fù)數(shù)的反碼:是對原碼按位取反,只是最高位(符號位)確定為1兴革;
負(fù)數(shù)的補(bǔ)碼:其反碼加1绎晃;

計(jì)算機(jī)底層是以二進(jìn)制補(bǔ)碼的形式保存所有的整數(shù),且正數(shù)的原碼杂曲、反碼庶艾、補(bǔ)碼都相同,通過帶入符號位進(jìn)行計(jì)算擎勘,計(jì)算機(jī)只有加法而沒有減法:


計(jì)算機(jī)的運(yùn)算設(shè)計(jì)
三種形式

2咱揍、算數(shù)運(yùn)算符

算數(shù)運(yùn)算符

注意事項(xiàng):
如果對負(fù)數(shù)取模,可以把模數(shù)負(fù)號忽略不記棚饵,如:5%-2=1煤裙。 但被模數(shù)是負(fù)數(shù)則不可忽略掩完。此外,取模運(yùn)算的結(jié)果不一定總是整數(shù)硼砰。

對于除號“/”且蓬,它的整數(shù)除和小數(shù)除是有區(qū)別的:整數(shù)之間做除法時,只保留整數(shù)部分而舍棄小數(shù)部分题翰。

int x = 3510;
x = x / 1000 * 1000;     // x = 3000;
System.out.println(x);
System.out.println("5 + 5 =" + 5 + 5);

a++與++a的區(qū)別主要在于:前者的自加運(yùn)算發(fā)生在使用a值之后恶阴,后者的自加運(yùn)算發(fā)生在使用a值之前;

int i1 = 10;
int i2 = 20;

int i = i1++;
System.out.print("i="+i);    // i=10
System.out.println("i1="+i1);    // i1=11

i = ++i1;
System.out.print("i="+i);    // i=12
System.out.println("i1="+i1);     // i1=12

i = i2--;
System.out.print("i="+i);     // i=20
System.out.println("i2="+i2);     // i2=19

i = --i2;
System.out.print("i="+i);     //  i=18
System.out.println("i2="+i2);     // i2=18

3遍愿、擴(kuò)展賦值運(yùn)算符

+=存淫,-=,*=沼填,/=,%= 這些符號自帶強(qiáng)轉(zhuǎn)的功能括授;

short s = 3;
s = (short)(s+2);
System.out.println(s);      // 5
int i = 1;
i *= 0.1;              // 等價于 (int)i = i * 0.1;
System.out.println(i);        // 0
i++;
System.out.println(i);        // 1
int m = 2;
int n = 3;
n *= m++;        // 等價于(int) n = n * m++;
System.out.println("m=" + m);       // m = 3
System.out.println("n=" + n);        // n = 6
int j = 10;
j += (j++) + (++j);         // 等價于 (int)j = j + (j++) + (++j);
System.out.println(j);        // 32

4坞笙、比較運(yùn)算符

比較運(yùn)算符的結(jié)果都是boolean類型,要么是true荚虚,要么是false


比較運(yùn)算符

5薛夜、邏輯運(yùn)算符

邏輯運(yùn)算符

短路與&&和短路或||
&&:如果左邊為真,那么右邊參與運(yùn)算版述;如果左邊為假梯澜,那么右邊不參與運(yùn)算;
||:如果左邊為假渴析,那么右邊參與運(yùn)算晚伙;如果左邊為真,那么右邊不參與運(yùn)算俭茧;

int x = 1;
int y = 1;
if(x++==1 || ++y==1){          // 左邊條件為真咆疗,右邊不參與運(yùn)算;
    x =7;
}
System.out.println("x="+x+",y="+y);    //x=7 ;y=1
boolean x=true;
boolean y=false;
short z=42;
if((z++==42)&&(y=true))z++;      //  左邊為真母债,右邊參與運(yùn)算
if((x=false) || (++z==45)) z++;    //  左邊為假午磁,右邊參與運(yùn)算
        
System.out.println("z="+z);       //  z = 46

6、三元運(yùn)算符

利用三元運(yùn)算符獲取三個數(shù)之中最大數(shù):

int x = 8;
int y = 13;
int z = 5;
int temp = (x>y)?x:y;
int res = (temp>z)?temp:z;
System.out.println("res="+res);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毡们,一起剝皮案震驚了整個濱河市迅皇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌衙熔,老刑警劉巖登颓,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異青责,居然都是意外死亡挺据,警方通過查閱死者的電腦和手機(jī)取具,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扁耐,“玉大人暇检,你說我怎么就攤上這事⊥癯疲” “怎么了块仆?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長王暗。 經(jīng)常有香客問我悔据,道長,這世上最難降的妖魔是什么俗壹? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任科汗,我火速辦了婚禮,結(jié)果婚禮上绷雏,老公的妹妹穿的比我還像新娘头滔。我一直安慰自己,他們只是感情好涎显,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布坤检。 她就那樣靜靜地躺著,像睡著了一般期吓。 火紅的嫁衣襯著肌膚如雪早歇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天讨勤,我揣著相機(jī)與錄音箭跳,去河邊找鬼。 笑死悬襟,一個胖子當(dāng)著我的面吹牛衅码,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脊岳,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼逝段,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了割捅?” 一聲冷哼從身側(cè)響起奶躯,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亿驾,沒想到半個月后嘹黔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年儡蔓,在試婚紗的時候發(fā)現(xiàn)自己被綠了郭蕉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡喂江,死狀恐怖召锈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情获询,我是刑警寧澤涨岁,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站吉嚣,受9級特大地震影響梢薪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尝哆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一秉撇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧较解,春花似錦畜疾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姥敛。三九已至奸焙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彤敛,已是汗流浹背与帆。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留墨榄,地道東北人玄糟。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像袄秩,于是被迫代替她去往敵國和親阵翎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

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