part1:001基礎知識點html
單行註釋://java
多行註釋:/* */算法
eclipse中多行註釋:選定多行代碼+快捷鍵(ctrl+/)數組
使用eclipse格式化代碼:shift+ctrl+Fapp
輸出錯誤信息與調試信息:System.err.println(),System.out.println()dom
從控制檯接收輸入字符:Scanner scanner=new Scanner(System.in);//建立輸入流掃描器eclipse
檢查輸入位數:line.length()ide
強制類型轉換:long value=100L;byte btValue=(byte)value;將long型強制轉爲byte型測試
加密字符串與解密字符串:..=scan.nextLine()//獲取用戶輸入 ..=passworld.toCharArray();//獲取字符數組 遍歷數組:用for語句字體
三元運算符判斷奇偶:..條件運算String check=(number%2==0))?:條件結果A:條件結果B
左移運算實現乘法運算:左移n位至關於2的n次方
難點:異或運算的用法b=a^b^a 不借助第三變量實現兩個變量互換:藉助異或運算符"^"實現兩變量高效互換:A=A^B;B=B^A;A=A^B;
求奇數運算"N%2==1",若是要考慮到負數問題,任何負數應用這個算法的結果都會等於-1
part2:002流程控制語句
if語句
用if...else或者三目運算符(? : )判斷閏年。閏年公式:year%4==0&&year%100!=0||yera%400==0
驗證登陸信息的合法性 (equals()方法判斷兩字符串內容是否相同,「==」判斷的是字符串對象地址)
if(!username.equals("lee"){ //判斷用戶名合法性
System.out.println("用戶名非法");
}else if(!password.equals("123"){判斷密碼合法性
System.out.println("密碼錯誤");
}else{ //經過以上兩個條件判斷默認經過登陸驗證
System.out.println("登錄成功");
}
switch語句
switch(表達式){ //該語句只支持對常量的判斷,如java的byte/short/int/char類型
case 常量表達式1:語句序列1
[break;]//可選
...
case 常量表達式n:語句序列n
[break;]//可選
default:語句序列n+1
[break;]//可選
判斷用戶輸入月份的季節
對於多個條件採用相同業務處理的狀況,能夠把多個case分支關聯在一塊兒,省略它們之間的break語句,而在最後一個相同的case分支中實現業務處理並執行break語句
好比下面判斷冬季的語句
switch(month){
case 12:
case 1:
case 2:
System.out.println("你輸入的月份屬於冬季");
break;
while語句
多數狀況下,遍歷數組都是使用for循環語句實現。其實應用while循環語句和自增運算也可實現。
while(條件表達式){ //條件表達式結果爲boolean類型,結果只能是true或false
語句序列 //循環體,在條件表達式爲true時執行
}
例子:使用while循環計算1+1/2!+1/3!+...1/20!
for語句
例子
使用for循環輸出楊輝三角
使用for循環輸入99乘法表
遍歷數組
for(初始表達式:條件表達式:循環表達式){
循環體
}
part3:003數組操做
獲取一維數組的最小值思路:獲取用戶輸入,用trim()方法去除左右空格,對輸入內容進行非法檢測,用split()方法將輸入的字體串分割成字符串數組,並將字符串數組轉換到整型數組,最後在遍歷數組的同時提取最小值顯示到窗體的標籤控件中。
參考:http://leexy.blog.51cto.com/4136883/1303209
將二維數組中的行列互換:經過雙層for循環遍歷數組
參考:http://leexy.blog.51cto.com/4136883/1304048
利用數組抽取幸運觀衆:須要用到String類的split()方法和Math的random方法
參考:http://leexy.blog.51cto.com/4136883/1303995
利用數組設置JTable表格的列名和列寬,關鍵代碼:
private JTable getTable(){ if(table==null){ table=new JTable();//建立表格 String[] columns={"id","姓名","性別"};//定義列名數組 int[] columnWidth={10,20,30};//定義寬數組 //建立表格數據模型 DefaultTableModel model=new DefaultTableModel(columns,15); table.setModel(model);//設置表格數據模型 TableColumnModel columnModel=table.getColumnModel();//獲取列模型 int count=columnModel.getColumnCount();//獲取列數量 for(int i=0;i<count;i++){//遍歷列 TableColumn column=columnModel.getColumn(i);//獲取列對象 column.setPreferredWidth(column Width[i]);//以數組元素設置列的寬度 } } return table }
使用按鈕控件數組實現計算器界面 JButton[][] buttons=new JButton[i][j]
經過複選框控件數組實現添加多個複選框控件 JCheckBox[] boxs=new JCheckBox[labels.length]
數組排序:選擇排序法、冒泡排序法、快速排序法、直接插入法、sort()方法
反轉數組中元素的順序
part4:004面向對象
自定義類:建立一個自定義的類,提供構造方法和成員方法給它,最後能夠在另外一個類的main方法中建立自定義類的對象
舉例
public class Animal{ //自定義類 private String dog;//定義dog public Animal(String dog){//利用構造方法初始化域 this.dog=dog; } public String getDog(){//成員方法,得到dog return; }} 再建立一個Test類 public class Test{ public static void main(String args[]){ Animal animal=new Animal("哈皮狗"); System.out.println(「我家裏養了一隻"+animal.getDog()); } }
關於方法調用:溫度單位轉換例子-在java中使用普通方法須要先建立一個方法所在類的對象,而後經過這個對象調用這個方法。而靜態方法能夠直接使用類名來調用
public class Test{ public double getFahrenheit(double celsius){ double fahrenheit=1.8*celsius+32; return fahrenheit; } public static void main(String[] args){ System.out.println("溫度℃"); Scanner in=new Scanner(System.in); double celsius=in.nextDouble(); /* *靜態方法:直接能夠用類名調用,不過要確保上面方法是static靜態方法 *double fahrenheit=Test.getFahrenheit(celsius); */ Test converter=new Test();//建立類的對象 double fahrenheit=converter.getFahrenheit(celsius); System.out.println("華氏度\n"+fahrenheit); } }
成員變量的默認初始化值:對於基本類型的成員變量,虛擬機會自動爲其進行初始化,但對於引用變量的變量,在使用以前須要進行初始化,不然會拋出NullPointerException異常。好比
private byte b;//聲明基本類型變量b private String string;//聲明引用類型變量string public static void main(String args[]){ Test init=new Test();//建立對象 System.out.println("比特類型的初始值:"+init.b);//結果:比特類型的初始值:0 System.out.println("引用類型的初始值"+init.string);//結果:引用類型的初始值null }
關於java的基本類型與引用類型,能夠參考文章:http://ajava.org/article-9-1.html
單例模式的特色在於僅能得到一個對象。爲了防止其餘用戶建立對象,須要將構造方法設置爲private的,而後提供一個一個靜態方法,該方法返回這個類的對象。例子能夠參考:
http://leexy.blog.51cto.com/4136883/1304452
遞歸算法完成漢諾塔問題求解:爲了將N個盤子從A移動到C,須要先將第N個盤子上面的N-1個盤子移動到B上,這樣才能將第N個盤子移動到C上。同理,爲了將N-1個盤子從B移動到C上,須要將N-2個盤子移動到A上。好比有6個盤子:
public class Test{ public static void moveDish(int level,char from,char inter,char to){ if(level==1){ //若是隻有一個盤子就退出迭代 System.out.println("從"+from+"移動盤子1號到"+to); }else{ //若是有大於一個盤子就繼續迭代 moveDish(level-1,from,to,inter); System.out.println("從"+from+"移動盤子"+level+"號到"+to); moveDish(level-1,inter,from,to); } } public static void main(String[] args){ int nDisks=6; //設置漢諾塔爲6階 moveDish(nDisks,'A','B','C');//實現移動算法 } }
利用重載技術編寫同名方法(具備類似功能不一樣參數的方法):當對象在調用方法時,能夠根據方法參數的不一樣來肯定執行哪一個方法。方法參數的不一樣包括參數類型不一樣,參數個數不一樣和參數順序不一樣。但不能經過返回值來區分方法。
public class Test{ public void info(){ //定義無參方法 System.out.println("普通方法:小弟弟1歲了"); } public void info(int age){ //定義包括整型參數的info()方法 System.out.println("重載方法:小弟弟"+age+"歲了"); } public static void main(String args[]){ Test a=new Test(); //測試無參婁info()方法 a.info();for(int i=1;i<5;i++){//測試有參數info()方法 a.info(i); } } }
統計圖書銷售量:在類的構造方法中增長計數器來實現該功能
在Book類中定義一個靜態的成員變量用來保存實例化的次數,構造方法實現計數器的功能:
public class Book{ private static int counter=0; public Book(String title){ System.out.println("售出圖書"+title); counter++; } public static int getCount(){ return counter; } }
在Test類中建立Book類對象並輸出建立對象的個數:
public class Test { public static void main(String args[]){ String[] titles={"A書","B書","C書"};、//建立書名數組 for(int i=0;i<10;i++){ new Book(titles[new Random().nextInt(3)]);//new Random().nextInt(3)用於得到 0-2的整數 } System.out.println("總共銷售了"+Book.getCount()+"本圖片"); } }
使用字符串輸出對象:經過重寫toString方法來實現
public class Cat{ private String name; private int age; private double weight; public Cat(String name,int age,double weight){//初始化 this.name=name; this.age=age; this.weight=weight; } public String toString(){ //重寫toString方法 StringBuilder sb=new StringBuilder(); sb.append("名字"+name+"\n"); sb.append("年齡"+age+"\n"); sb.append("重量"+weight+"\n"); return sb.toString(); } }
在main()方法中建立Cat類對象
public class Test{ public static void main(String args[]){ Cat cat1=new Cat("JAVA",12,21);//建立對象並初始化 Cat cat2=new Cat("WEB",12,21); Cat cat3=new Cat("JAVA",12,21); System.out.println("貓咪1號"+cat1); System.out.println("貓咪2號"+cat2); System.out.println("貓咪3號"+cat3); } }