Java簡介
Java是世界上應用最廣泛的計算機語言,是1995年由James Gosling研發的基於C++誕生的一門面嚮對象語言,其主要目標是“編寫一次,到處運行”。Java主要有三個版本:JEE、JSE、JME。現已成爲各軟件開發編寫程序的首選語言。
面向對象
-
方法、屬性、類、複用、封裝、繼承
執行任務中,需要一個方法,方法給出了執行任務的實際語句。對象有其屬性,屬性是由類的實際變量指定的。在java中,需要創造稱爲“類”的程序單元來容納執行類的任務的方法集。類將屬性和方法封裝,使對象的方法和屬性緊密相關。封裝的一大用途是隱藏,對象之間不知其他是如何實現的,實現的細節被隱藏在對象內部,信息隱藏對良好的軟件工程很重要。繼承可以快速又方便的建立新類——-新類會吸收已有類的特性並可以添加新的特性。
分析與設計
面對大型程序,爲了創建最佳解決方案,必須有一個詳細過程。
第一步:分析項目需求——即確定系統需要完成的功能
第二步:開發出能夠滿足這些需求的設計
第三步:編寫程序
第四步:對程序進行精簡,對算法進行改進
如果分析過程是從面向對象的角度對系統進行分析和設計,則稱之爲面向對象的分析與設計(OOAD)
Java開發環境
Java類庫也稱JavaAPI (Java Application Programming Interface Java程序編程接口)
Java類庫中有豐富的現有類和方法集合,其中的程序都是盡心編寫的,以高效率的執行。
JDK (Java Development Kit Java開發工具包)
指的是Java開發工具集。JDK是整個Java的核心,包括了Java基礎類庫、Java運行環境(JRE)和Java開發工具。是做Java開發必須要安裝的。
JRE(Java Runtime Environment Java運行環境)
指的是Java運行時環境。Java程序運行時必需要JRE的支持。如果系統只安裝JRE的話,則意味着系統可以跑任何Java程序,但不能做Java開發。
執行Java程序的五個階段
階段一:創建程序
用編輯器程序編輯Java文件,裏面包含Java源代碼
Linux系統編輯器爲vi和emacs,Windows系統爲記事本
集成開發環境(IDE),提供軟件開發過程的工具,常見的有:eclipse和netbeans
階段二:將Java程序編譯爲字節碼
字節碼由Java虛擬機執行,Java虛擬機是JDK的一部分也是Java平臺的基礎
使用javac,如Windows中:javac 文件名.java——Windows中爲命令提示符,Linux中爲shell提示符,Mac OS X中爲終端程序
運行後會生成.class文件——執行方法爲java 文件名
階段三:將程序加載到內存
JVM的類加載器讀取.class文件,然後將其傳入主存中。可以通過磁盤、網絡加載.class文件
階段四:字節驗證碼
字節碼驗證器對字節進行檢查,確定是有效的安全的
階段五:執行
JVM執行字節碼,然後執行,早期JVM一次只能解釋和執行一個一個字節碼,如今採用解釋與及時編譯相結合來執行字節碼。
所以執行相當於兩個階段:一是將源代碼翻譯成字節碼,二是將字節碼翻譯成機器語言使之可以在電腦上執行。
堆、棧、方法區
堆:實例化對象,數據儲存
棧:運行方法
方法區:加載類,分配類成員變量以及靜態方法的入口。含有常量池
註釋
註釋是每個程序不可缺少的部分,約定中每個程序都以註釋開始,註釋寫有每行程序的作用以及其他一些需要注意的地方。註釋是給程序員看的,編譯器會將註釋去掉。每個右大括號後最好都有一個註釋,說明此括號結束的是哪個方法或類。
註釋主要有三種形式:
1.行尾加//
2./…..註釋多行…./
3./*…..文檔註釋……/
類、標識符、方法
1.類
基本類型:byte、int、short、long、char、float、
double、blooean。用時注意所佔字節,數字注意精度。漢字佔用與char類型相同。
char、byte、int、long、float、double、short初始值爲0,blooean初始值爲false,引用類爲null。
每個java程序都至少要聲明一個類,關鍵字是class。格式爲:class加空格加類名稱,關鍵字new創建類的新對象。例:
Scanner input = new Scanner(System.in)
本行中創建了一個新變量input其類型爲Scanner,即調用Scanner類。
注:類名稱首字母一般大寫且與內容相關,public類與java文件同名
2.標識符
標識符組成:大小寫字母、數字、’_’、’$’。不能以數字開頭,不能含有空格,有大小寫區分。
3.方法
方法(method):一個類有一個或多個方法,但只能有一個main方法。
訪問修飾符:private、public
區別:
private只能由聲明他們的類訪問
public可由任意類訪問
輸出
輸出指令爲System.out.print (printf \ println)
print爲正常輸出
printf可用來顯示格式化數據:格式化指令符
println爲自動換行。
\n:換行符
\t:水平製表符
\r:回車符
運算符
- 算術運算符、取模運算符(%):+、-、*、/、%
- 自增自減運算符:++、–
- 關係(比較)運算符:< 、> 、 == 、 != 、<= 、>=
- 位運算符:&、|、~、^(異或)
- 邏輯運算符:&&、||、!
- 移位運算符:>>、<<、>>>
- 三目條件運算符:
三目條件運算符是一個邏輯判斷與賦值運算符的組合。語法如下:
<邏輯表達式> ? <表達式1> : <表達式2>
當邏輯表達式爲真時,表達式1有效;當邏輯表達式爲假時,表達式2有效。
邏輯運算符(&&、||)與位運算符(&、|)的區別:
1. 邏輯運算符只能針對boolean類型進行邏輯運算,而位運算還可以對數值進行邏輯運算。
2.邏輯運算符有短路情況,即前面的表達式可以得到最終結果時,後面的表達式將不被執行
運算符優先級和結合律
|運算符 |結合律 |類型 |
++、- -|從右到左 |一元 |
*、/、%|左到右|乘性
+、-|左到右 |加性 |
<、>、<=、>=、==、!=|左到右|比較關係關係|
&、|、^、&&、||、 |左到右 |邏輯關係
控制語句、
Java中的程序語句
基本三種語句
1. 順序語句:按前後順序執行的語句
2. 分支語句:選擇部分執行的語句
3. 循環語句:循環執行的一塊語句
結合方式
1. 簡單的將上一個語句的出口和下一個語句的入口連接起來
2. 控制語句嵌套,一條控制語句可以在另一條語句中
將多個語句按照恰當算法結合起來,就構成了程序 。
if…..else
if(布爾條件語句){
執行語句}else if(布爾條件語句){
執行語句}else
控制語句如果爲真則執行,否則進行下一條判定,直到最後一個else。
*if和if…else後不加“;”
while、 do…..while
while(布爾條件語句){
執行條件語句}
當布爾條件語句爲真則執行,否則退出語句
do{
執行語句}while(布爾條件語句)
如果布爾條件語句爲真,則繼續執行,否則退出
do…..while和while的區別:do….while是先執行一次後判斷,while是先判斷後執行。
如果while不能判斷爲假,則會無限循環。
for
for(初始化循環因子;布爾條件語句;循環因子改變){
執行語句}
當布爾條件語句爲真則執行,然後執行循環語句改變,然後在進行循環語句。
for的初始化循環因子不能在for外使用,for中三個語句都可省略,但” ; “不可省略。
switch ……case(default)
switch(<整形表達式>或<字符串表達式>){
case(跟switch後相同類型的常量)
執行語句 break;
case(跟switch後相同類型的常量)
執行語句 break;
case(跟switch後相同類型的常量)
執行語句 break;
default:
執行語句;
比較switch和case後,如果相同則執行,如果都不符合則執行默認分支default後。
一般將默認分支放最後,默認分支後break可以省略。
break、continue
break:用於從當前循環退出,執行控制語句後的第一條語句。
continue:用於結束本循環中其餘語句,繼續下一次循環
java三大要素:繼承、封裝、多態
繼承
每個類只能繼承一個類,object默認爲所有類的父類
關鍵字:
1.extends:表示繼承,用法爲<子類>extends<父類>
2.super:表示當前類的父類,用super()表示調用父類的構造方法
3.this:表示當前類的對象,還可以使用this()表示調用當前類的構造方法
4.fanil:被fanil修飾的變量爲常量,被fanil修飾的方法不能被重寫的,被fanil修飾的類不能被繼承
加載過程:
1.加載main方法
2.將父類的static方法分配執行入口
3.main進棧
4.加載子類——->加載父類
上轉型對象:將子類實例化爲父類,失去了子類新增的方法,和新增的變量,可以操縱父類的對象和方法,
如果方法被重寫,調用的是子類重寫的方法,上轉型對象可以再次強制轉換爲子類
方法的重寫以及隱藏:
隱藏即父類方法被子類覆蓋。
方法的重寫規則:
1.參數個數及對應類型必須相同
2.不得修改返回值
3.不得降低訪問級別
多態
當一個父類存在多個派生類的時候,並且每個派生類都重寫了父類中的某個方法,那麼父類的該方法在不同的子類中就出現了不同的行爲,這就是多態。
關鍵字abstract:由abstract修飾的方法叫抽象方法,非抽象類子類必須實現抽象父類的所有抽象方法,有abstract方法必須則類必須爲abstract類,abstract類中可以有非抽象方法,抽象類不能被實例化,abstract只關心此方法是否存在,而不關心此方法是否被實現。
接口(interface):接口中所有方法都爲抽象方法,關鍵字implements。<子類>
接口和父類:接口指一個方法,父類指一個類別。一個子類只可以有一個父類但可以有多個接口。
封裝 ##
把對象和過程包圍起來,實際上是將對象隱藏起來,使用者只能通過已定義的接口進行訪問,適當的封裝可以讓程序更便於理解,也使程序更加安全。
封裝的訪問級別:
public:可被當前類、同一個包中其他類、不同包中的子類、不同包中的非子類訪問
protected:可被當前類、同一個包中其他類、不同包中的子類訪問
友好的(即什麼都沒有):可被當前類、同一個包中其他類訪問
private:只可被當前類的內部訪問
Math類
Math類位於java.lang包中,可以直接使用,無需引入。
常量:
Math.PI:原周長與直徑之比π
Math.E:自然對數的基值e
常用方法:
abs(x)————-x的絕對值
ceil(x)————-x四捨五入
floor(x)————x向下取整
top(X)————-x向上取整
exp(x)————-e^x
max(x,y)、min(x,y)—取較大較小值
sqrt(x)————-x的平方根
pow(x,y)———–x的y次冪
cos、tan、sin——-三角函數
log(x)————–x取對數
String類
**創建方式:
1.String str = “”;
2.String str = new String();
3.String str = new String(“”);
4.char cs[] = {};String str = new String(cs)
5.String str = new String(char[],int start,int end)
cs中從start到end
常用方法:
length();String的長度
equals(str);比較和str是否相同
endWith(str)、startWith(str):判斷是否以str開頭、結尾
compareTo(String str):和str按字典順序比較;相同返回0,大則返回正數,小則返回負數。
indexOf(str):檢索str第一次出現的位置,如果沒有則返回-1.
lastIndexOf(str):檢索str最後一次出現的位置,沒有則返回-1.
indexOf(str,start):檢索str從start開始第一次出現的位置,沒有則返回-1.
lastIndexOf(str,end):檢索str到end位置最後一次出現的位置,沒有則返回-1
substring(start,end):截取從start到end位置的字符並返回。
replaceAll(old,new):以new替換old。
trim(str):去掉起始和結束位置的所有空格並返回餘下字符串
split(str):以str分割當前字符並返回字符串組
封裝類 ##**
基本數據類型的封裝類:
int————–>Integer
byte————>Byte
short———–>Short
long———–>Long
boolean——->Boolean
char———–>Character
double——–>Double
float———–>Float
基本數據類型封裝類的常用方法:
1.字符串轉化爲封裝類:封裝類.parse封裝類(<目標字符串>)
2.封裝類轉換爲字符串:String.valueOf(<目標>)=====>注:目標必須符合
Character常用方法:
isDgit(ch):是否是數字。
isLetter(ch):是否是字母。
isLetterOrDgit(ch):是否是字母或者數字。
isLowerCase(ch):是否是小寫字母。
isUpperCase(ch):是否是大寫字母。
toLower(ch)—toUpper(ch):轉換爲小寫大寫
isSpaceChar(ch):判斷是否是空格