位運算:
System.out.println(5<<2);? //20左移:左邊去掉兩位,右邊補2個0
System.out.println(5>>2);? //1? 右移:右邊去掉兩位膳帕,左邊補2個0
//練習(xí):
int a = 8;
System.out.println(a>>2);? //2
System.out.println(a<<2);? //32
System.out.println(3&6);? //2? 位與運算:位數(shù)對齊肋坚,全1才為1
System.out.println(3|6);? //7? 位或運算:位數(shù)對齊泵喘,全0才為0
System.out.println(3^6);? //5? 位異或運算:位數(shù)對齊拉队,相同為0众眨,不同為1
進制轉(zhuǎn)換
二進制?:0b開頭握牧,0b0001
八進制?:0開頭容诬, 00001
十六進制?:0x開頭,0x
技能點:將其他進制轉(zhuǎn)換為10進制
公式:N進制轉(zhuǎn)10進制:從右到左沿腰,N^0*數(shù)值+N^1*數(shù)值+..+N*(最高位)*數(shù)值
練習(xí):0b111,0123, 0x1ef這些結(jié)果分別是多少览徒?
7??? 83??? 15+14*16+256=495
技能點:將10進制轉(zhuǎn)換為其他進制
公式:轉(zhuǎn)為N進制,十進制數(shù)一直整除N直到商為0颂龙,余數(shù)從下往上排列
練習(xí):50---八進制:062十六進制:0x32???? 0b110010
循環(huán)
三種循環(huán)的應(yīng)用場景:
for: 循環(huán)次數(shù)可預(yù)見
while:循環(huán)次數(shù)不可預(yù)見
do.while: 循環(huán)次數(shù)不可預(yù)見; 至少處理一次
跳出:
continue;? //跳出當(dāng)次循環(huán)习蓬,不影響下一次循環(huán)的執(zhí)行
break;? //跳出循環(huán)
return:跳出方法
加標簽(outer:)可以跳出標簽所在外層循環(huán), out:for(){ break out;
continue out;}
遞歸的條件:
1.具有遞歸的規(guī)律性
2.要有遞歸的出口
3.遞歸n值過大措嵌,會引起棧溢出躲叼,StackOverflowError
(尾遞歸:jdk1.8實現(xiàn))
數(shù)組
(1)數(shù)組是用來存儲一組相同數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu)。
數(shù)組中的元素可以是任何數(shù)據(jù)類型(基本類型和引用類型)企巢。
數(shù)組變量屬于引用數(shù)據(jù)類型
String[] names = new String[3];? //創(chuàng)建一個存3個元素的String類型的數(shù)組
異常:java.lang.ArrayIndexOutOfBoundsException枫慷,NullPointException
(2)可變參數(shù)//int...a
public static int add(int...a){? //本質(zhì)是數(shù)組
int sum = 0; for(int i=0;i
return sum;}
查找
二分查找法在數(shù)組中的應(yīng)用: (二分查找前提: 數(shù)組元素已排好序)
定義一個數(shù)組: 1,4,7,12;在數(shù)組中查找7,找到則返回下標
作用: 比一般查找法效率要高包斑,因為取一半進行比較流礁;不需要一個一個元素比
分析: 通過下標取半
排序
冒泡排序:從左往右涕俗,相鄰兩數(shù)相比較罗丰,大的放右邊,依次類推再姑,比較n-1次 萌抵,時間: o(n*2)
選擇排序:第一個和后面所有比較,最小的放第一個元镀,依次類推绍填,時間: o(n*2)
插入排序:
面向?qū)ο?/h4>
基本語法:Java最基本的單位是類,具體化-對象栖疑,對象的基本信息--屬性讨永,
對象的行為-方法
封裝
屬性不能直接被外部調(diào)用--限制權(quán)限private
通過方法進行封裝---set/get
成員變量 VS 局部變量
成員變量:
1、成員變量定義在類中遇革,在整個類中都可以被訪問卿闹。
2、成員變量隨著對象的建立而建立萝快,隨著對象的消失而消失锻霎,存在于對象所在的堆內(nèi)存中。
3揪漩、成員變量有默認初始化值旋恼。
局部變量:
1、局部變量只定義在局部范圍內(nèi)奄容,只在所屬的區(qū)域有效冰更。
2产徊、局部變量存在于棧內(nèi)存中,作用的范圍結(jié)束蜀细,變量空間會自動釋放囚痴。
3、局部變量沒有默認初始化值
使用變量需要遵循的原則為:就近原則审葬,首先在局部范圍找深滚,有就使用;接著在成員位置找涣觉。
static修飾的變量稱為靜態(tài)變量(類變量痴荐,被所有對象共享)
繼承
面向?qū)ο蟮牡诙筇匦?/p>
特性:? 子類繼承了父類,則可使用父類的屬性和方法
構(gòu)造方法是否具有繼承性官册?不具有
繼承生兆,私有的方法和變量會不會被繼承?不會
Object: 是面向?qū)ο笾蓄惖睦献孀谙ツ粚懤^承默認就有
分析打印流程:
只要是打印對象鸦难,如果當(dāng)前類沒有重寫,則調(diào)用的是父類的toString方法:包名@hash值
super员淫、this
super.xxx來引用父類的成員或方法
super();? //默認有調(diào)用父類的構(gòu)造方法
this()--調(diào)當(dāng)前類構(gòu)造方法合蔽,形參與成員名字重名,用this來區(qū)分
equals
*1. “==”: 兩個字符串對象用等號介返,比較的是對象的地址
*2. equals: 在OBj類的對象的equals方法拴事,比較的是地址;
*? ? ? ? ? String類重寫的方法圣蝎,則比較的是內(nèi)容
final
1. final修飾屬性:
final修飾的屬性必須初始化刃宵,不能改變final修飾的屬性的值
應(yīng)用常用:? static final 定義狀態(tài)值是絕配
public static final int HTTP_OK = 1;
2. final修飾類:(太監(jiān)類)
3. final修飾方法:父類的方法不能重寫
static
1.Static修飾屬性: 靜態(tài)成員屬性 VS 成員屬性
成員屬性: 每個對象獨享一份成員屬性調(diào)用:this.屬性
靜態(tài)成員屬性: 每個對象共享一份成員屬性調(diào)用:類名.屬性
2.Static修飾代碼塊: 靜態(tài)代碼塊 VS 代碼塊
代碼塊: 每個對象都會初始執(zhí)行一次代碼塊
靜態(tài)代碼塊:無論有多少個對象只加載一次靜態(tài)代碼塊
3.Static修飾方法: 靜態(tài)方法 VS 成員方法
成員方法: 成員方法屬于對象,調(diào)用方式:對象.方法
靜態(tài)方法: 屬于類徘公,調(diào)用方式:類.方法(強烈推薦)
結(jié)論:只要加了static修飾的方法牲证、代碼塊、屬性关面;都不屬于對象坦袍,屬于類;
他的應(yīng)用不依賴對象缭裆,且在對象之前就已經(jīng)出現(xiàn)
問題: 1. 在成員方法中能否使用靜態(tài)變量键闺?可以
2. 在靜態(tài)方法中能否使用成員變量?不可以
3. 在靜態(tài)方法中能否調(diào)用成員方法澈驼?不可以
4. 為什么在main方法中加static辛燥?共享特性
應(yīng)用場景: 1.修飾屬性:? ? 用作狀態(tài)值的判斷
2.修飾代碼塊: 當(dāng)程序的某個功能只需初始化一次
3.修飾方法:? ? 充當(dāng)工具類
多態(tài)(實現(xiàn)控制反轉(zhuǎn))
多態(tài),是面向?qū)ο蟮某绦蛟O(shè)計語言最核心的特征。意味著一個對象有著多重特
征挎塌,可以在特定的情況下徘六,表現(xiàn)不同的狀態(tài),從而對應(yīng)著不同的屬性和方法榴都。
繼承:父類對象指向子類對象待锈,可以調(diào)用子類重寫的方法
接口:接口類對象調(diào)用實現(xiàn)類對象,可以調(diào)用實現(xiàn)類重寫的方法