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é)果
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é)果: