JDK(Java Developmet Kit)java
JRE(Java RunTime Environment)的區別:編程
JRE只有運行JAVA程序的環境,沒有開發相關的工具;JDK=JRE+開發相關的工具。瀏覽器
用記事本運行java程序出現的問題:工具
//能夠執行的程序學習
class hello編碼
{spa
public static void main(String[] args)操作系統
{翻譯
System.out.println("Hello World!");指針
}
}
//本身編寫的爲何不能執行??
class hello
{
public static void main(String[] args)
{
System.out.println("如鵬(www.rupeng.com),歡迎你的加入!");
}
}
//以爲應該是在同一個文件加下,兩個類名徹底同樣,因此沒有執行
//我嘗試將類名進行修改
class xiaowei
{
public static void main(String[] args)
{
System.out.println("如鵬(www.rupeng.com),歡迎你的加入!");
}
}
xiaowei.java(高級語言) -> xiaowei.class(二進制碼)
java是依賴於字節碼文件的
字節碼文件(xiaowei.class)二進制代碼,沒法雙擊運行,須要java指令
Java程序運行必須依賴於Java運行環境(JRE),沒法獨立運行
JRE中的JVM(Java Virtual Machine,Java虛擬機)是運行.class二進制字節碼文件的核心。
爲何不直接生成.exe??
由於JVM負責翻譯實現:一次編譯,處處運行。(和不一樣的系統打交道) EXE4J把寫好的程序進行打包成.exe文件
C/C++編寫的程序跨平臺運行很難(主要是由於微軟有些封裝的類庫只支持微軟的產品)
使用Eclipse開發java程序
IDE(集成開發環境):java IDE有不少:其中組好的一款是Eclipse免費且開源。
Eclipse只是一個輔助開發的工具而已,Eclipse的運行以及編譯出的程序運行仍是靠java。
Eclipse幫咱們作了什麼?
答:Eclipse的Src存儲了源代碼文件夾,bin存放 .class文件
Eclipse個性化設置:
「窗口」->「首選項」->「常規」(Java樣式)
練習一:
工做空間(workspace):相關的項目放在一個工做空間中,避免一個空間中項目太多,也不便於管理。
切換工做空間的方法:
退出重啓,若是勾選了「將此值用做初始值而且詢問」,則「文件」->「切換工做空間(switch workspace)」,從「工做空間」列表中選擇(以前打開過的)或者瀏覽器選擇工做空間根目錄(包含 .metadata)
如何導入別人的項目到工做空間:
「包資源管理器(Package Explorer)」-> 「導入(Import)」->「常規(General)」—>「現有項目到工做空間中(Existing Project Directory)」->「瀏覽」->「選擇項目的根目錄(包含.project文件)」或者WorkSpace,選擇導入的項目便可。
註釋
1.被註釋的代碼編譯器忽略。
註釋的做用:說明代碼的做用;在程序中加入適當的註釋;屏蔽無用的代碼。
2.使用「//」註釋一行代碼,//以後的代碼編譯器會忽略
3./* */註釋多行代碼
4.註釋不能太多,也不能夠一點也不進行註釋。
5.多行註釋(/* */)不能進行嵌套
註釋的應用:
關鍵字:
1.Java定義了一些關鍵字(public、static、void、int),這些關鍵字是構成java基本語法用的,這些關鍵字不必去背,一邊學習,一邊就掌握了。這些關鍵字在Eclipse環境下顏色爲紫色。
2.像C中的goto、const在java中沒有意義,可是仍是保留的,變量、類的名字也不能用這兩個,他們也被稱爲「保留字」。
3.而main、String、System等這些都不是關鍵字。
標識符:
1.標示符是用來給類、方法、變量等命名用的‘
2.命名規則:
1)由字母(含大、小寫)、中文(不推薦)、數字、下劃線、$組成;
2)不能以數字開頭;
3)不能是關鍵字
4.java語言是大小寫敏感的:name和Name是兩個不同的變量。
5.駝峯命名法:每一個單詞的第一個字母大寫
6.標示符要有意義:標示符的命名規範,不是強制規定,而是「潛規則」
類名:大寫開頭;
變量名、方法名:小寫開頭
變量:
1.數據通常都放在內存中。操做內存的時候要使用地址,一般指向內存的指針操做內存,變量是給這段內存取一個名字。我要告訴別人如何使用這塊內存的話須要給這塊區域取一個名字,好比:price,這個price就叫作「變量名」。
2.咱們能夠把price變量指向內存的值改成三、五、10,可是能不能改成「Tom」呢?顯然是不能夠的!!!
所以這塊內存中可以放什麼類型的數據是有限制的,這就是「變量類型」。
3.定義一個變量的格式爲:
(變量類型) (變量名)=(初始值)
變量的做用域:
1.變量在{}範圍以內定義不能重名,定義一個int b=3;
在定義一個int b=10;編譯出錯。
2.int b=3;b=5;則能夠,是由於對b進行了從新賦值操做。
注:使用已有的變量b。 變量前沒有類型,就是使用變量;
變量前有類型,就是定義變量;變量在做用域範圍內是不可以重複定義的。
3.int b;而後直接println(b);是不行的,由於沒有賦初始值。局部變量使用以前必須賦給初始值。
聲明時賦值或使用前賦值均可以
方式一:int a=5; 方式二:int a;
a=5;
數值類型:
1.整數類型:(基於32位操做系統)
byte(字節) 佔用1字節(1*8 bit)
short(短整型) 佔用2字節(2*8 bit)
int(整型)(默認) 佔用4字節(4*8 bit)
long(長整型) 佔用8字節(8*8 bit)
2.小數類型:
float(單精度浮點數) 佔用4字節(4*8 bit)
double(雙精度浮點數)(默認)佔用8字節(8*8 bit)
1字節(byte)等於8位(bit)
1位(bit)只能表示0或1其中的一個狀態(即表示二進制)
在Eclipse環境下:
整數常量默認爲:int類型
小數常量默認爲:double類型
注:選用數據類型的時候,在考慮到數據的可能範圍以後,選擇最小範圍的類型,這樣節省資源。
long>int>short>byte;
double>float;
整數類型轉換(Type cast):
1. byte b=3;
int i=b;// 隱式類型轉換
2.int m=9;
byte k=i;
//byte k=m;//不能夠從int轉換爲byte類型
byte k=(byte)m;//顯式類型轉換
小數數據類型:
double d1=3.14D;//默認爲double,因此通常不用寫D
double d2=3.14;
double d3=3;
float f1=3.14;//不能從double轉化爲float。
小數默認爲double,改成:
float f2=3.14F;
結論:
1.「大範圍」=「小範圍」:隱式轉換
2.「小範圍」=「大範圍」:顯式轉換(強制類型轉換)
3.都是整數參與乘除運算,結果仍是整數;整數常量參與乘除計算通常加f聲明爲小數類型,避免精度損失。
eg:
System.out.println((1/3)*3);//0調用的in同類型
System.out.println((1.0/3)*3);//1.0調用double類型
System.out.println((1/3)*3F);//0.0
System.out.println((1/3F)*3);//1.0
經常使用數據類型:
1.boolean:true/false(只有兩個可選值)
Int i=true;在java中是不成立的
2.String: 「*****」
轉義字符: 「\n」 換行
「\\」輸出「\」(斜槓)
「 \」 」輸出「 」 」(引號)
System.out.println("個人名字叫\"曉偉\"\\n");
如何顯示「\n」字符呢? 能夠輸入「\\n」便可。
int:最大值:Integer.MAX_VALUE;
最小值:Integer.MIN_VALUE;
int轉換爲String:Integer.toString(i);
或者爲:String.valueOf(i);
String轉換爲int:Integer.parseInt(「33」);
顯式類型轉換僅限整數、小數類型以內。
double轉換爲String:Double.toString(d);
String轉換爲double:Double.parseDouble(s);
char與String區別:單引號(char類型),一個字符
雙引號(String類型),一堆字符組成,核心「\0」做爲字符串結束標誌。
基礎運算符:
1.運算符就是加(+)、減(-)、乘(*)、除(/)等符號
2.求餘數運算符(%):5%4爲一、5%5爲0、22%7爲1.
3.自增(++):是對一個變量進行自增運算()
4.自減(--):
System.out.println("abc"+5+6);//結果爲「abc56」
「abc」是字符串,因此+5仍然爲字符串,再+6還是字符串
System.out.println(5+6+"abc");//結果爲「11abc」
5+6是整型數據,結果爲11,再與字符串拼接在一塊兒
System.out.println("abc"+(5+6));//結果爲「abc11」
總結:
Java中表達式從左向右掃描進行掃描運算,一旦趕上一個字符串,以後的運算就變成字符串了。
賦值運算符:
1. int i=5;
應該理解爲:「聲明int類型變量i,而且把5賦值給i」。
擴展知識:
當你看到「145」這個數時,你會不加思考當即就知道是「一百四十五」,可是在計算機編程人員看來,如果學習了二進制和十六進制的話,可能就不只僅是一個數,而是做爲一個數的代碼。
平時咱們使用最多的是十進制:
概括起來能夠總結以下規律:
①十進制使用數字 0-9
②位是10的冪:一、十、100、1000等。
③若是第三位是100,那麼用兩位可表示最大數爲99.
推廣到通常狀況:
用n位數能夠表示從0到(-1)的數。所以用三位數能夠表示從0到即0到999.
數制轉換問題
1.經常使用的數制
十進制 0-9
八進制 0-7
二進制 0-1
十六進制 0-F
2.十進制 轉 各個進制
方法 : 除以基數取餘反向
3. 2進制 8進制 16進制 轉十進制
二進制
___________________________
2^3 2^2 2^1 2^0
1 0 0 1 X
=8+ 1 = 9
八進制
———————————
8^1 8^0
1 7
=1*8 + 7*1 = 15
十六進制相似。
4.二進制轉 十六進制 八進制
二轉八
三位一組 結果並在一塊兒
二轉十六
四位一組 結果合併在一塊兒
5. 整數在內存中的存儲,採用二進制
符號位
原碼 正數 0
負數 1
反碼 正數 和原碼相同
負數 在原碼基礎上,符號位不變,各個位取反
補碼 正數 和源碼相同
負數 在反碼基礎上,符號位不變,末位 +1
案例↓↓↓↓↓↓
————————————————————————————
原碼 反碼 補碼
5 0000 0101 0000 0101 0000 0101
-5 1000 0101 1111 1010 1111 1011
6. 機器數 和 真值
用「+」、「-」號加絕對值來表示數值的大小,用這種形式表示的數值在計算機中稱爲「真值」
符號數碼化後,二進制數的最高位「0」表示正號,「1」表示負號,用這種形式表示的數值在計算機中稱爲「機器數」
機器數中小數點隱含不佔位
機器數 有符號 純整數 點在最低位以後
純小數 點在符號位以後,最高位以前。
無符號 純整數 點在最低位以後
純小數 點在最高位以前
7.小數的存儲
計算機中小數以二進制(浮點數)形式存儲。
首先是一個十進制小數形式,轉化成二進制的計算案例。
————————————————————————————————
0.8125 轉換成二進制
其實這種狀況是趕巧了獲得一個確切的值。
————————————————————————————————
但對於某些特殊狀況是這樣的
8.浮點數產生偏差的緣由
有兩鍾狀況,會產生偏差
1)以二進制保存浮點數,因此一些本來有限位的小數,按照上面方法運算之後,可能變成一個無限循環的小數。
————————————————————————————————
(十進制)0.9轉成2進制是無限循環小數0.1110011001100110011...
————————————————————————————————
2)計算機保存浮點數的精度有限,例如float能夠保留十進制最多7位(二進制23位)有效數字,double 能夠保留十進制15~16位(二進制52位)有效數字。那有效數字之後的就被忽略了。
爲何用二進制?
二進制的冪能夠與計算機所表達的事物清楚地對應起來。計算機實際根本不知道什麼字母、數字、指令或程序。在它的內核只是一些電路,在某個給定的結點要麼有不少電,要麼幾乎沒有電。爲了使邏輯保持清晰,工程師將其簡化爲「是」或「否」。「是」與「否」、或者是「真」與「假」均可以由1或0表示。按照約定,1表明「是」或「真」,但這僅僅是一種約定;這樣表示「否」或「真」也一樣容易。
計算機用0和1的模式給它們作的任何事情進行編碼。機器指令被編碼成一系列的1和0,並經過電路翻譯。