初遇java首次接觸java是在大二上學(xué)期的時(shí)候,在學(xué)校老師講的很快,再加上本來(lái)也沒(méi)好好聽(tīng)講,所以基本也沒(méi)學(xué)到什么,為了應(yīng)付考試和項(xiàng)目自己看過(guò)一些書(shū),知道一些很少很少的用法。 一、 開(kāi)始學(xué)習(xí)什么是java? java是一種編程語(yǔ)言 java的優(yōu)勢(shì)是什么? 我覺(jué)得java的應(yīng)用范圍很廣,基本上方方面面都能涉及到,不過(guò)目前我學(xué)習(xí)的是面向網(wǎng)站的javaEE。 JDK版本的選擇和安裝 越高的版本的JDK功能是越多的,但是對(duì)于生產(chǎn)開(kāi)發(fā),很多應(yīng)用還用的是舊版的JDK,類似于1.6,1.7,所以在學(xué)習(xí)時(shí),使用的是JDK1.8.。 環(huán)境變量的配置 百度經(jīng)驗(yàn)描述還是比較詳細(xì)的 IDE的選擇 我選擇的是myeclipse2019.4.0,老實(shí)說(shuō)我覺(jué)得這個(gè)版本的界面比我之前上學(xué)用的2014好看太多了,所以下下來(lái)的時(shí)候還是很開(kāi)心的(不過(guò)還是需要吐槽一下,myeclipse啟動(dòng)的太慢了…隔壁朋友的eclipse每次秒啟動(dòng),我要等好久或者重來(lái)好多次) Java的運(yùn)行原理 Java源文件(.java)—>(經(jīng)過(guò)編譯)—>Java字節(jié)碼文件(.class)—>交給JVM虛擬機(jī)執(zhí)行,然后交給操作系統(tǒng)執(zhí)行;正因如此java可以在多種平臺(tái)上使用。
二、 變量與運(yùn)算符變量和運(yùn)算符的內(nèi)容很基礎(chǔ),但要牢記 1.命名規(guī)則類名:首字母大寫(xiě),如:Student,Test 變量名,方法名:首字母小寫(xiě),后續(xù)字母大寫(xiě)(駝峰命名法),如:stuName,age;getName,getId 包名全部小寫(xiě) 常量名全部大寫(xiě) 不能用關(guān)鍵字和保留字命名

 2.變量常量是一直不變的量;而變量就是在程序運(yùn)行過(guò)程中可變的量。 變量的聲明與賦值方法:數(shù)據(jù)類型 變量名 = 值 | 表達(dá)式 |方法;
兩個(gè)概念: a.成員變量:成員變量是在類的下一級(jí)定義的變量,可以不用賦初值。 b.局部變量:在類的方法中定義的變量,使用前必須賦初值,作用于只能在本方法中。 3.數(shù)據(jù)類型8種基本數(shù)據(jù)類型:byte字節(jié)型,short短整型,int整型,long長(zhǎng)整型,float double char boolean 引用類型:類,接口,字符換,數(shù)組等… 數(shù)據(jù)類型轉(zhuǎn)換 a.隱式轉(zhuǎn)換:由系統(tǒng)自動(dòng)轉(zhuǎn)換,類型要相互兼容,小轉(zhuǎn)大; b.強(qiáng)制轉(zhuǎn)化:當(dāng)類型不兼容或大轉(zhuǎn)小時(shí),需要由我們自己強(qiáng)制轉(zhuǎn)換 double d =12.3;
int t=(int) d;
注意:強(qiáng)制類型轉(zhuǎn)換會(huì)有精度損失 4.關(guān)系運(yùn)算符區(qū)分=和==的區(qū)別 其他運(yùn)算符: !,& ,|, ,/(取模),*,%(取余)等 三元表達(dá)式 boolean n = (4 < 3) ? true : false;
?前面的為真,則執(zhí)行:左邊;為假,執(zhí)行:右邊。 三、流程控制語(yǔ)句這里主要學(xué)習(xí)了一些流程控制語(yǔ)句 if語(yǔ)句 if(條件){
}
switch switch(n){
case 1:
break;
default:
}
這里要說(shuō)明的是,case具有貫穿性,所以在使用時(shí),可以根據(jù)需求,來(lái)判斷是否需要些break 能打破switch結(jié)構(gòu)的,只有break和}。 for for(迭代變量;循環(huán)條件;控制循環(huán)次數(shù)的操作){
}
while while(){
}
while是先判斷條件是否成立,再執(zhí)行的 do…while do{
}while()
do…while必定會(huì)執(zhí)行一次,先執(zhí)行,后判斷(先斬后奏) 每個(gè)流程控制語(yǔ)句可以相互嵌套,但是不要嵌套過(guò)多,以免代碼雜亂,邏輯難以理清。 while和do…while常用于次數(shù)不明確的循環(huán),for常用語(yǔ)次數(shù)明確的循環(huán) 死循環(huán)并不一定是錯(cuò)的,當(dāng)要完成某些需求時(shí),可以用到死循環(huán) 四、數(shù)組這里學(xué)習(xí)了數(shù)組的使用 數(shù)組是引用類型,使用數(shù)組前必須實(shí)例化 數(shù)組的聲明a. 1、聲明數(shù)組 2、實(shí)例化數(shù)組 int[] nums;
nums= new int [5];
b. 聲明同時(shí)實(shí)例化 int [] numbers =new int[5];
int [] bym2s ={1,2,3,4};
int [] vya3s=new int[ ] {1,2,3,4};
內(nèi)存:棧 堆 池 程序和變量都在棧中 基本數(shù)據(jù)類型都放在棧中 數(shù)組使用時(shí),先在棧中分配一塊空間,用來(lái)存儲(chǔ)數(shù)組元素在堆中存儲(chǔ)的地址。 數(shù)組的索引都是從0開(kāi)始的 比如我創(chuàng)建了一個(gè)length為5的數(shù)組,但是a[5]是取不到的,如果這樣寫(xiě),會(huì)提示數(shù)組越界。 foreachfor(數(shù)組元素類型 變量名 : 數(shù)組名){
語(yǔ)句;
}
多維數(shù)組多維數(shù)組我的理解就是在一維數(shù)組中,將他的元素也變?yōu)閿?shù)組,就成了多維數(shù)組 多維數(shù)組的創(chuàng)建 數(shù)據(jù)類型 數(shù)組名 =new 數(shù)據(jù)元素類型[行數(shù)] [列數(shù)];
//列數(shù)可以不寫(xiě)
ex:
int[][] a=new int[3][];
int[][] a=new int[3][4];
數(shù)組的操作a.取數(shù) a[索引] 就可以取出其中的數(shù) b.取數(shù)組長(zhǎng) a.length c.數(shù)組的遍歷 int [] numbers =new int[5];
for(i=0;i<numbers.length;i ){
syso(“number[i]”);
}
//foreach
for(int i : number){
syso(“number[i]”);
}
冒泡排序 for(i = 1; i < n; i )
{
for(j = 0; j < n-i; j )
{
if(a[ j ] > a[ j 1 ])
{
t = a[ j ];
a[ j ] = a[ j 1 ];
a[ j 1 ] = t;
}
}
}
擴(kuò)展: 直接插入排序
 希爾排序
 簡(jiǎn)單選擇排序
 方法方法是可以說(shuō)是程序里非常重要的一環(huán)了,所以在學(xué)習(xí)中要重點(diǎn)理解,多練習(xí)。 什么是方法? 方法是完成某個(gè)功能的一組語(yǔ)句,通常將常用的功能寫(xiě)成一個(gè)方法。 方法的聲明或者定義——方法五要素 訪問(wèn)修飾符,返回值類型,方法名 , 參數(shù)列表,方法體 [訪問(wèn)控制符] [修飾符] 返回值類型 方法名(參數(shù)類型 形式參數(shù),參數(shù)類型 形式參數(shù),…){
方法體
}
public void getType(){
}
void 可以寫(xiě)也可以不寫(xiě) return,寫(xiě)return可以用來(lái)結(jié)束方法,類似于break 非void必須寫(xiě)返回值,方法的每條分支必須要有return 參數(shù) 可以一個(gè)可以多個(gè),多個(gè)的時(shí)候用逗號(hào)隔開(kāi) 參數(shù)傳遞時(shí)要注意的問(wèn)題
 值類型參數(shù)傳遞,傳遞的是值的副本(類似于復(fù)制一份傳遞過(guò)去)。 引用類型參數(shù)傳遞, 傳遞的是對(duì)象的地址的副本 所以方法內(nèi)或方法外操作的都是同一個(gè)堆中內(nèi)容,所以值會(huì)改變。 方法的調(diào)用 a.實(shí)例化類對(duì)象 類 對(duì)象名 =new 類();
b.調(diào)用方法 對(duì)象名.方法名(有參帶參,無(wú)參不寫(xiě));
方法的重載 即相同的事,不同的做法 a.在同一個(gè)類中 b.方法名相同 c.參數(shù)列表不同(類型,個(gè)數(shù)。即有一個(gè)獨(dú)一無(wú)二的參數(shù)列表) d.和訪問(wèn)修飾符、返回值類型無(wú)關(guān)(可以相同,也可以不同) 面向?qū)ο?/h2>面向?qū)ο笫且粋€(gè)抽象的概念,java就是屬于面向?qū)ο笳Z(yǔ)言 **抽象:**從事物中舍棄個(gè)別的非本質(zhì)特征,抽取共同的本質(zhì)特征只考慮與問(wèn)題域相關(guān)的信息,而忽略與問(wèn)題域不相關(guān)的部分 **對(duì)象:**萬(wàn)物皆對(duì)象,對(duì)象有自己的屬性和行為(方法) **類:**對(duì)對(duì)象的抽象 生活中先有對(duì)象再有類,而程序中先有類,類的作用是創(chuàng)建對(duì)象,類是生成對(duì)象的模板。 如何寫(xiě)一個(gè)類?寫(xiě)類三步走: 1.發(fā)現(xiàn)類 2.發(fā)現(xiàn)類的屬性 3.發(fā)現(xiàn)類的方法 //1.發(fā)現(xiàn)類
public class 類名{
//2.發(fā)現(xiàn)屬性
訪問(wèn)修飾符 數(shù)據(jù)類型 屬性名 ;
//3.發(fā)現(xiàn)方法
訪問(wèn)修飾符 返回值類型 方法名(參數(shù)列表){方法體;}
}
對(duì)象a.對(duì)象實(shí)例化 類名 對(duì)象名 = new 類名();
b.給對(duì)象的屬性賦值 對(duì)象名.屬性=值
c.調(diào)用對(duì)象方法 對(duì)象名.方法名(參數(shù));
d.對(duì)象在內(nèi)存中的存儲(chǔ)
 棧內(nèi)保存了對(duì)象的首地址,即引用; 在堆內(nèi)存中保存了對(duì)象的屬性。 方法不能被保存 方法是在cpu中運(yùn)行計(jì)算,然后將所得到的的結(jié)果存入內(nèi)存。 棧:先進(jìn)后出、后進(jìn)先出。 棧中保存基本數(shù)據(jù)類型的局部變量和對(duì)象調(diào)用引用值。 堆:堆可以保存那些對(duì)空間要求較大的變量。 new空間分配存儲(chǔ)符 構(gòu)造函數(shù)作用: 創(chuàng)建對(duì)象,初始化對(duì)象 特點(diǎn): a.方法名必須與類同名 b.無(wú)返回值(只進(jìn)不出;與普通方法區(qū)分) c.普通方法可以與構(gòu)造函數(shù)同名,但必須要有返回值 d.構(gòu)造函數(shù)不能被直接調(diào)用,在new時(shí)會(huì)自動(dòng)調(diào)用 e.如果不創(chuàng)建構(gòu)造函數(shù),編譯器會(huì)提供一個(gè)默認(rèn)不帶參數(shù)的構(gòu)造函數(shù)。寫(xiě)了構(gòu)造函數(shù)就不提供默認(rèn)的了 f.構(gòu)造函數(shù)可以帶參數(shù)。 g.一個(gè)類可以定義多個(gè)構(gòu)造函數(shù)。 h.構(gòu)造函數(shù)可以相互調(diào)用,必須在第一行。this(屬性名) java具有垃圾回收機(jī)制,不必專門去寫(xiě)方法處理包常用的包 java.lang java.io 同一包中的類可以直接訪問(wèn)并使用 訪問(wèn)不同包中的類 import import可以多次使用 *通配符 導(dǎo)入全部 封裝面向?qū)ο笕筇卣髦弧?strong>封裝 封裝無(wú)處不在 封裝就是將不想或不該告訴他人的東西隱藏起來(lái),將可以告訴他人的內(nèi)容公開(kāi)( 隱藏對(duì)象的屬性和方法的細(xì)節(jié),只公開(kāi)對(duì)外接口 ) 封裝的好處: a.隱藏實(shí)現(xiàn)的細(xì)節(jié) b.方便修改的實(shí)現(xiàn) c.只能通過(guò)規(guī)定方法訪問(wèn) 權(quán)限 訪問(wèn)修飾符: private 私有的 ,不對(duì)外公開(kāi) 最小權(quán)限 default 默認(rèn)的 不使用訪問(wèn)修飾符時(shí) public 公共的 所以的類都能訪問(wèn) protected 受保護(hù)的
靜態(tài) staticstatic在初次加載時(shí)被實(shí)例化,至始至終只有一個(gè)對(duì)象 a.屬性 類的屬性 適用范圍:靜態(tài)方法和非靜態(tài)方法都可以調(diào)用 訪問(wèn)修飾符 static 數(shù)據(jù)類型 變量名=值; public static String context=“hello”
b.方法 類的方法 適用范圍:靜態(tài)方法和非靜態(tài)方法都可以調(diào)用 在靜態(tài)方法中,只能調(diào)用靜態(tài)屬性和靜態(tài)方法 訪問(wèn)修飾符 static 返回值類型 方法名(參數(shù)列表){ 方法體 } public static void fun(){
syso
}
c.代碼塊 初始化static修飾的變量 static{ }
單例模式讓類只有一個(gè)實(shí)例對(duì)象 a.私有化構(gòu)造函數(shù) b.提供私有類的靜態(tài)屬性 c.提供靜態(tài)方法返回實(shí)例對(duì)象 i.判斷是否實(shí)例化過(guò)對(duì)象 取的單例對(duì)象: 類名.返回實(shí)例的靜態(tài)方法 對(duì)象數(shù)組實(shí)例化對(duì)象數(shù)組 Cat[] cats = new Cat[10];
向數(shù)組內(nèi)填充對(duì)象 數(shù)組名[ 索引 ]=對(duì)象名;//此對(duì)象名應(yīng)提前實(shí)例化
數(shù)組名[ 索引]=new 數(shù)據(jù)類型();
cats[0]=cat;
cats[1]=tom;
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[長(zhǎng)度]
操作數(shù)組內(nèi)的對(duì)象 數(shù)組名[ 索引].屬性;
數(shù)組名[ 索引].方法名
繼承關(guān)系傳遞 ,體現(xiàn)類之間的層次結(jié)構(gòu) object 所有類的父類 特點(diǎn): a.單繼承,一個(gè)類只能有一個(gè)父類 b.一個(gè)類可以被多個(gè)類繼承 c.可以有多層繼承,A被B繼承,B被C繼承 d.子類繼承父類所有的成員變量和成員方法。(除private外) e.子類可以繼承父類的方法,并且可以重寫(xiě)父親的方法 f.父類構(gòu)造函數(shù)不能被繼承??梢允褂胹uper調(diào)用父親的構(gòu)造函數(shù) g.如果子類的構(gòu)造方法中沒(méi)有顯示地調(diào)用父類構(gòu)造方法,也有用this關(guān)鍵字,則在產(chǎn)生子類的實(shí)例對(duì)象時(shí),系統(tǒng)默認(rèn)調(diào)用父類無(wú)參數(shù)的構(gòu)造方法 super()父類對(duì)象 this()本類(當(dāng)前)對(duì)像 重寫(xiě): 重寫(xiě)父類方法 @Override 1.在子類中 2.方法名,參數(shù)列表,返回值類型相同 3.訪問(wèn)修飾符不能比父類更嚴(yán)格,即子類方法的 訪問(wèn)修飾符要大于等于父類的訪問(wèn)修飾符 抽象類不具體的類 主要用于做父類 如動(dòng)物類 蔬菜類 水果類 abstract定義抽象類 public abstract class 類名{ }
抽象類不能被實(shí)例化 允許(但不要求)抽象類包含抽象成員 含有抽象方法的類稱為抽象類 抽象方法必須在子類中被實(shí)現(xiàn),子類是抽象類除外 抽象方法不具體的方法 用于被子類實(shí)現(xiàn),子類完成方法體 訪問(wèn)修飾符 abstract 返回值類型 方法名(參數(shù)列表);
finalfinal 修飾 變量 或常量 訪問(wèn)修飾符 final 數(shù)據(jù)類型 變量名=值;
2.方法 不能被重寫(xiě)的方法 訪問(wèn)修飾符 final 返回值類型 方法名(參數(shù)列表){ };
類 不能被繼承的類 訪問(wèn)修飾符 final class 類名{ };
接口接口 interface 完全抽象 接口內(nèi):靜態(tài)常量 和 抽象方法 常量默認(rèn)有 public static final 方法默認(rèn)有 public abstract 接口是一種規(guī)范、約定 遵循抽象類所有原則 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口 接口沒(méi)有構(gòu)造函數(shù) 實(shí)際對(duì)象要看new的是什么 使用父類作為引用 實(shí)例化子類對(duì)象 父類引用但只引用到子類繼承父類的成員 instanceof 判讀對(duì)象是否是什么類型 對(duì)象名 instanceof 類型 返回 ture 或 false 使用接口引用實(shí)例對(duì)象 能引用到的是該類實(shí)現(xiàn)接口的方法 接口: 設(shè)計(jì) 規(guī)范 約定 擴(kuò)展 能力 接口可以作為參數(shù),也可以作為屬性,還可以被類直接調(diào)用 簡(jiǎn)單工廠模式: 1.構(gòu)建父類對(duì)象 2.子類繼承父類 3.創(chuàng)建工廠類,提供實(shí)例化對(duì)象的方法. 
異常處理
try{ }catch(異常類型 e){ } 2. try{ }catch(異常類型 e){ }catch(異常類型 e){ }catch(異常類型 e){ }catch(異常類型 e){ } catch的順序要先子類后父類
try{ }finally{ } 4. try{ }catch{ }finally{ } 5. try{ }catch{ }catch{ } … finally{ } finally無(wú)論是否有異常,無(wú)論是否處理,finally都要執(zhí)行 (system。exit(0)時(shí)不執(zhí)行) throw 拋出異常 throws在方法中聲明異常 工具類object是所有類的父類 equals主要比較的是內(nèi)容 ==比的是對(duì)象的地址 值類型與引用類型的轉(zhuǎn)換 裝箱和拆箱 消耗性能 int t=5; //裝箱是將值類型轉(zhuǎn)換成引用類型 引用類型 =值類型 integer tt=t; //拆箱是將引用類型轉(zhuǎn)換成值類型 值類型=(值類型)引用類型 int i=(int) tt 集合長(zhǎng)度固定 隊(duì)形連續(xù) 集合 長(zhǎng)度可變 隊(duì)形多樣 set接口 無(wú)序 - 是指元素存入順序和集合內(nèi)存儲(chǔ)的順序不同 無(wú)重復(fù) - 兩個(gè)對(duì)象e1和e2,如果e1.equals(e2)返回true,則認(rèn)為e1和e2重復(fù),在set中只保留一個(gè) arraylist用于常查少改 linkedlist用于常改少查 
文件與流流 動(dòng) 數(shù)據(jù)的流動(dòng) 數(shù)據(jù)傳輸?shù)倪^(guò)程,有開(kāi)始有結(jié)束 字節(jié) byte 1byte=8位 計(jì)算機(jī)的存儲(chǔ)單位 字符 文字表達(dá)的內(nèi)容 除文本文件外,其他文件均勻標(biāo)準(zhǔn)單位(字節(jié))去輸入輸出讀取 序列化 保存對(duì)象的瞬時(shí)狀態(tài) 反序列化 就是把對(duì)象取出來(lái)  1個(gè)進(jìn)程 可以包含一個(gè)或多個(gè)線程,其中必須要有一個(gè)主線程。
繼承式適用于多個(gè)對(duì)象,每個(gè)都是獨(dú)立線程 接口式適用于一個(gè)對(duì)象,多個(gè)線程同時(shí)操作 這里只是把平時(shí)上課的一些筆記轉(zhuǎn)移了上來(lái),并不夠細(xì)致,還需要更多的總結(jié)與學(xué)習(xí) 來(lái)源:https://www./content-1-435201.html
|