您現在的位置是:首頁 > 手機遊戲首頁手機遊戲

Java基礎學習

簡介透過構造方法就可以實現把String轉換為StringBuilder集合基礎集合概述提供一種儲存空間可變的儲存模型,儲存的資料容量可以發生改變(動態陣列)ArrayList可調整大小的陣列實現 使用需要導包:是一種特殊的資料型別,泛型Arr

java如何用單分支輸出絕對值

Java基礎學習

java

JDk(Java Development KIt) 必須安裝

是java開發工具包,包含了JRE和編譯工具(javac。exe)和執行工具(java。exe) 透過官網http://www。oracle。com 下載

JRE(Java Runtime Environment)

是java的執行環境,包含JVM和核心類庫

JVM(保證Java的跨平臺)

核心類庫

step1:系統屬性sysdm。cpl進入>環境變數>系統變數

step2:找到path變數>選擇編輯>新增jdk下bin的路徑>\Java\jdk-11。0。11\bin

step3:重新進入dos介面,檢查java編譯及javac執行是否成功

開發工具

JDK檔案目錄

bin

該路徑下存放了JDK各種工具命令,javac和java就在這個目錄

conf

該路徑存放了JDK的相關配置檔案

include

該路徑存放了一些平臺特定的標頭檔案

jmods

該路徑存放了JDK的各種模板

legal

該路徑存放了JDK各種模板的授權文件

lib

該路徑下存放了JDK工具的一些補充JAR包

迴圈語句

for迴圈語句

while迴圈語句

初始化變數為全域性,外部可訪問

死迴圈常用 命令提示符視窗中Ctrl+C可以結束迴圈

do。。。while迴圈語句

至少執行一次

跳轉控制語句

continue

跳過本次迴圈

break

結束本層迴圈

Random產生一個隨機數

步驟

1導包

import java。util。Random;

2建立物件

Random r = new Random();

3獲取隨機數

int number = r。nextInt(10);

nextInt(10)裡面是10所以它的獲取範圍是0 到10,包括0,不包括10;

IDEA概述和安裝

IDEA全稱Intellij IDEA,是用於java語言開發的整合環境,它是業界公認的目前用於java程式開發最好的工具

整合環境

把程式碼編寫,編譯,執行,除錯等多種功能綜合到一起的開發工具

下載:https://www。jetbrains。com/idea/

快捷鍵

快速生成main()方法

psvm,回車

快速生成輸出語句

sout,回車

Ctrl+Alt+space(內容提示,程式碼補全)

格式化

Ctrl+Alt+L

看方法的原始碼

Ctrl+B

建立方法

ALt + Fn + i

檢視所有類的資訊

Alt+7

DOS命令

1。按下win+R

2。輸入cmd

常用命令

碟符名稱:

碟符切換,E:回車,表示切換到E盤

dir

檢視當前路徑下的內容

cd目錄

進入單級目錄,cditheima

cd。。

回退到上一級目錄

cd目錄1\目錄2\。。。

進入多級目錄,cditheima\JavaSE

cd\

回退到碟符目錄。

cls

清屏

exit

退出命令提示符視窗

執行 :Java 類名

範例:Java HelloWorld

編譯:Javac 檔名。java

範例:javac HelloWorld。java

ipconfig

訪問自己的ip地址

開啟命令提示符視窗

註釋

單行註釋

// 註釋資訊

多行註釋

/*註釋資訊*/

文件註釋

/**註釋資訊*/

關鍵字

關鍵字就是被java語言賦予了特定含義的單詞 關鍵字的字母全部小寫

常量(用final終態修飾)

在程式執行中,其值不可改變的量

字串常量

用雙引號括起來的內容

如:“HelloWorld”

整數常量

不帶小數的數字

如: 666,-88

小數常量

帶小數的數字

如:13。14,-5。21

字元常量

用單引號括起來的內容

如:‘A’ , ‘0’ , ‘我’

布林常量

布林值,表示真假

只有兩個值:true ,false

空常量

一個特殊的值,空值

值是:null

變數

在程式執行過程中,其值可以發生改變的量

格式:資料型別 變數名 = 變數值

例 : int a = 10;

long型別的變數定義的時候為防止整數過大後面需要加L float型別需要加F 防止型別不相容

資料型別

java語言是強型別語言,對於每一種資料都給出明確的資料型別,不同的資料型別也分配了不同的記憶體空間,所有它們表示的資料大小也是不一樣的。

基本資料型別

數值型

整數(byte,short,int,long)

關鍵字

關鍵字

記憶體佔用(位元組)

取值範圍

byte(位元組)

1

-128~127

short(短整型)

2

-32768~32767

int(預設)(整形)

4

-2的31次方到2的31次方-1

long(長整型)

8

-2的63次方到2的63次方-1

浮點數(float,double)

關鍵字

記憶體佔用(位元組)

取值範圍

float(單精度)

4

負數:-3。402823E+38到-1。401298E-45 正數:1。401298E-45到3。402823E+38

說明:E+38是乘以10的38次方 E-45是乘以10的負45次方

double(預設)(雙精度)

8

負數:-1。797693E+308到-4。9000000E-324 正數:4。9000000E-324到1。797693E+308

字元(char)

char

2

0-65535

非數值型

布林(boolean)

boolean

1

true,false

引用資料型別

類(class)

String字串

介面(inteface)

資料([])

型別轉化

自動型別轉化

把一個數據範圍小的值變數賦值給另一個數值範圍大的變數

double

float

long

int

short

byte

char

強制型別轉換

把一個數據範圍大的值變數賦值給另一個數值範圍小的變數

格式 目標資料型別 變數名 =(目標資料型別)值 如:int a = (int)88。88

執行結果是 88 一般不使用

運算子和表示式

算術運算子

+(加)

-(減)

*(乘)

/(除)

整數相除只能得到整數,想要得到小數,必須有浮點數的參與

%(取餘)

賦值運算子

=

+=

-=

*=

/=

%=

擴充套件的賦值運算子隱含強制型別轉換

自增自減運算子

++

——

在前是先自增在運算 在後是先運算在自增

關係運算符

==

!=

>

>=

<

<=

邏輯運算子

&(與)

|(或)

^(異或)

!(非)

&&(短路與)

||(短路或)

三元運算子

格式:關係表示式?表示式1:表示式2;

首先計算關係表示式的值 如果值為true,表示式1就是運算結果 如果值為false,表示式2就是運算結果

例:a > b ? 10 : 20;

鍵盤錄入

Scanner使用的基本步驟

1。導包

import java。util。Scanner;

必須在類定義的上面

2建立物件

Scanner sc = new Scanner(System。in);

sc是變數名

3接收資料

int i = sc。nextInt();

i是變數名

分支語句

if語句

switch語句

格式: switch(表示式){ case 值1: 語句體1; break;

default: 語句體; break;}

continue跳出本層

輸出語句

System。out。print(“內容”)

輸出內容不換行

System。out。println(“內容”)

輸入內容換行,裡面不傳內容能起到換行作用

單詞

desktop:桌面

main函式/方法

主方法 程式執行的入口

\t(相當於Tab縮排)

陣列()array

定義格式

資料型別[] 變數名

int[] arr

定義了一個int型別的陣列,陣列名是arr

推薦使用

資料型別 變數名[]

int arr[]

定義了一個int型別的變數,變數名是arr陣列

陣列初始化概念

java的陣列必須先初始化,才能使用。 所謂初始化 就是為陣列中的陣列元素分配記憶體空間,並未每個陣列元素賦值

動態初始化

初始化時只指定陣列長度,由系統為陣列分配初始化值

格式

資料型別[] 變數名 = new 資料型別[陣列長度] 例: int[] arr = new int[3];

靜態初始化

初始化時指定每個元素的值,由系統決定元素的長度

格式

資料型別[] 變數名 = new 資料型別[]{資料1,資料2,資料3, ……} 例:int[] arr = new int[]{1,2,3,。。。。}

簡化格式

int[] arr = {1,2,3]

記憶體分配

棧記憶體

儲存區域性變數

定義在方法中的變數,例如 arr 使用完畢 ,立即消失

堆記憶體

儲存new出來的內容(實體,物件)

陣列在初始化時,會為儲存空間新增預設值 整數:0 浮點數:0。0 布林:false 字元:空字元 引用資料型別:null ; 每一個new出來的東西都有一個地址值 使用完畢,會在垃圾回收器空閒時回收

方法(method)

方法概述

方法是將具有獨特功能的程式碼塊組織成一個整體,使其具有特殊功能的程式碼集

方法必須先建立才可以使用,該過程成為方法定義

方法建立後並不是直接執行的,需要手動使用後才執行,該過程成為方法呼叫

方法定義和呼叫

方法定義

public static void 方法名(){ 方法體 };

方法呼叫

方法名(); 注意:要做main方法裡面呼叫

帶引數方法的定義和呼叫

帶引數方法定義

格式

public static void 方法名(資料型別 變數名){}

public static void ff( int num1 , int num2){}

資料型別和變數名 也叫形參

注意

方法定義時,引數中的資料型別與變數名都不能缺少。

多個引數之間使用逗號(,)分隔

帶引數方法呼叫

格式

方法名(引數);引數: 變數或者值

ff(5,6);

裡面的引數叫做 實參

注意

方法呼叫時,引數的數量與型別必須方法定義中的相同

帶返回值方法的定義

格式

pulic static 資料型別 方法名(引數){

retuen 資料型別;

}

方法定義時return後面的返回值與方法定義的資料型別要匹配,否則報錯

return返回值

方法的注意事項

方法的通用格式

public static 返回值型別 方法名(引數){

方法體;

return 資料;

}

public static

修飾符,目前記住這個格式

返回值型別

方法操作完畢之後返回的資料的資料型別 如果方法操作完畢,沒有資料返回,這裡寫void,

方法名

呼叫方法時候使用的標識

引數

由資料型別和變數名組成,多個引數之間用逗號隔開

方法體

完成功能的程式碼塊

return

如果方法操作完畢,有資料返回,用於把資料返回給呼叫者

定義方法時,要做到兩個明確

明確返回值型別

主要是明確方法操作完畢後是否有資料返回,如果沒有,要寫void;如果有,寫對應的資料型別

明確引數

主要是明確引數的型別和數量

方法不能巢狀定義

void表示無返回值,可以省略return,也可以單獨書寫return,後面不能加資料

方法的過載

方法過載概述

方法過載指同一個類中定義的多個方法之間的關係,滿足後面條件的多個方法相互構成過載

1 多個方法在同一個類中

2 多個方法具有相同的方法名

3 多個方法對引數不相同,型別不同或者數量不同

方法過載特點

過載對應方法的定義,與方法的呼叫無關,但是方法在呼叫的時候,java虛擬機器會透過引數的不同來區分同名的方法

過載僅針對同一個類中方法的名稱與引數進行識別,與返回值無關,不能透過返回值來判斷兩個方法是否相互構成過載

方法的引數傳遞

方法的引數傳遞(基本型別)

對於基本資料的引數,形參的改變,不影響實際引數的值

方法引數傳遞(引用資料型別)

對應應用型別的引數,形參的改變,影響實際引數的值 因為引用資料型別它是引用堆記憶體的地址

Debug

概述

Debug:是供程式設計師使用的程式除錯工具,它可以用於檢視程式的執行流程,也可以用於追蹤程式執行過程來除錯程式

檢視程式執行流程和除錯程式

操作流程

Debug除錯,又稱為斷點除錯,斷點其實是一個標記,告訴我們從哪裡開始檢視

1。如何加斷點

選擇要設定斷點的程式碼行,在行號的區域後面單擊滑鼠左鍵即可

2。如何執行加了斷點的程式

在程式碼區域右鍵 Debug(除錯)執行

3。看哪裡

看Debugger(偵錯程式)視窗

看程式碼執行到哪裡了

變數

看程式碼執行過程中變數的變化

看Console(控制檯)視窗

看程式執行過程中的結果展示

4。點哪裡

點StepInto(F7)這個箭頭,也可以直接按F7 可以讓程式繼續向下執行

點Stop(停止)結束

5。如何刪除斷點

選擇要刪除的斷點,單擊滑鼠左鍵即可

面向物件基礎

類和物件

物件

萬物皆物件,客觀存在的事物都叫物件

面向物件

人關注的事物資訊

類是對現實中一類具有共同屬性和行為的事物的抽象

特點

類是物件的資料類

類是具有相同屬性和行為的一組物件的集合

物件的屬性

物件具有的各種特徵,每個物件的每個屬性都有特定的值

物件的行為

物件能夠執行的操作

類和物件的關係

類是對現實生活中一類具有共同屬性和行為的事物的抽象

物件

是能夠看得到摸的著的真實存在的實體

類和物件

類是物件的抽象

物件是類的實體

類的定義

類是java程式的基本組成單位

類是行為和屬性組成

屬性

在類中透過成員變數來體現(類中方法為的變數)

行為

在類中透過成員方法來體現(相比去掉static)

類定義的步驟

1 定義類

public class 類名 {}

2 編寫類的成員變數

變數1的資料型別 變數1

變數2的資料型別 變數2;

3 編寫類的成員方法

方法1; 方法2;

物件的使用

建立物件

格式

類名 物件名 = new 類名();

範例

Phone p = new Phone();

使用物件

使用成員變數

格式

物件名。變數名

範例

p。brand

成員變數和區域性變數的區別

成員變數

區域性變數

類中位置不同

類中方法外

方法內或者方法宣告上

記憶體中位置不同

堆記憶體

棧內容

生命週期不同

隨著物件的存在而存在,隨著物件的消失而消失

隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失

初始化值不同

有預設的初始化值

沒有預設的初始化值,必須先定義,賦值,才能使用

封裝(private)

private(許可權修飾符)

針對private修飾的成員變數,如果需要被其他類使用,提供相應的操作

get變數名()方法

用於獲取成員變數的值,方法用public修飾

set變數名(引數)方法

用於設定成員變數的值,方法用public修飾

this(關鍵字)

this修飾的變數用於指代成員變數

方法的形參如果與成員變數同名,不帶this修飾的變數指的形參,而不是成員變數

方法的形參沒有與成員同名,不帶this修飾的變數指的是成員變數

thisy用於解決區域性變數隱藏成員變數

代表所在類的物件引用

方法被那個物件呼叫,this就代表那個物件

構造方法

構造方法的概述

構造方法是一直特殊的方法,作用於建立物件

格式

功能

主要完成物件的資料的初始化

字串

API概述

API(APPlicaton Programming Interface):應用程式程式設計介面

Java API:指的就是JDK中提供的各種功能的java類

String概述

String類在java。lang包下,所以使用的時候不需要導包

String類代表字串,java程式中所有的雙引號字串,都是String類的物件

字串的特點

字串不可變,他們的值在建立後不能被更改

雖然String值是不可變的,但是它們可以被共享

字串效果上相對於字元陣列(char[]),但是底層原理是位元組陣列(byte[])

String 構造方法

public String()

建立一個空白字串物件,不含有任何內容

public String(char[] chs)

根據字元陣列的內容,來建立字串物件

public String(byte[] bys)

根據位元組陣列的內容,來建立字串物件

String s = “abc”;

直接賦值的方式建立字串物件,內容就是abc

推薦使用

String成員方法

public boolean equa(obj an obj)

比較字串的內容,嚴格區分大小寫

public char charAt(int index)

返回指定索引處的char值

pulic int length()

返回此字串的長度

public String[] split(String regex)

得到字串中每一個數字資料 regex 分割 比如 逗號 空格

String物件的·特點

透過new建立的字串物件,每一次new都會申請一個內容空間,雖然內容相同,但是地址值不同

以“ ”方法給出的字串,只要字元順序和大小寫相同,無論在程式程式碼中出現幾次,JVM都只會建立一個String物件,並在字元池中維護

字串的比較

使用 == 做比較

基本型別

比較的是資料值是否相同

引用型別

比較的是地址值是否相同

equals()

字串是一個物件用 == 做比較,比較的是地址值,要比較內容是否相同,要透過equals()方法實現

遍歷字串

charAt()

Public char charAt(int index)

返回指定索引處的char值,字串的索引是從0開始

lenght()

獲取字串的長度

遍歷字串通用格式

StringBuilder

StringBuilder概述

StringBuilder是一個可變的字串類,我們可以把他看成一個容器,這裡指定的是StringBuilder物件中的內容是可變的

String和StringBuilber的區別

string的內容是不可變的

StringBuilder得內容是可變的

StringBuilder構造方法

public StringBuilder()

建立一個空白可變的字串物件,不含有任何內容

public StringBuilder(String str)

根據字串的內容,來建立可變字串物件

stringBuilder成員方法

public StringBuilder append(任意資料型別)

新增資料,並返回物件本身

public StringBuilder reverse()

放回相反的字元序列 反轉

StringBuilder和String相互轉換

StringBuilder轉換為String

public String toString();

透過toString()就可以實現StringBuilder轉換為String

String轉換為StringBuilder

public StringBuilder(String s);

透過構造方法就可以實現把String轉換為StringBuilder

集合基礎

集合概述

提供一種儲存空間可變的儲存模型,儲存的資料容量可以發生改變(動態陣列)

ArrayList

可調整大小的陣列實現 使用需要導包

:是一種特殊的資料型別,泛型

ArrayList構造方法和新增方法

public ArrayList()

建立一個空的集合物件

public boolean add(E e)

將指定的元素追加到此集合的末尾

public void add(int index , E element)

在此集合中的指定位置插入指定的元素

public boolean remove(Object 0)

刪除指定的元素,返回刪除是否成功

public E remove(int index)

刪除指定索引處的元素,返回被刪除的元素

public E set(int index,E element)

修改指定索引處的元素,返回被修改的元素

public E get(int index)

返回指定索引處的元素

public int size()

返回集合中的元素個數

遍歷集合

透過get()獲取集合中的每一個元素

透過size()獲取集合長度

通用格式

繼承

繼承概述

繼承是面向物件三大特徵之一,可以使得子類具有父類的屬性和方法,還可以在子類中重新定義,追加屬性和方法

繼承的格式

格式

oublic class 子類名 extends 父類名{}

關鍵字 extends 子繼承父

範例

public class Zi extends Fu {}

Fu:是父類,也被稱為基類,超類

Zi:是子類,也稱派生類

繼承的好處和弊端

好處

提高了程式碼的複用性(多個相同的成員可以放到同一個類中)

提高了程式碼的維護性(如果方法的程式碼需要修改,修改一次即可)

弊端

繼承讓類與類之間產生了關係,類的耦合性增強了,當父類發生變化時子類不得不跟著變化,消弱了子類得獨立性

繼承中變數的訪問特點

在子類方法中訪問一個變數

super

super概述

super關鍵字的用法和this關鍵字的用法相似

this代表本類物件的引用,

super代父類儲存空間的標識(可以理解為父類物件引用)

繼承中構造方法的訪問特點

子類在所有的構造方法預設都會訪問父類中無參的構成方法

因為子類會繼承父類中的資料,可能還會使用父類的資料,所以,子類初始化之前,一定要先完成父類資料的初始化

每一個子類構造方法的第一語句預設都是super()

如果父類中沒有無參構造方法,只有帶參構造方法

透過使用super關鍵字去顯示的呼叫父類的帶參構造方法

在父類中自己提供一個無參構造方法

推薦,自己給出

方法重寫

方法重寫概述

子類中出現了和父類中一模一樣的方法宣告

方法重寫的應用

當子類需要父類的功能,而功能主體子類有自己特定的內容時,可以重寫父類中的方法,這樣,既沿襲了父類的功能,又定義了子類特有的內容

@Override

是一個註釋 , 可以幫助我們檢查重寫方法宣告的正確性

方法重寫注意事項

私有方法不能被重寫(父類私有成員子類不能被繼承)

子類方法訪問許可權不 能比父類低(public > 預設 > 私有)

繼承的注意事項

java中類只支援單繼承,不支援多繼承

java中類支援多層繼承

修飾符

包(package)

包的概述

包其實就是檔案件,作用是對類進行分類管理

包的定義格式

格式

package 包名;(多級包用。分開)

範例

package com。java;

帶包的java類編譯和執行

手動鍵包(懶得寫)

自動鍵包

編譯

java -d。HelloWorld。java

執行

java 。com。java。HelloWrold

導包

導包的概述

使用不同包下的類時,使用的時候要寫類的全路徑寫起來太麻煩了,為了簡化帶包的操作,Java就提供了導包的功能

導包的格式

格式

import 包名;

範例

import cn。java。Teachre

修飾符

許可權修飾符

private

同一個類中

預設

同一個包中子類無關類

protected

不同包的子類

public

不同包的無關類

狀態修飾符

final(最終態)

final關鍵字是最終的意思,可以修飾成員方法,成員變數,類

final修飾的特點

修飾方法

表明該方法說最終方法,不能被重寫

修飾變數

變數是基本資料型別

表明該變數說常量,不能再次被賦值

基本資料型別的資料值不能發生改變

變數是引用資料型別

因為引用資料型別的變數,指向的是地址值,所有地址值不能改變,但是地址裡面的內容可以改變的

修飾類

修飾類,表明該類是最終類,不能被繼承

static(靜態)

static關鍵字是靜態的意思,可以修飾成員方法,成員變數

static 修飾的特點

被類的所有物件共享, 這也是我們判斷是否使用靜態關鍵字的條件

static訪問特點

非靜態的成員方法

能訪問靜態和非靜態的成員方法和變數

靜態的成員方法

只能訪問靜態的成員方法和變數

多型

多型的概述

同一個物件,在不同時刻表現出來的不同形態

多型的前提和體現

有繼承/實現關係

有方法重寫

有父類引用指向子類物件

多型中成員訪問特點

成員變數

編譯看父類,執行看父類

成員方法

編譯看父類,執行看子類

多型的好處和弊端

好處

提高程式的擴充套件性

具體體現:定義方法的時候,使用父型別作為引數,將來在使用的時候,使用具體的子型別參與操作

弊端

不能使用子類的特有功能

多型中的轉型

向上轉型

不能訪問子類特有的方法

向下轉型

轉型為可以訪問子類特有的方法

抽象類(abstract)

抽象類的概述

在java中,一個沒有方法體的方法應該定義為抽象方法,而類中如果有抽象方法,該類必須定義為抽象類

抽象類的特點

抽象類和抽象方法必須使用abstract關鍵字修飾

public abstract class 類名{}

public abstract void eat();

抽象類中不一定有抽象方法,有抽象方法的類一定是抽象類

抽象類不能例項化

抽象類要例項化的話,要參照多型的方式,透過子類物件例項化,這叫抽象多型

抽象類的子類

要麼重寫抽象類中的所有抽象方法

要麼他本身是抽象類

抽象類的成員特點

成員變數

可以是變數

也可以是常量

構造方法

有構造方法,但是不能例項化,他的作用於子類訪問父類資料的初始化

成員方法

可以有抽象方法:限定子類必須完成某些動作

也可以有非抽象方法:提高程式碼的複用性,依靠子類繼承實現

介面

介面的概述

介面就是一種公共的規範標準,只要符合規範標準,大家都可以通用,java中的介面更多的體現在對行為的抽象

介面的特點

介面用關鍵字interface修飾

public interface 介面名{}

類實現介面用implements表示

public class 類名 implements 介面名{}

介面不能直接例項化

介面需要參照多型的方式,透過實現類物件例項化,這叫介面多型

多型的形式

具體多型

抽象多型

介面多型

多型的前提

有繼承或者實現關係;有方法重寫;有父(類/介面)引用指向(子/實現)類物件

介面的實現類

要麼重寫介面中的所有抽象方法

要麼是抽象類

介面的成員特點

成員變數

只能是常量

因為有預設修飾符 public static final

構成方法

介面沒有構造方法,因為介面主要是對行為進行抽象,是沒有具體存在

一個類如果沒有父類,預設繼承在Object類

成員方法

只能是抽象方法

預設修飾符 public abstract

類和介面的關係

類和類的關係

繼承關係,只能單繼承,但是可以多層繼承

類和介面的關係

實現關係,可以單實現,也可以多實現,還可以在繼承一個類的同時實現多個介面

介面和介面的關係

繼承關係,可以單繼承,也可以多繼承

抽象類和介面的區別

成員區別

抽象類

變數,常量;有構造方法;由抽象方法,也有非抽象方法

介面

常量;抽象方法

關係區別

類與類

繼承,單繼承

類與介面

實現,可以單實現,也可以多實現

介面與介面

繼承,單繼承,多繼承

設計理論區別

抽象類

對類抽象,包括屬性,行為

介面

對行為抽象,主要是行為

形參和返回值

類名

方法的形參是類名,其實需要的是該類的物件

方法的返回值是類名,返回的是該類的物件

抽象類

方法的形參是抽象類名,其實需要的是該抽象類的子類物件

方法的返回值是抽象類,返回的是該抽象類的子類物件

介面

方法的形參的介面名,其實需要的是該介面的·實現類

方法的返回值是介面名,返回的是該介面的實現物件

內部類

內部類概述

內部類就是在一個類中定義一個類,舉例:在一個類A的內部定義一個類B,類B就是被成為內部類

內部類的定義格式

格式

內部類訪問特點

內部類可以直接訪問外部類的成員,包括私有

外部類要訪問內部類的成員,必須建立物件

成員內部類

按照內部類在類中定義的位置不同,可以分為如下兩種形式

在類得成員位置:成員內部類

成員內部類在外界建立物件使用

格式

在類的區域性位置:區域性內部類

區域性內部類是在方法定義的類,所以外界是無法直接使用。需要在方法內部建立物件並使用,該類可以直接訪問外部類的成員,也可以訪問方法內部的區域性變數

匿名內部類

前提:繼承一個類或者介面,這裡的類可以是具體類也可以是抽象類,一般抽象類居多

格式

範例

它本質是一個繼承了該類或者實現了該介面的子類匿名物件

常用API

Math

Math類概述

Math包含執行基本數字運算的方法

而且它沒有構造方法,不需要導包,成員都是靜態的,可以直接透過類名呼叫

Math類的常用方法

public static int abc(int a)

返回引數的絕對值

public static double ceil(double a)

放回大於或等於引數的最小double值,等於一個整數

public static double floor(double a)

返回小於或等於引數的最大double值,等於一個整數

public static int round(float a)

按照四捨五入返回最接近引數的int

public static max(int a,inta b)

返回兩個int值中的較大值

publi static int min(int a,int b)

返回兩個值中的較小值

public static double pow(double a,double b)

放回a的b次冪的值

public static double random()

返回值為double的隨機數,範圍(0。0,1。0)取得到0。0取不到1。0

System

System類的概述

System包含幾個有用的類欄位和方法,它不能被例項化,它的成員都是被靜態修飾,所以可以之間用類名呼叫

System類的常用方法

public static void exit(int status)

終止當前執行的java虛擬機器,非零表示異常終止

public static long currentTimeMillis()

返回當前時間(以毫秒為單位) 返回的是當前時間和1970年1月1日之間的時間差異;

Object

Object類的概述

Object是類層次結構的根,每個類都可以將Object作為超累,所以類都直接或間接的繼承該類 它的構造方法只有一個無參構造方法

Object常用方法

tostring

返回物件的字串表示式,建議所有子類重寫此方法 ,最好自動生成

equals

比較物件是否相等,預設比較地址,重寫可以比較內容,自動生成

Arrays

氣泡排序

排序

將一組資料按照固定的規則排序

氣泡排序

一種排序的方式,對要進行排序的資料中相鄰的資料進行兩兩比較,將較大的資料放在後面,依次對所有的資料進行操作,直至所有資料按要求完成排序

Arrays類的概述

Arrays類包含用於運算元組的各種方法(如排序和搜尋),需要導包

Arrays類的常用方法

public static String toString(int[] a)

返回值讀陣列的內容的字串表示形式

public static void sort(int[] a)

按照數字順序指定的陣列

基本型別包裝類

基本資料型別包裝類的概述

將基本資料型別封裝成物件的好處在於可以在物件中定義更多的功能方法操作該資料

常用的操作之一:用於基本資料型別與字串之間的轉換

基本資料型別對應的包裝類

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Character

boolean

Boolean

Integer類的概述

包裝一個物件在的原始型別int的值

Integer類常用的方法

public static Integer valueOf(int i)

返回表示指定的int值得Integer例項

public static Integer valueOf(String s)

返回一個儲存指定值得Integer物件String

int和String得相互轉換

int轉換String

public static String valueOf(int i)

返回int引數得字串表示形式,該方法是String類中的方法

String轉換為int

public static int parseInt(String s)

將字串解析為int型別,該方法是Integer類中的方法

自動裝箱和拆箱

裝箱

把基本資料型別轉換為對應得包裝類型別

拆箱

把包裝類型別轉化為對應得基本資料型別

注意:在使用包裝類型別得時候,如果做操作,最好先判斷是否為null,,推薦只要是物件,在使用前就必須進行不為null的判斷

日期類

Date

Date類的概述

Date代表了一個特定的時間,精確到毫秒

Date類的構造方法

public Dat()

分配一個Date物件,並初始化,以便它代表被分配的時間,精確到毫秒

public Date(long date)

分配一個Date物件,並將其初始化為表示從標準基準時間起指定的毫秒數

Dtae類的常用方法

public long getTime()

獲取的是日期物件從1970年1月1日00:00:00到現在的毫秒值

public void setTime(long time)

設定時間,給的毫秒值

SimpleDateFormat

SimpleDateFormat類的概述

SimpleDateFormat是一個具體類,用於以區域設定敏感的方式格式化和解析日期,重點學習日期格式化和解析

日期的時間的格式

日期和時間格式由日期和時間模式字元指定,在日期和時間模式字串指定,在日期和時間模式字元中,從‘A’到‘z’以及從‘a’到‘z’引號字母被解釋為表示日期或時間字串的元件的模式字母

常用的模式字母對應關係

y

M

d

H

m

s

SimpleDateFormat的構造方法

public SimpleDateFormat()

構造一個SimpleDateFormat,使用預設模式和日期格式

public SimpleDateFormat(String pattern)

構造一個SimpleDateFormat,使用給定的模式和預設的日期格式

SimpleDateFormat格式化和解析日期

格式化(從Date到String)

public final String format(Date date)

將日期格式化成日期/時間字串

解析 (從String到Date)

public Date parse(String source)

從給定的字串的開始解析文字以生成日期

Calendar

Calendar類的概述

Calendar是一個抽象類,為某一時刻和一組日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位提供一些方法

getInstance類方法

Calendar rightNow= Calendar。getInstance();

Celendar提供了一個類方法getInstance用於獲取Calendar物件,其日曆欄位已使用當前日期和時間初始化

Calendar的常用方法

public int get(int field)

返回個定日曆欄位的值

public abstract void add(int field,int amount)

根據日曆的規則,將指定的時間量新增或減去給定的日曆欄位

public final void set(int year,int month,int date)

設定當前的日曆的年月日

異常

異常的概述

異常就是程式出現了不正常的情況

異常體系

Throwable

所有異常的祖宗類

Errot

嚴重的問題,不需要解決

Exception

Exception:稱為異常類,它表示程式本身可以處理的問題

RuntimeException

在編譯期間是不檢查的,出現問題後,需要我們回來修改程式碼

非RuntimeException

編譯期就必須處理,否則程式不能透過編譯,就不能正常運行了

JVM的預設處理方案

如果程式出現問題,我們沒有做任何處理,最終JVM會預設的處理

1。把異常的名稱,異常原因及異常出現的位置等資訊輸出在控制檯

2。程式停止執行

異常處理

如果程式出現問題,我們需要自己來處理有兩種方案

try 。。。。 catch 。。。。。

格式

執行流程

程式從try裡面的程式碼開始執行,出現異常,會自動生成一個異常類物件,該異常物件將被提交給java執行時系統。當java執行時系統接收到異常物件時,會到catch中去找匹配的異常類找到後進行異常的處理。執行完畢之後,程式還可以繼續往下執行

throws(丟擲)

雖然我們透過try 。。。catch。。。可以對異常進行處理,但是並不是所有的情況我們都有許可權進行異常的處理,也就是說,有些時候可能出現的異常是我們處理不了的,針對這種情況,java提供了throws的處理方案

格式

throws 異常類名

注意:這個格式是跟在方法的括號後面的

快捷鍵

Alt+回車

Throwable的成員方法

public String getMessage()

返回throwable的詳細訊息字串

public String toString()

返回此可丟擲的簡短描述

public void printStackTrace()

把異常的錯誤信輸出在控制檯

編譯時異常和執行時異常的區別

java中的異常被分為兩大類:編譯時異常和執行時異常,也被稱為受檢異常和非受檢異常所有的RuntimeException類及其子類被稱為執行時異常,其他的異常都是編譯時異常

編譯時異常

必須顯示處理,否則程式就會發生錯誤,無法透過編譯

執行時異常

無需顯示處理,也可以和編譯時異常一樣處理

自定義異常

格式

範例

throws和throw的區別

throws

用在方法聲明後面,跟的是異常類名

表示丟擲異常,由該方法的呼叫者來處理

表示出現異常的一種可能性,並不一定會發生這些異常

throw

用在方法體內,跟的是異常物件名

表示丟擲異常,由方法體內的語句處理

執行throw一定丟擲了自定義的異常

集合進階

集合類體系結構

集合

Collection單例(介面):滿足規則的一系列的元素

List可重複(介面)

ArrayList(實現類)

LinKedList(實現類)

Set不可重複(介面)

HashSet(實現類)

TreeSet(實現類)

Map雙列(介面):key——>value對映關係

HashMap(實現類)

Collection

Collection集合概述

是單列集合的頂層介面,它表示一組物件,這些物件也稱為Collection的元素

JDK不提供此介面的任何直接實現,它提供更具體子介面(如Set和List)實現

建立Collection集合的物件

多型的方式

具體的實現類ArrayList

Collection集合常用方法

boolean add(E e)

新增元素

boolean remove(Object 0)

從集合中移除指定的元素

void clear()

清空集合中的所有元素

boolean contains(Object 0)

判斷集合中是否存在指定的元素

boolean isEmpty()

判斷集合是否為空

int size()

集合的長度,也就是集合中元素的個數

Collection集合的遍歷

Iterator

Iterator:迭代器,集合的專用遍歷方式

Iterator iterator();

返回此集合中元素的迭代器,透過集合的iterator()方法得到

迭代器是透過集合的iterator()得到的,所以我們說它是依賴於集合而存在的

Iterator的常用方法

E next()

返回迭代中的下一個元素

boolean hasNext();

如果迭代具有更多元素,則返回true

List

List集合的概述

有序集合(也稱為序列),使用者可以精確控制例表中每一個元素的插入位置,使用者可以透過整數索引訪問元素,並搜尋例表中的元素

與Set集合不同,例表通常允許重複的元素

List集合的特點

有序

儲存和取出的元素順序一致

可重複

儲存的元素可以重複

List集合特有方法

void add(int index,E element)

在此集合中的指定位置插入指定的元素

E remove(int index)

刪除指定索引處的元素。返回被刪除的元素

E set(int index,E element)

修改指定索引處的元素,返回被修改的元素

E get(int index)

放回指定索引處的元素

併發修改異常

ConcurrentModificationException

產生原因

迭代器遍歷的過程中,透過集合修改了集合對的長度,造成了next方法的預期修改值和實際修改值不一致

解決方案

用for遍歷

ListIterator(例表迭代器)

概述

透過List集合的listIterator()方法得到,所以說它是List集合特有的迭代器

用於程式設計師沿 任一方法遍歷例表的例表迭代器,在迭代期間修改例表,並獲取例表中迭代器的當前位置

ListIterator的常用方法

E next()

返回迭代中的下一個元素

boolean hasNext()

如果迭代具有更多元素,則返回true

E previous()

返回例表的下一個元素

boolean hasPrevious()

如果例表迭代器在相反方向遍歷例表具有更多元素,則返回true

void add(E e)

將指定的元素插入例表

增強for迴圈

概述

增強for:簡化陣列的Collection集合的遍歷

實現terable介面的類允許其物件成為增強for語句的目標

它是JDK5之後出現的,其內部原理是一個Iterator迭代器

增強for的格式

格式

範例

資料結構

概述

資料結構是計算機儲存,組織資料的方式。是指相互之間存在一種或多種特定關係的資料元素的集合

精心選擇的資料結構可以帶來更高的執行或者儲存效率

常見資料結構 棧

資料進入棧模型的過程稱為

壓/進棧

資料離開棧模型的過程稱為

彈/出棧

棧是一種資料先進後出的模型

最先進去的是棧底元素

最後的是棧頂元素

常見資料結構 佇列

資料從後端進入佇列模型的過程稱為

入佇列

資料從前端離開佇列模型的過程稱為

出佇列

佇列是一種資料先進先出的模型

常見資料結構 陣列

資料是一種查詢塊,增刪慢的模型

查詢資料透過索引定位,查詢任意資料耗時相同,查詢效率高

刪除資料時,要將原始資料刪除,同時後面每一個數據前移,刪除效率低

新增資料時,新增位置後的每一個數據後移,在新增元素,新增效率極低

常見資料結構 連結串列

結點

結點的儲存位置(地址)

儲存具體的資料

下一個結點的地址

查詢資料是否存在,必須從頭(head)開始查詢

連結串列是一種增刪塊的模型(相對陣列)

連結串列是一種查詢慢的模型(相對陣列)

List集合常用子類特點

ArrayList

底層資料結構是陣列,查詢塊,增刪慢

LinkedList

底層資料結構是連結串列,查詢慢,增刪塊

LinKedList集合 特有功能

public void addFirst(E e)

在該例表開頭插入指定的元素

public void addLast(E e)

將指定的元素追加到此列表的末尾

public E getFirst()

返回此例表中的第一個元素

public E getLast()

返回此列表中的最後一個元素

public E removeFirst()

從例表中刪除並返回一個元素

public E removeLast()

從列表在刪除1並返回最後一個元素

Set

Set集合概述和特點

不包含重複元素的集合

沒有帶索引的方法,所以不能使用普通for迴圈遍歷

雜湊值

概述

雜湊值是根據物件的地址或者字串或者數字算出的int型別的資料

Object類中有一個方法可以獲取物件的雜湊值

public int hashCode();

物件的雜湊值特點

同一個物件多次呼叫hashCode()方法返回的雜湊值是相同的

預設情況下,不同物件的雜湊值是不同的。重寫hashCode()方法,可以實現讓不同的物件的雜湊值相同

HashSet集合

概述和特點

底層資料結構是雜湊表

對集合的迭代順序不作任何保證,不保證儲存和取出的元素順序一致

沒有帶索引的方法,所以不能使用普通for循化遍歷

由於是Set集合,所以是不包含重複元素的集合

HashSet集合保證元素不重複分析

HashSet集合新增一個元素的過程

呼叫物件的hashCode()方法獲取物件的雜湊值

根據物件的雜湊值計算物件的儲存位置

該位置是否有元素存在

遍歷該位置的元素,和新存入的元素比較雜湊值是否相同

有相同的

呼叫equals()方法比較物件內容是否相等

返回true

說明元素重複,不儲存

要保證元素唯一性,需要重寫hashCode()和equals()

常見資料結構 雜湊表

雜湊表

JDk8之前,底層採用資料+連結串列實現,可以說是一個元素為連結串列的陣列

JDK8以後,在長度比較長的時候,底層實現了最佳化

LinKedHashSet集合

概述和特點

雜湊表和連結串列實現的Set介面,具有可預測的迭代次序

由連結串列保證元素的有序,也就是說元素的儲存和取出順序是一致的

由雜湊表保證元素的唯一性,也就是說沒有重複的元素

TreeSet集合

概述特點

元素有序,這裡得順序不是指儲存和取出得順序,而是按照一定得規則進行排序,具體排序方法取決於構造方法

沒有帶索引得方法,所以不能使用for迴圈遍歷

元素不能重複

構造方法

TreeSet()

根據其元素的自然排序進行排序

TreeSet(Comparator Comparator)

根據指定的比較強進行排序

自然排序Comparable

用TreeSet集合儲存自定義物件,無參構造方法使用的是自然排序。對元素進行排序的

自然排序,就是讓元素所屬的類實現Comparable介面。並重寫compareT0(To)方法

重寫方法時,一定要注意排序規則必須按照要求的主要條件和次要條件來寫

比較器排序Comparator

同treeSet集合儲存自定義物件,帶參構造方法使用的是比較器排序,對元素進行排序

比較器排序,就是讓集合構造方法接收Comparator是實現類物件,重寫compare(To 1,To2)方法

重寫方法時,一定要注意排序規則必須按照要求的主要條件和次要條件來寫

泛型

泛型概述

泛型是JDK5中引入的特性,它提供了編譯時型別安全檢查機制,該機制允許在編譯時檢查到非法的型別

它的本質是引數化型別,也就是說所操作的資料型別被指定一個引數

就是將型別由原來的具體的型別引數化,然後在使用/呼叫時傳入具體的型別

這種引數型別可以用在類,方法和介面中,分別稱為泛型類,泛型方法和泛型介面

泛型只能是引用資料型別

泛型定義格式

<型別>

指定一種型別的格式,這裡的型別可以看成是形參

<型別1,型別2 。。。>

指定多種型別的格式,多種型別之間用逗號隔開,

泛型的好處

把執行時期的問題提到了編譯期間

避免了強制轉換

泛型類

泛型類定義格式

格式

範例

泛型方法

泛型方法的定義格式

格式

範例

泛型介面

泛型介面的定義格式

格式

範例

型別萬用字元

型別通配

<?>

List<?>

為了表示各種泛型List的父類,可以使用型別萬用字元

表示元素型別未知的List,它的元素可以匹配任何的型別

這種帶萬用字元的List僅表示它是各種泛型List的父類,並不能把元素新增到其中

<? extends 型別>(型別萬用字元上限)

只代表某一類泛型List的父類

List<? extends Number>

它表示的型別是Number或者其子型別

<? super 型別>(型別萬用字元下限)

List<? super Number>

它表示的型別是Number或者其父類

可變引數

概述

可變引數又稱為引數個數可變,用作方法的形參出現,那麼方法引數個數就是可變的

格式

範例

注意

這裡的變數其實是一個數組

如果一個方法有多個引數,包含可變引數,可變引數要放在最後

Arrays工具類中

public static List asList(T。。。a)

返回由指定陣列支援的固定大小的例表

不能增刪,只能改

List介面中

public static List of(E。。。 elements)

返回包含任意數量元素的不可變例表

不能增刪改

Set介面中

public static Set of(E。。。 elements)

返回一個包含任意數量元素的不可變集合

不能重複,不能增刪,Set沒有修改方法

Map

Map集合概述

Interface Map

K:鍵的型別;V:值得型別

將鍵對映到值的物件;不能包含重複的鍵,每一個鍵可以對映到最多一個值

建立Map集合的物件

多型的方式

Map集合的基本功能方法

V put(K key,V value)

新增元素

V remove(Object key)

根據鍵刪除鍵值對元素

void cleat()

移除所有的鍵值對元素

boolean containsKey(Object key)

判斷集合是否包含指定的鍵

boolean containsValue(Object value)

判斷集合是否包含指定的值

boolean isEmpty()

判斷集合是否為空

int size()

集合的長度,也就是集合中鍵值對的個數

Map集合的獲取功能方法

V get(Object key)

根據鍵獲取值

SetkeySet()

獲取所有鍵的集合

Collection values()

獲取所有值的集合

Set>entrySet()

獲取所有鍵對物件的集合

Collections

計算機儲存單元

1B(位元組) = 8bit

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

將元素儲存到該位置

Top