
快捷鍵
- ctrl+s >>>>>>>>>>>>>>>>>>>>>>>保存
- ctrl+/ >>>>>>>>>>>>>>>>>>>>>>>多行注釋
- ctrl+z >>>>>>>>>>>>>>>>>>>>>>>撤銷
- ctrl+點(diǎn)擊 >>>>>>>>>>>>>>>>>>>>點(diǎn)擊要看的類
- ctrl+shift+f >>>>>>>>>>>>>>>>>>>自動(dòng)排版
- ctrl+o >>>>>>>>>>>>>>>>>>>>>>>看有些類
- Ctrl+Shift+O >>>>>>>>>>>>>>>>>>快速生成import
- ctrl +f >>>>>>>>>>>>>>>>>>>>>>> 查找、替換
- F11>>>>>>>>>>>>>>>>>>>>>>>>> 調(diào)試程序
- Ctrl+F1>>>>>>>>>>>>>>>>>>>>>>運(yùn)行程
- Alt+/ >>>>>>>>>>>>>>>>>>>>>>>>代碼助手完成一些代碼的插入
- Ctrl+Shift+P >>>>>>>>>>>>>>>>>>定位到對(duì)于的匹配符(譬如{})
小知識(shí)
- 注釋方法有三種
a. //
b. /****** 回車(chē)
c. /*** 回車(chē) - 配置classpath:
a. java程序去classpath的目錄中去尋找類
b. java -classpath=c:\code Hello
c. echo %path% set classpath=%classpath%;c:\code - 類名與文件名的關(guān)系
類名和文件名可以不同,編譯出來(lái)的class文件的名字是類的名子 但如果類是public的,則類名必須和文件名相同,否則不能編譯 一個(gè)文件可以包含多個(gè)類,但是只能有一個(gè)是public的類 - java 命名規(guī)范(駝峰命名法)
a. 多個(gè)單詞直接連接在一起,中間不用下劃線或者橫杠等
b. 類名每個(gè)但單詞首字母大寫(xiě)
c. 變量名和方法名第一個(gè)字母小寫(xiě),其他單詞大寫(xiě)
d. 盡量讓名字直觀易懂 - 如何保留需要的小數(shù)位
DecimalFormat df=newDecimalFormat("#.00");
/***** #表示 一個(gè)數(shù)字,不包括 0;
*** 0表示如果沒(méi)有則用0代替;保留幾位就填幾個(gè)0;
*/
df.format(22.444); - 改eclipse字體
在Windows/preferences中General/Appearance/Colors and Font/Basic/text Font中的Edit;)
基本類型
八大基本類型(x(字節(jié))*8bit) byte(字節(jié))、short(2)、int(4)、long(8)、float(單精度 4)、double(多精度 8)、char(2)、boolean
{String不是基本類型 String是一個(gè)類}
包裝類 (首字母大寫(xiě))
下面兩個(gè)例外:
Integer a=1;
Character c='a';
基本類型與包裝類型的不同:
- 在Java中,一切皆對(duì)象,但八大基本類型卻不是對(duì)象
- 聲明方式的不同,基本類型無(wú)需通過(guò)new關(guān)鍵字來(lái)創(chuàng)建,而封裝類型需new關(guān)鍵字。
- 存儲(chǔ)方式及位置的不同,基本類型是直接存儲(chǔ)變量的值保存在堆棧中能高效的存取,封裝類型需要通過(guò)引用指向?qū)嵗?,具體的實(shí)例保存在堆中。
- 初始值的不同,封裝類型的初始值為null,基本類型的的初始值視具體的類型而定,比如int類型的初始值為0,boolean類型為false;
- 使用方式的不同,比如與集合類合作使用時(shí)只能使用包裝類型。
- 包裝類是final 不會(huì)被改變
Integer d=10;
d=d++;//d的值仍然會(huì)是10
java 關(guān)鍵詞
關(guān)鍵字包括abstract boolean break byte case catch char class continue default do double else extends false final finally float for if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient try true void volatile while
1、abstract修飾詞,修飾的類是抽象類,可以包含抽象方法也可以有實(shí)例方法,但抽象方法只能存在于抽象類中,抽象方法沒(méi)有方法體。
2、boolean基本數(shù)據(jù)類型,邏輯類型(取值false 和true null).
3、break返回語(yǔ)句常和switch語(yǔ)句等循環(huán)語(yǔ)句搭配使用
4、byte基本數(shù)據(jù)類型字節(jié)型
5、int(基本數(shù)據(jù)類型整型-232~232-1,在內(nèi)存在占4個(gè)字節(jié)32位)short(短整型,占2個(gè)字節(jié)16位)long(長(zhǎng)整型,在內(nèi)存占8字節(jié)),編程系統(tǒng)默認(rèn)數(shù)據(jù)是int類型。
6、char字符類型,在內(nèi)存中占2字符。
7、float(占4個(gè)字節(jié),后面以F結(jié)尾)和double(占8字節(jié),后面以D結(jié)尾)類型是浮點(diǎn)型。
8、case常與switch搭配使用
9、class用來(lái)聲明一個(gè)類。
標(biāo)識(shí)符規(guī)則(不能用關(guān)鍵字)
- 第一個(gè)字符必須是字母或者_(dá)或者$
- 后面的字符可以是任何字符或者數(shù)字
- 表示符大小寫(xiě)敏感;(name Name 是不同的)
常量與變量
- 常量(不能改變)
例: final int a; a只能給它一次賦值 - 變量(只能定義在方法里面)
a. 屬性(全局)變量;類除了方法還有屬性
b. 局部變量;在方法中定義的出了方法就不存在了 - 變量的作用域
a. 全局變量和方法里的變量(局部變量)是可以重名的,但是先用方法中的(局部變量)
b. 方法中的變量不能沖突;除非在相互獨(dú)立的方法中
c.局部變量只在方法中有效而全局變量類中有效 - 靜態(tài)常量與動(dòng)態(tài)常量
靜態(tài)常量可以通過(guò) 類名.+常量名直接使用而不是靜態(tài)的需要先new一個(gè)對(duì)象在使用
語(yǔ)句
- for語(yǔ)句;
例子表示:
1到100;如果是40的倍數(shù)這該數(shù)字以后不打?。蝗绻俏宓谋稊?shù)則該數(shù)字不打印
for(int i = 1; i<101; i++)
{
if(i == 5)
{
continue;
}
System.out.println(i);
if(i%40 == 0)
{
break;
}
}
- if語(yǔ)句
if(i==1){
...;
}
else if(i==2){
...;
}
else
...;
- while語(yǔ)句
while(true)
{
....;
}
do
{
...;
}while(true);
a. while()先判斷再執(zhí)行
b. do{ }while(); 先執(zhí)行再判斷;
- switch 語(yǔ)句
//case只支持int byte short char String(Enum);
public static void learnswitch(int a){
switch(a)
{
case 條件1: ........;break;
case 條件2: ........;break;
.....;
可以寫(xiě) default : .......;break;//上述case以外的所有
}
String 方法
- .length(); //求字符串長(zhǎng)度
- .charAt((int index);//取出第index位的字符
- .codePointAt(int index);//得到第index個(gè)字符的碼
- .isEmpty();//字符是否為空;
- .equalsIgnoreCase();//忽略大小寫(xiě);
- .startsWith("hel",int a);//從第a位開(kāi)始,后面String的字符是否與hel相同;
- .hashCode(); //哈希數(shù)(可以通過(guò)判斷兩個(gè)字符串的哈希數(shù),判斷兩個(gè)字符串是否相同)
- .replace(“a”,"b");//替換String中所有a變成b;可以換成字符或者字符串及" "換成' '
- String s2 = s2.replaceAll("[abd]+", "s");//替換s2中所有a b d字母換成s;(replaceAll支持正則表達(dá)式而replace不支持)
- .replaceFirst() //換第一個(gè)
- .Trim() //函數(shù)移除字符串兩側(cè)的空白字符或其他預(yù)定義字符
- .ltrim()//移除字符串左側(cè)的空白字符或其他預(yù)定義字符。
- .rtrim()//移除字符串右側(cè)的空白字符或其他預(yù)定義字符。
- .indexOf() //查找 如果沒(méi)有返回-1否則返回所在位置
- s1.indexOf("o", 6);//查找s1中的o從第6個(gè)開(kāi)始;
- .startsWith()和.endsWith() //判斷開(kāi)頭和結(jié)尾返回boolean類型
數(shù)組
定義:固定長(zhǎng)度,相同類型的元素的集合;
- 一維數(shù)組 nums[i]:
a. int[] nums = {3,4,2,2};
b. int[] nums = new int[4];{可寫(xiě)作int[] nums; nums=new int[4];}
c. int[] nums =new int[]{3,2,1,4};與第一個(gè)區(qū)別在于new int[] {..}可以直接return; - 二維數(shù)組 nums[i][j];
a. int[][] nums={{2,3,4},{3,2},{32,5}};//基本和一維一樣
b. int[][] nums=new int[][]{{2,3,4},{3,2},{32,5}};
c. int[][] nums=new int[3][]; - for each 循環(huán)
for(int b:a)
System.out.println(b);打印數(shù)組a中的所有元素; - 數(shù)組排序 : Arrays.sort(a);
- 二維數(shù)組的數(shù)組長(zhǎng)度
a. nums.length為有多少行
b. nums[i].length為有多少列
6.數(shù)組打印方式
System.out.println(a); 結(jié)果 [Ljava.util.Date;@2a139a55(地址)
System.out.printlen(a[0]) 結(jié)果 打印出數(shù)組a中第0位的元素 - 動(dòng)態(tài)數(shù)組
ArrayList<類名> a= new ArrayList<>();可以創(chuàng)建一個(gè)長(zhǎng)度不固定的類的數(shù)組;(動(dòng)態(tài)數(shù)組)
a.size()得出長(zhǎng)度;
常見(jiàn)異常
- ArrayIndexOutOfBoundsException >>>>> 數(shù)組下標(biāo)越界
- java.lang.StackOverflowError >>>>> 堆棧溢出;死循環(huán)
常用類
- import 從別的包引用的類
- Scanner類(用于掃描輸入文本)
Scanner sc = new Scanner(System.in);得到用戶輸入 - DecimalFormat類(格式化)
DecimalFormat df=newDecimalFormat("#.0");
df.format(22.444);// 保留一位小數(shù) - 與 String 相關(guān)的類
StringBuffer是線程安全的(防止多個(gè)線程訪問(wèn)String)
StringBuilder不是線程安全的
SrtingBuffer 要考慮拼接前有沒(méi)有其他在用 而StringBuilder不考慮直接使用
使用+號(hào)需要?jiǎng)?chuàng)建一個(gè)新的字符串占用內(nèi)存多,效率低
concat底層用的stringbuilder - Calendar 類(日歷)
Calendar key = Calendar.getInstance();創(chuàng)建日歷; - Date類 (日期)
Date a = new Date();//得到當(dāng)前日期
算法
- 冒泡排序算法(從后往前)
a. 比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。
b. 對(duì)每一對(duì)相鄰元素作同樣的工作,從開(kāi)始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù)。
c. 針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。
d. 持續(xù)每次對(duì)越來(lái)越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較 - 二分查找法
- 遞歸算法
退出條件:if(...){return ....};
通用公式:return ......;
a.斐波那契序列{f(n)=f(n-1)*f(n-2);}