我的博客:lcatake_flume,spark,zookeeper-CSDN博客
看不懂的話進(jìn)去看看
1.Java的三個版本
JAVASE 基本
JAVAME 微縮
JAVAEE?旗艦
3.java的特點(diǎn)
面向?qū)ο?/h2>
跨平臺:jvm將java文件轉(zhuǎn)變?yōu)樽止?jié)碼文件(.class)在多個系統(tǒng)中運(yùn) 行字節(jié)碼文件
5.Java的三個組件
JDK 語言開發(fā)包
JRE 運(yùn)行環(huán)境
JVM 虛擬機(jī)
6.基本數(shù)據(jù)類型
?整數(shù):byte(1字節(jié)) short(2) int(4) long(8)
浮點(diǎn):float(4) double(8)
?字符串:char(2)
布爾:boolean?
5.基本數(shù)據(jù)類型精度
byte<short<char<int<long<float<double
6.? 基本數(shù)據(jù)類型之間的轉(zhuǎn)換規(guī)則
1.低精度給高精度 自動轉(zhuǎn)換
2.高精度給低精度 強(qiáng)制轉(zhuǎn)換
?3.不同類型進(jìn)行運(yùn)算時,先將低精度轉(zhuǎn)為高精度,精度一致后再進(jìn)行計算? ??
7.break,continue
break 跳出循環(huán)
cotinue 跳出本次循環(huán)
8.三目運(yùn)算符?
判斷條件?條件滿足:條件不滿足
9.switch 數(shù)據(jù)類型?
buty,short,int,char,String
10.while do..while區(qū)別
while 先判斷后執(zhí)行
switch 數(shù)據(jù)類型 buty,short,int,char,String
11.獲取控制臺的信息
Scanner s1=new Scanner(System.in);
while (s1.hasNext()){
String str1=s1.next();
12.數(shù)組的缺點(diǎn)
必須要指定數(shù)組長度
13.創(chuàng)建多維數(shù)組:
1.int[ ][ ]? a1=new int[3][ ];
a1[0]=new int[1];
2.int[ ][ ]? a1=new int[3][ ];
3.?int[][] a3={{1},{2,3},{4,5,6,7},{7,4,5,1}};
14.冒泡排序
?int[] arr = {2, 11,4,7,5,22,15,37,12,1};
int zjvalue = 0;//中間值
boolean boo=false;
//冒泡比較相鄰元素將小的提前打的放后
//外層循環(huán)時用來控制輪數(shù)
//內(nèi)存循環(huán)控制每一輪的;排序
//每個元素都走完一遍全部的長度
for (int i = 0; i < arr.length ; i++) {
boo=false;
//每一輪排序都會將最大的一個排到最后 所以-i
for (int j = 0; j <arr.length - 1-i; j++) {
if (arr[j] > arr[j + 1]) {
//存儲小的值
zjvalue = arr[j];
//把大的值賦給小的
arr[j ] = arr[j+1];
//把小的值賦給大的
arr[j+1] = zjvalue;
}
boo=true;
}
if (boo==false){
break;
}
}
for (int a : arr) {
System.out.print(a + ",");
}
System.out.println();
15.楊輝三角
int[][] arr=new int[7][];for (int i = 0; i < arr.length; i++) {arr[i]=new int[i+1];}for (int i = 0; i < arr.length; i++) {for (int j = 0; j <arr[i].length ; j++) {if (j==0||j==arr[i].length-1){arr[i][j]=1;}else{arr[i][j]=arr[i-1][j]+arr[i-1][j-1];}}}for (int i = 0; i < arr.length; i++) {for (int j = 0; j <arr[i].length ; j++) {System.out.print(arr[i][j]);}System.out.println();}
16.遞歸算法的條件
遞歸:
//1.有出口
//2.有遞歸算法
17.數(shù)組的三個方法
1.是否相等 Arrays.equals
2.復(fù)制:system.arraycopy
arraycopy(Object src, ?int ?srcPos,?Object dest, int destPos,int length);
3.排序Arrays.sort
18.String的方法 (至少十個)
1。charAt()?
2。replace() 替換字符串 ,replace(舊內(nèi)容,新內(nèi)容) 全部對應(yīng)元素都要改變 str2.replace("a","q");
3。isEmpty() 判斷字符串是否為空?
4。concat() 連接字符串
6。indexOf() 查詢字符第一次出現(xiàn)的位置?
7。lastIndexOf() 查詢字符最后一次出現(xiàn)的位置
8.endsWith() 判斷字符串是否以。。。結(jié)尾
9。toUpperCase()
10。toLowerCase()?
11。contains()?
12。subString() 截取字符串
13。split() 拆分字符串,變成數(shù)組
14。equals() 判斷字符串是否相等?
15。compareTo() 比較兩個字符串
1.如果相同返回0;
2.第一次不同如果是數(shù)值,返回長度差文章來源:http://www.zghlxwxcb.cn/news/detail-662797.html
第一次不同如果是字符,返回兩個字符的Ascrll碼的差值文章來源地址http://www.zghlxwxcb.cn/news/detail-662797.html
16. startsWith("a");以。。開始
17.lenght() 數(shù)組長度
19.Math的方法10個
1.Math.max(20.0,10) 最大值 二選一
2.Math.min(20.0,10) 最小值
3.Math.abs(2-1) 絕對值
4.Math.ceil(9.1)相上取整 浮點(diǎn)數(shù)
5.Math.floor(8.9) 向下取整
6.Math.round(8.6)四舍五入
7.Math.pow(x,y) x的y次冪'
8.Math.sqrt(64)開平方
9. Math.random()[0,1)隨機(jī)數(shù)
10.Math.PI 圓周率
20.全局遍歷和局部變量的區(qū)別
//【區(qū)別】:1.初始值不同:成員變量有系統(tǒng)給定的默認(rèn)值
//局部變量沒有初始值 需要使用必須賦予初始值
//2.作用域:成員變量可以在整個類中使用;
//局部變量只能在聲明的區(qū)域內(nèi)使用
//3。內(nèi)存地址不同:成員變量存儲在堆,局部變量存儲在棧
21.什么是面向?qū)ο蠹捌涮卣?/h2>
//1.面向?qū)ο螅好嫦驅(qū)ο笫且环N編程思想,所有的操作都是針對對象的屬性和方法進(jìn)行操作
//萬事萬物皆對象
// 2.面對對象的特征:封裝,繼承,多態(tài),抽象
22.什么是類什么是對象
//3。類:class,類就是描述事物的抽象概念,可以看作一類物的模板
//4.對象:對象就是類的具體實例
//5.類與對象的關(guān)系:類是對象的模板,對象是類的實例
23.構(gòu)造方法
//【構(gòu)造方法】:1.沒有返回值也不用加void
//2.方法名和類名一樣
//構(gòu)造方法:默認(rèn)無參構(gòu)造方法--當(dāng)沒有 有參構(gòu)造方法時,可寫可不寫,系統(tǒng)默認(rèn)提供
//當(dāng)有了構(gòu)造方法 需要使用無參構(gòu)造方法時,必須寫出來無參構(gòu)造;
24.值傳遞與==
//值傳遞:
//1.基本數(shù)據(jù)類型傳遞的是值
//2.類類型傳遞的是地址
//==
//1.基本數(shù)據(jù)類型比較的是值
//2.類類型比較的是地址
25.靜態(tài)
//關(guān)鍵字 static:靜態(tài)
//靜態(tài)修飾的對象: 變量 方法 代碼塊
//靜態(tài)修飾的變量:1.調(diào)用方法: 引用.靜態(tài)變量;類名.靜態(tài)變量
//2.在類加載到內(nèi)存時,還沒有創(chuàng)建對象就已經(jīng)分配了內(nèi)存
//3.靜態(tài)只能調(diào)靜態(tài)
// 靜態(tài)修飾 的方法:1.靜態(tài)方法只能訪問靜態(tài)成員變量
//2.靜態(tài)方法中,不能使用this和super
//3.靜態(tài)方法只能調(diào)用其他的靜態(tài)方法;不能調(diào)用其他實例方法
//靜態(tài)修飾的代碼塊:類的加載順序1.靜態(tài)代碼塊在沒有創(chuàng)建對象之前,【主動執(zhí)行一次】
//2.非靜態(tài)代碼塊,在【每次】創(chuàng)建對象之前都會主動執(zhí)行一次
26.封裝的概念及其可見性和好處
//【封裝】:java把變量和方法封裝到類中,通過可見性實現(xiàn)封裝
//可見性:
//1.public:公共的 在工程中可見
//2.protected:受保護(hù)的,當(dāng)前類可見,本包可見,外包的子類
//3.default: 不寫的時候(默認(rèn)) 本類,本包可見;
//4.private:私有的,本類可見
//【封裝的好處】:1.提供方法名供外界調(diào)用
// 2.對內(nèi)隱藏數(shù)據(jù),防止被破壞
27.包裝類已經(jīng)自動裝箱,自動拆箱
//int------Integer *
//char---Character *
//【自動裝箱】:把基本數(shù)據(jù)類型轉(zhuǎn)換成對應(yīng)的封裝類
//【自動拆箱】:把封裝類轉(zhuǎn)換成基本數(shù)據(jù)類型
28.重載與重寫?
【重載 Overload】:在同一個類中 方法名相同,參數(shù)的個數(shù)或類型不同;
//【重寫 @Override】 :在子類重寫父類方法時,同名,同參,同返回類型 ;
//重寫后的子類的可視性不能比父類的可視性更嚴(yán)格
29.有繼承關(guān)系的加載順序
//(前兩步)只執(zhí)行一次
//父類靜態(tài)代碼塊
//子類靜態(tài)代碼塊
//(后四步)每次對象創(chuàng)建就執(zhí)行一次
//父類非靜態(tài)代碼塊
//父類構(gòu)造方法
//子類非靜態(tài)代碼塊
//子類構(gòu)造方法
30.//【繼承關(guān)系中的構(gòu)造方法】
// 1.父類和子類都沒有構(gòu)造方法時,系統(tǒng)會給父類與子類分別提供默認(rèn)的無參構(gòu)造方法(父類只提供父類,子類提供父類和子類)
//2.如果父類存在有參構(gòu)造方法,子類必須在構(gòu)造方法的第一行用super(傳參)調(diào)用父類的構(gòu)造方法
31.【super】
//1.區(qū)分父類的成員變量和子類的成員變量
//2.子類可以在第一行用super(傳參)調(diào)用父類的構(gòu)造方法
//3.子類可以在實例方法用super.實例方法 來調(diào)用父類的實例方法
32.This
1.區(qū)分成員變量和局部變量
//2. 在構(gòu)造方法的第一行,用this(傳參)調(diào)用其他的構(gòu)造方法
//3.在實例方法使用this.方法名調(diào)用其他的實例方法
//?33. 【final】
?1.final 定義的量叫常量,一經(jīng)修改就不能改變
//2.final 修飾的類不能被繼承
// 3.final 修飾的方法不能被重寫但可以重載
34.// 【向上轉(zhuǎn)型】 【向下轉(zhuǎn)型】 動態(tài)綁定
//【向上轉(zhuǎn)型】:父類的引用指向子類的對象
//1.只能調(diào)用父類的方法和父類的屬性,不能調(diào)用子類的方法和屬性;
//2.如果子列重寫了父類的方法,調(diào)用的是子類的重寫方法
//【向下轉(zhuǎn)型】:父類的引用 賦值給子類的引用
//1.可以調(diào)用父類和子類的屬性和方法
//2.父類的引用必須是:向上轉(zhuǎn)型的引用
??3.向下轉(zhuǎn)型的子類必須和向上轉(zhuǎn)型的子類一致
動態(tài)綁定 :在執(zhí)行期間 而非編譯期間,判斷引用的類型,根據(jù)實際情況調(diào)用方法和屬性
35.抽象及其在描述抽象時不可以使用的關(guān)鍵字
//[抽象]:共性的內(nèi)容抽取到父類,但是某些內(nèi)容無法在父類中具體實現(xiàn)
//1.抽象方法只有方法聲明,沒有方法體({})
//可見性 abstract 方法名();
//2.包含抽象方法的類必須聲明為抽象類
//3.抽象類里可以有實例反法,構(gòu)造方法和屬性
//4.抽象類不能直接new對象,用來給子類new對象和初始化成員變量
//5.繼承抽象類的子類,必須重寫父類所有的抽象方法
//final因為final類 不能繼承,final方法不能被重寫
//static 在類加載時已經(jīng)分配了內(nèi)存,無法繼承和重寫
//private僅本類可見,外包無法訪問
//使用抽象方法: 必須要重寫,有共性
36.接口
//[關(guān)鍵字]:聲明接口 interface
//:實現(xiàn)接口 implements
//1.默認(rèn)被 public static final 修飾的靜態(tài)常量;
//2.不能寫構(gòu)造方法
//3. 默認(rèn)被public abstract修飾的抽象方法
//4.接口可以多實現(xiàn),用","分割
//5.接口可以繼承接口 可以【多繼承】(java單繼承)
//接口 extends 接口1,接口2.。。
//6.如果類是帶有繼承關(guān)系的接口,
//那就需要把所有父接口和子接口的抽象方法全部實現(xiàn)一遍
?接口回調(diào)?
接口的對象指向了 (已經(jīng)實現(xiàn)了此接口)類的對象
// 這個變量只能調(diào)用此接口和父接口在實現(xiàn)類中重寫和方法和屬性(此接口)
37.java集合體系
//6個接口: 單列 :Collection,(父接口)
// 1.List 有序(有下標(biāo),存儲位置)(不能去重)
// 2.set 無序(無法使用下標(biāo))(可以去重)
//2.1 SortedSet
// 多列:Map
// 1.SortedMap
//一個工具類:Collections
38.[泛型]:
在集合中用來規(guī)定集合的類型
List: 實現(xiàn)類,及其區(qū)別
Arraylist 2.LinkedList
//1.ArrayList底層是數(shù)組存儲,LinkList底層是雙向列表
//2.ArrayList適合查找,LinkList適合增刪
39.List的常用方法
//1.添加元素(在末尾添加,指定位置添加)add可以添加null 并在集合中出現(xiàn) 返回的是布爾類型
//2.刪除元素 remove
//3.清空集合
//4。判斷是否為空 isEmpty()?
//5.查看集合是否包含某個元素 contains
//6.查找元素下標(biāo) indexOf
40.遍歷集合三種
//1.for-each循環(huán) 元素 集合是整數(shù)類型,當(dāng)有null不能使用,會有空指針異常
for (int i:list1){
System.out.println(i);
}
//2.下標(biāo)長度 list1.size() 獲取值 list1.get(i)
for (int i=0;i<list1.size();i++){
System.out.println(list1.get(i));
}
//迭代器 Iterator 是一個接口 提供了遍歷集合的方法
Iterator<Integer> it = list1.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
41.// LinkList 獨(dú)有的方法
//獨(dú)有的 打印第一個值:list2.getFirst()
//打印最后一個值:list2.getLast()
//刪除第一個值: list2.removeFirst();
//刪除最后一個值:list2.removeLast();
42.集合 數(shù)組互轉(zhuǎn)
//List和數(shù)組轉(zhuǎn)換
//1.集合轉(zhuǎn)數(shù)組list1.toArray();
//2.數(shù)組轉(zhuǎn)集合Arrays.asList(brr);
Set及其接口的實現(xiàn)類和子接口實現(xiàn)類的區(qū)別
//【Set】:繼承于Collection集合(無序)
//實現(xiàn)類:HashSet
//【SortedSet】:set的子接口
//實現(xiàn)類:TreeSet
//HashSet
//1.去重,可以添加空 不可以選擇添加的位置
//2.for-下標(biāo) 不能使用 s1.get(i)報錯
//3.indexOf 無法使用
//TreeSet
//1.不能添加null,按照數(shù)字,字母順序排序,去重,無法通過指定下標(biāo)寫入
//2.for-下標(biāo) 不能使用 s1.get(i)報錯
//3.indexOf 無法使用
//4.不能添加存儲類類型 需要重寫compareTo方法;
重寫equals
@Override
public boolean equals(Object obj){
// 對比的雙方是本體 this指向前面的引用名
if (obj==this){
return true;
}
if (obj instanceof People){
People pp=(People)obj;
return pp.sfz.equals(this.sfz);
}else {
return false;
}
}
//在重寫equals時,必須重寫hashCode
@Override
public int hashCode() {
return Objects.hash(sfz);
}
Map的實現(xiàn)類與實現(xiàn)類的特點(diǎn)與區(qū)別
//【Map】:雙列集合,鍵值對形式存儲,映射關(guān)系(kay,value)
//實現(xiàn):HashMap
//子接口:SortedMap Map的子接口
//實現(xiàn)類:TreeMap
//HashMap
//1。可以插入null
//2.key不可以重復(fù) 會覆蓋value值
//3.value值可以重復(fù)
// TreeMap
1.key不可以為null
//1.添加 put 返回值不是布爾類型
獲取key value和key value對(方法和返回值類型就行)
//2.遍歷 普通for循環(huán)無法使用get
//1.key
//keySet() 返回值為Set集合 Key為int 存儲不能為null
?Set<Integer> setkey= m1.keySet();
for (int i:setkey){
System.out.print(i);
}
System.out.println();
//2.value
//values() 返回值為Collection
?Collection<String> cc=m1.values();
?Iterator it=cc.iterator();
?while (it.hasNext()){
?System.out.println(it.next());
// 3.key和valueentrySet 返回值為Set<Map.Entry<ket類型,value類型>>
Set<Map.Entry<Integer,String>> entry= m1.entrySet();
for (Map.Entry<Integer,String> en:entry){
System.out.print("key:"+en.getKey()+","+"value:"+en.getValue());
System.out.println();
}
Iterator it3=entry.iterator();
while (it3.hasNext()){
System.out.println(it3.next());
}
常見異常
//1.ArrayIndexOutOfBoundsException 數(shù)組下標(biāo)越界異常
// 2.StringIndexOutOfBoundsException 字符串下標(biāo)越界異常
//3.NullPointerException 空指針異常
//4.ClassCastException 類轉(zhuǎn)換異常
//5.ArithmeticException 算術(shù)異常
//6.NumberFormatException 數(shù)字轉(zhuǎn)換異常
50. 【異常的五個關(guān)鍵字】
// try: 指定一個代碼塊預(yù)防所有異常,需要緊跟catch
//后面可以跟多個catch,按照異常順序捕獲異常
//如果有0個catch必須跟上finally
//catch:放在try后面,用來捕獲異常類型
//finally: 無論是否發(fā)生異常,fianlly都會執(zhí)行
//在return之前執(zhí)行.
//
//throws:放在方法名后面主動拋出異常;
//throw:放在方法體里,主動拋出異常;
51. [自定義異常];
//1.新建異常類,繼承Execption類,創(chuàng)建構(gòu)造方法,設(shè)置message信息
//2.在需要的地方 用throw new 新的異常類 來拋出異常
52.File的方法
System.out.println(f1.getPath());//地址
System.out.println(f1.getAbsolutePath());//絕對地址
System.out.println(f1.getName());//文件名
System.out.println(f1.exists());//文件是否存在
System.out.println(f1.length());//文件大小
System.out.println(f1.lastModified());//最后一次修改的毫秒數(shù)
//獲取父目錄?getParent() 返回String????????getParentFile() 返回File
//創(chuàng)建文件 createNewFile() 文件前的地址一定要存在否則報IoExecption
//創(chuàng)建目錄
//mkdir 如果地址不存在 返回false 創(chuàng)建失敗
//mkdirs 如果地址不存在 會把所有的父級目錄全都創(chuàng)建一次
//創(chuàng)建文件 createNewFile() 文件前的地址一定要存在否則報IoExecption
//創(chuàng)建目錄
//mkdir 如果地址不存在 返回false 創(chuàng)建失敗
//mkdirs 如果地址不存在 會把所有的父級目錄全都創(chuàng)建一次
//【i/o體系】:及其創(chuàng)建
//1.處理單位:字節(jié)流,字符流
// 2.處理流向:輸入流,輸出流
//3.處理功能:節(jié)點(diǎn)流,處理流
字節(jié):
FileInputStream input=null;
FileOutputStreamoutput=null;
input=new FileInputStream(path); output=new FileOutputStream(path)
字節(jié)處理流:
BufferedInputStream input = null;BufferedOutputStream output = null;input = new BufferedInputStream(new FileInputStream(path));output = new BufferedOutputStream(new FileOutputStream(path)
字符:
FileReader input = null;
FileWriter output = null;
input = new FileReader(path;
output = new FileWriter(path);
字符 處理流
BufferedReader input = null;
BufferedWriter output = null;
input = new BufferedReader(new FileReader(path) {
});
output = new BufferedWriter(new FileWriter(path));
54.字節(jié)流和字符流用于讀取什么文件
//字節(jié)流:適合處理音頻,視頻,圖片讀取漢字 分成三個數(shù)字
//字符流:通常適合用于處理漢字多的文本文件 讀取漢字 分成一個數(shù)字
Write和append的區(qū)別
write 不可以寫空 append可以為空
Write穿的是 int 和byte
append可以直接串String
到了這里,關(guān)于JAVA知識點(diǎn)梳理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!