最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

offer Java基礎(chǔ)精選從編譯到集合

2023-04-30 04:44 作者:開源開發(fā)者  | 我要投稿


?

?

JRE支持.class文件,不能對(duì).java .jsp編譯為class文件

?

標(biāo)識(shí)符 _ $

?

關(guān)鍵字

transient volatile

?

?

char 2個(gè) 字節(jié) 16位

1.4E-14 = 1.4*10^-14

?

八進(jìn)制 0開頭 包括0-7

16進(jìn)制 0x或0X 包括0-9 a-f A-F

整形默認(rèn)是 int

l L

浮點(diǎn)型默認(rèn)是Double

D d

F f

?

字符型可以用 'A' '65' 'a' '97' '\uxxxx'

?

7位標(biāo)準(zhǔn)ASCII碼 128種字符 表示大小寫字母、標(biāo)點(diǎn)符號(hào)、美式英語控制字符

8位擴(kuò)展ASCII碼 256種字符(后128位)表示特殊符號(hào)、外來語言字母

Unicode編碼 支持世界所有字符集

'\uxxxx'

?

?

數(shù)值型 + 字符型 = 字符型轉(zhuǎn)換為數(shù)值型進(jìn)行計(jì)算

數(shù)值型 + 字符串型 = 連接運(yùn)算

字符串 + 數(shù)值型 / 數(shù)值型 = 由于/優(yōu)先級(jí)更加高,先除后字符串連接

變量可用中文表示

科學(xué)計(jì)數(shù)法只能用于浮點(diǎn)型

double d=1.23E5 // d=123000.0 = 1.23*10^5

float f=1.23e5f

?

double 轉(zhuǎn)float會(huì)丟失精度

int long 轉(zhuǎn) float會(huì)丟失精度

long 轉(zhuǎn)double會(huì)丟失精度

浮點(diǎn)型位數(shù)過多輸出會(huì)用科學(xué)計(jì)數(shù)法表示

表示位數(shù)過多時(shí)精度不準(zhǔn)確

?

?

單精度的長(zhǎng)度問題,最后一位的計(jì)算結(jié)果被忽略了

不考慮最后一位

小數(shù)點(diǎn)后最多保留7位

這里是8位了

因?yàn)榫炔粔蛟斐闪藬?shù)據(jù)丟失

需要使用BigDecimal類了

?

局部變量必須初始化才能使用

?

分子分母都是整形 商為整形

13/5=2

分子或分母有一個(gè)是浮點(diǎn)型 商為浮點(diǎn)型Double

13.0/5=2.6

求余數(shù)都有整形 結(jié)果為整形

13%5=3

求余數(shù)有一個(gè)浮點(diǎn)型 結(jié)果為浮點(diǎn)型

1 3.5%5=3.5D

?

前++ 先自增后賦值

后++ 先賦值后自增

'A' > 'B' 為false ?比較的是ASCII

float f=5.0f

long l=5

f==l 結(jié)果為true 只要相等

?

關(guān)于 && 與 ||

a && b:a和b同時(shí)為true 才返回 true, 否則返回false;a || b:a或b任意一個(gè)為true 就返回true , 否則返回false

?

還要運(yùn)算 所以n=4

?

不用運(yùn)算 所以n=3

?

?

boolean?():()

?

運(yùn)算符優(yōu)先級(jí)() ! ++ -- * / % + - >= <= > < == != && & || | = *= += -= %= /=

()最高

=最低

?

?

switch是一個(gè)常量值

char byte short int Character Byte Short Integer String enum

new Scanner(System.in)

scanner.next()

?

?

(int)(Math.random()*10+1)

?

?

?

?

?

一維數(shù)組

int[] array;

int array[];

int[] array;

array = new int[10];

int[] array = new int[10];

int[] array = new int[]{1,2,3,4}

int[] array = new int[]{};

int[] array = {1,2,3,4}

int[] array = {};

array.length

array[array.length-1]

?

增強(qiáng)型for循環(huán)

for(:)

冒泡排序

?

二維數(shù)組

int[][] array

array = new int[3][3]

?

int array[][]

array = new int[3][] 只指定行數(shù)

array[0] = new int[3]

array[1] ?= new int[4]

?

int[] array[]

?

int[][] array = new int[][]{{1,2,3},{1,2}}

int[][] array = new int[][]{{},{},{},{}} 4行

int[][] array = {{1,2},{1,2,3}}

int[][] array = new int[][]{};無列

int[][] array = {};

?

array.length 行數(shù)

array[0].length 第一行的列數(shù)

?

可變參數(shù)不能定義在第一位 一個(gè)方法只能有一個(gè)可變參數(shù)

可以將數(shù)組傳遞給可變參數(shù)

數(shù)組作為參數(shù)不能傳遞可變參數(shù)

?

(int,int...)

(int,int[]) 報(bào)錯(cuò) 不能重載

?

(int,int...)

(int,int)

(1,2)調(diào)用的不是可變參數(shù)

?

scanner.nextInt()

正確處理異常

?

聲明對(duì)象時(shí) ??臻g為null

new時(shí)堆空間開辟了內(nèi)存 棧持有堆空間的地址引用

?

?

沒有指定構(gòu)造方法 系統(tǒng)會(huì)自動(dòng)添加構(gòu)造方法

進(jìn)入構(gòu)造方法名第一行 this實(shí)例對(duì)象產(chǎn)生

?

賦值給本身了

?

?

可以定義與構(gòu)造方法同名的普通方法

?

在本類調(diào)用方法可加this 可不加

構(gòu)造方法可以調(diào)用構(gòu)造方法

this() 要放在構(gòu)造方法第一行

?

?

封裝增加了防御性編程

package包需要放在第一行 只能有一個(gè)

?

報(bào)錯(cuò)

?

加載有指定Cat類的包

*下有Cat類

?

跟順序無關(guān) 還是加載有指定Cat類的包

?

?

只能顯示的加載

?

?

?

?

?

?

定義靜態(tài)成員屬性為斜體

可以用對(duì)象名訪問靜態(tài)成員

但應(yīng)該用類名訪問

靜態(tài)就是靜態(tài)地址 各個(gè)對(duì)象公用同一個(gè)靜態(tài)地址

局部變量不能加static ?只能加final

?

靜態(tài)方法 不能調(diào)用非靜態(tài)的 成員方法 成員屬性不能使用 this不能使用

需要使用就需要實(shí)例化

{} 普通代碼塊 構(gòu)造代碼塊

構(gòu)造代碼塊每次實(shí)例化都會(huì)調(diào)用

static{}靜態(tài)代碼塊只會(huì)調(diào)用一次

?

局部變量在{} 作用域內(nèi)

?

-表示private

+表示public

?

子 類中 this可以訪問父類非private成員

可以繼承靜態(tài)成員

構(gòu)造方法不能被繼承 不能被重寫

不能重寫靜態(tài)方法

?

?

?

super 不能調(diào)用 自己的 private 成語

ClassLoader.loadClass(String name) 加載字節(jié)碼到JVM中 形成一個(gè)Class類

?

?

子類會(huì)默認(rèn)調(diào)用父類的無參構(gòu)造方法

當(dāng)父類定義了構(gòu)造方法 沒有了無參構(gòu)造方法 所以默認(rèn)要提供一個(gè)無參構(gòu)造方法

就要在子類顯示 調(diào)用

?

?

不能并存

?

?

?

Object 類

沒有重寫equals String 比較內(nèi)容是否相同 在桶里比較

equals 就是 ==

toString 打印普通對(duì)象標(biāo)識(shí) String打印字符內(nèi)容

hashCode 普通對(duì)象返回的是對(duì)象標(biāo)識(shí) String返回的是與字符相關(guān)的標(biāo)識(shí) 一般用于放在哪個(gè)桶

?

比較兩個(gè)對(duì)象的屬性是否相等

?

?

?

final + 類 代表 沒有子類

final + 方法 不能被重寫 可被繼承

final + 局部變量 不能被修改

final + 成員基本類型屬性 不能被修改

final + 對(duì)象類型 引用不能被修改 內(nèi)容可修改

不能用在構(gòu)造方法

final 修飾 只能在 定義時(shí) 構(gòu)造代碼塊 構(gòu)造方法靜態(tài)代碼塊 賦值

提高性能

?

?

編譯時(shí)去掉 @Override

?

編譯時(shí)注解 源碼 .class文件都有

@Autowired 運(yùn)行時(shí)注解

元注解 注解的注解

?

餓漢式

?

?

懶漢式 線程不安全

?

可提高性能

?

?

instanceof 運(yùn)算符 只要這個(gè)類兼容這個(gè) 類型 就會(huì)返回true

?

抽象類是JVM來 實(shí)例化的

?

抽象方法不實(shí)現(xiàn)要變成抽象類 含接口

包含抽象方法的類的是抽象類

抽象類 可以沒有抽象方法

static final private 不能與 abstract 并存

?

類外使用對(duì)象名訪問private成員不能訪問

?

?

?

?

接口中的 final 需要在定義的時(shí)候初始化

接口成員屬性 默認(rèn)是 public static final 成員屬性名 = 賦值

?

接口靜態(tài)常量可通過 接口名 或者 接口變量名 調(diào)用

INet.TEMP

inet.TEMP

可以在實(shí)現(xiàn)類中直接通過TEMP調(diào)用

public class ImplementsClass implements INet{

{

System.out.println(TEMP);

}

}

?

可以在實(shí)現(xiàn)類實(shí)例化的時(shí)候通過對(duì)象名.TEMP調(diào)用

ImplementsClass implementsClass;

implementsClass.TEMP;

接口中的靜態(tài)屬性可以被實(shí)現(xiàn)類繼承 因?yàn)檫@跟繼承父類的時(shí)候 調(diào)用方式一樣

?

沒有重寫屬性這一說法

靜態(tài)方法不能被重寫

?

抽象方法只能被重寫

不重寫必須子類定義為抽象類 被繼承下去了

?

接口默認(rèn)方法可以帶方法體 用 default 修飾

接口靜態(tài)方法可以帶方法體

?

默認(rèn)方法可被子類重寫

INet.super.connection(); 調(diào)用接口的默認(rèn)方法

接口中的默認(rèn)方法可以被繼承

?

接口靜態(tài)方法可以使用 接口名.靜態(tài)方法名調(diào)用

INet.stop(); 調(diào)用接口中的靜態(tài)方法 父類也可以

不能通過接口的變量名去調(diào)用靜態(tài)方法 而父類可以

接口不能通過實(shí)現(xiàn)類的對(duì)象名去調(diào)用 而父類通過子類對(duì)象名調(diào)用可以

接口中不能通過在實(shí)現(xiàn)類里面直接用接口中的靜態(tài)方法名調(diào)用 而父類通過在子類里面可以直接通過父類的靜態(tài)方法名去調(diào)用

接口中的靜態(tài)方法 不能被實(shí)現(xiàn)類 和子接口 繼承

?

?

一個(gè)類實(shí)現(xiàn)兩個(gè)接口有默認(rèn)同名的方法

類需要重寫該默認(rèn)同名方法 否則報(bào)錯(cuò)

重寫后調(diào)用的是類重寫的

父類成員方法有和兩個(gè)接口同名的默認(rèn)方法

子類不用重寫調(diào)用 父類的成員方法

調(diào)用的是父類成員方法

如果子類重寫了該方法,那么調(diào)用的是子類的方法

?

子類繼承一個(gè)父類和實(shí)現(xiàn)兩個(gè)接口都定義了同名靜態(tài)成員屬性常量

直接訪問同名靜態(tài)成員屬性常量名會(huì)報(bào)錯(cuò)

而子類只繼承一個(gè)父類的時(shí)候可以直接調(diào)用父類的靜態(tài)成員屬性常量

子類實(shí)現(xiàn)單接口也是可以直接調(diào)用靜態(tài)成員屬性常量

只能在子類重寫同名靜態(tài)成員屬性常量名

父類和兩個(gè)接口的同名靜態(tài)成員屬性常量調(diào)用多種方式就失效了

?

一個(gè)子接口繼承兩個(gè)父接口有同名的默認(rèn)方法

子接口需要重寫同名的默認(rèn)方法 單個(gè)就不用

?

成員內(nèi)部類 普通內(nèi)部類

?

在外部類方法內(nèi)訪問內(nèi)部類

{

new Heart().temp = 12;

}

內(nèi)部類實(shí)例化

?

Person.Heart myHeart = new Person().new Heart();

?

Person lili = new Person();

Person.Heart myHeart2 = lili.new Heart();

?

lili.getHeart();(在getHeart方法里面 return new 內(nèi)部類名();)

?

可以在內(nèi)部直接調(diào)用父類成員(直接用名字)如果出現(xiàn)同名字就訪問內(nèi)部類的

Person.this.age 直接訪問外部類

public class outerClass{

int age;

?

public class innerClass{

public void method(){

System.out.println(age);外部類

}

}

?

public class innerClass{

int age;

public void method(){

System.out.println(age);內(nèi)部類

System.out.println(Person.this.age);外部類

}

}

}

?

?

靜態(tài)內(nèi)部類

?

new Person().eat() 靜態(tài)內(nèi)部類訪問外部類非靜態(tài)成員 必須用實(shí)例化的方式

Person.age 訪問外部類的靜態(tài)成員

靜態(tài)內(nèi)部類訪問靜態(tài)內(nèi)部類的實(shí)例成員不需要靜態(tài)修飾 外部訪問需要

?

?

在外部類方法內(nèi)訪問靜態(tài)內(nèi)部類

{

new Heart().temp = 12;(在外部類方法內(nèi))

}

?

Person.Heart myHeart = new Person.Heart();

Person.Heart myHeart2 = new Person().getHeart(); 在外部類方法 return new Heart();

Person.Heart.say();訪問靜態(tài)內(nèi)部類的靜態(tài)成員方法

?

?

方法內(nèi)部類 局部?jī)?nèi)部類

類不能定義static 不能用訪問修飾符

在外部類的方法里面定義class 關(guān)鍵字

可以使用 abstract final

?

?

public Object getHeart() {

abstract/final class Heart {

public String beat() {

new Person().eat();

return Person.age;

}

}

return new Heart().beat();

}

?

Person lili = new Person();

lili.getHeart(); 只能使用Object里面的方法

?

?

匿名內(nèi)部類

?

不能使用構(gòu)造方法

可以使用構(gòu)造代碼塊

不能使用靜態(tài)成員

匿名內(nèi)部類是在定義里的方法參數(shù)內(nèi)部使用的

需要在外部main方法中調(diào)用這個(gè)方法

jdk7前需要final

jdk8后匿名內(nèi)部類訪問外部局部變量不需要使用final 但在匿名內(nèi)部類內(nèi)部不可改變它

?

peopleTest1.getRead(new Person(){



? ? ? ? ? ?{

? ? ? ? ? ? ? ?// 構(gòu)造代碼塊

? ? ? ? ? ?}




? ? ? ? ? ?@Override

? ? ? ? ? ?public void reat(){

? ? ? ? ? ? ? ?System.out.println("男生喜歡看科幻類書籍");

? ? ? ? ? ?}

? ? ? ?});

?

?

?

?

?

?

?

finally也不能執(zhí)行了

?

finally 中有return 只會(huì)返回finally的

當(dāng) try 或cache中有return

finally中沒有return 遇到return 會(huì)先執(zhí)行完finally里的代碼塊 后執(zhí)行 try cache中的return

?

多個(gè),

?

?

拋出的異常兩個(gè) A I 無法捕獲到 因?yàn)檫@里 拋出的是Exception 需要捕獲為拋出的類的本類 或者父類 不能是兄弟類 子類

?

public int test(){

?

throw new Exception();

}

?

?

?

throw new的類 在throws

只能是throw new的本類父類,不能是兄弟類

不能是子類

Throwable是Exception的父類

?

?

?

?

throws只能是父類或者相同的類型也就是本類

?

?

自定義異常 繼承Exception

在構(gòu)造方法 調(diào)用 super("異常描述")

?

?

在要拋出的異常方法使用 throw new 自定義異常 類

?

捕獲異常使用自定義的異常類

e.getMessage() 拿到自定義異常錯(cuò)誤信息 Exception 以上的父類 方法

?

?

異常鏈

?

public static void main(args){

在main方法調(diào)用異常尾部最后一個(gè)方法

捕獲異常

打印所有異常信息

}

第一個(gè)方法拋出自定義異常

?

被第二個(gè)方法調(diào)用第一個(gè)方法 捕獲到異常

拋出一個(gè)新的異常

throw new Exception("異常信息",e);

?

被第三個(gè)方法調(diào)用第二個(gè)方法捕獲 到異常

拋出一個(gè)新的異常

Exception e1 = new Exception("異常信息");

e1.initCause(e);

throw? e1

?

異常?重寫問題

異常是自定義異常 繼承 Exception

父類的方法 throws 自定義異常

父類?的方法里面是拋出 throw 自定義異常

?

子類重寫

方法 throws 自定義異常 本類

方法 throws 繼承Exception的子類 也就是自定義異常的兄弟類

方法 throws 繼承自定義異常的子類

方法重寫的throws 必須是兄弟類(繼承同一個(gè)父類)或者本類 或者子類 不能是父類

?

?

?

對(duì)象常量池

int t1 = 5;

Integer t2 = t1; 自動(dòng)裝箱 直接通過賦值 -128<=值<=127 隱式調(diào)用了 Integer.valueOf(); 不在這個(gè)范圍 否則就隱式調(diào)用了new

Integer t3 = new Integer(t1); 手動(dòng)裝箱 通過 new 的方式

?

int t4 = t2; 自動(dòng)拆箱 直接通過賦值

int t5 = t2.intValue(); 通過調(diào)用方法完成手動(dòng)拆箱

double t6 = t2.dobuleValue(); 手動(dòng)拆箱為double類型

?

int t1 = 2;

String t2 = Integer.toString(t1); ?整形轉(zhuǎn)換 為String

?

int t3 = Integer.paseInt(t2) 字符串轉(zhuǎn)換為整形

?

int t4 = Integer.valueOf(t2) 字符串轉(zhuǎn)換為包裝類Integer 再自動(dòng)拆箱為 整形

?

-128<=值<=127

?

?

?

indexOf(int)

indexOf(String)

lastIndexOf(int)

lastIndexOf(String)

indexOf(String,int)

getBytes()

?

new String(Byte[],String(字符集))

?

?

?

?

字符串的 equals 比較的是內(nèi)容

= 比較的是引用是否相等

?

字符串每次改變內(nèi)容 都會(huì)創(chuàng)建一個(gè)新的對(duì)象 原對(duì)象不變

String s = ""; 這種方式定義都會(huì)放到常量池上

?

new String(); 定義堆上

每次修改在堆上創(chuàng)建新的字符串對(duì)象

?

StringBuffer 線程安全

StringBuilder 性能高

默認(rèn)字符容量 16

?

StringBuilder 每次在自己堆上改變 具有可變性

?

?

?

append(char)

append(String) 添加字符串

delete(int,int) 刪除字符串

replace(int,int,String) 在指定 位置修改字符串

subString(int,int)

頻繁操作使用StringBuilder 簡(jiǎn)單操作使用String

?

Math.random() 返回[0,1)

Math.random()*10 返回[0,10)

Math.random()*10+1返回[1,11)

int(Math.random()*10+1) 返回整數(shù)

Scanner sc = new Scanner(Systam.in);

sc.netxt();

數(shù)組.length

?

Set表示集

ArrayList數(shù)組序列 長(zhǎng)度動(dòng)態(tài)增長(zhǎng)的數(shù)組

LinkedList鏈表

HashSet哈希集

HashMap哈希表

?

?

list 是可以重復(fù)的有順序的

ArrayList 底層是動(dòng)態(tài)數(shù)組

優(yōu)點(diǎn)

尾部添加 或 刪除數(shù)據(jù) 效率高

適合查找和修改

元素可以為null

初始化容量為10個(gè)元素

add(Object) 添加元素

add(int,Object) 從第 int條 后面添加元素

size() 長(zhǎng)度

get(int) 查詢?cè)?/p>

remove(int)刪除元素

set(int,Object) 從 第int條 替換元素

?

Date 類

new Date() 返回當(dāng)前時(shí)間

?

?

?

?

?

?

開源筆記

可 Pull Requests 協(xié)作寫開源筆記

如果筆記圖片無法訪問 請(qǐng)?jiān)L問 teambition 原版開源筆記

gitee

?https://gitee.com/opendevel/java-for-linux?

github

?https://github.com/OSrcD/java-for-linux?

teambition

?https://tburl.in/0jDNvpbK?

開源視頻

bilibili

?https://space.bilibili.com/77266754?

開源博客

oschina

?https://my.oschina.net/u/4675154?

csdn

?https://blog.csdn.net/OpenDevel?

開源項(xiàng)目

gitee

?https://gitee.com/opendevel?

github

?https://github.com/OSrcD?

開源贊賞

?




offer Java基礎(chǔ)精選從編譯到集合的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宜州市| 梅河口市| 濉溪县| 博爱县| 广灵县| 北安市| 留坝县| 久治县| 新津县| 常山县| 河东区| 体育| 杂多县| 泸溪县| 社会| 宜川县| 河津市| 龙山县| 遵义县| 安宁市| 东乌珠穆沁旗| 木兰县| 盈江县| 上杭县| 武清区| 尼木县| 水城县| 铜鼓县| 昌都县| 武宣县| 新河县| 鄱阳县| 丰城市| 海盐县| 桐城市| 龙山县| 英德市| 咸丰县| 两当县| 青龙| 长岭县|