先知道怎么做杆查,再弄懂為什么這么做扮惦。做中學,快樂的學亲桦。
1.在java中崖蜜,對char進行運算的時候,直接當做ASCii 碼對應的整數(shù)對待烙肺。
Scanner scan=new Scanner(System.in);//從鍵盤接收數(shù)據(jù)
if(scan.hasNext())//也可以用scan.hasNextLine()判斷
{
String str1=scan.next();
System.out.println("輸入的數(shù)據(jù)為:"+str1);
}
next() 與 nextLine() 區(qū)別
next():一定要讀取到有效字符后才可以結束輸入纳猪。對輸入有效字符之前遇到的空白,next() 方法會自動將其去掉桃笙。只有輸入有效字符后才將其后面輸入的空白作為分隔符或者結束符。
next() 不能得到帶有空格的字符串沙绝。
nextLine():以Enter為結束符,也就是說 nextLine()方法返回的是輸入回車之前的所有字符搏明。可以獲得空白闪檬。
//使用 System.in 創(chuàng)建 BufferedReader
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("輸入字符, 按下 'q' 鍵退出星著。");
//讀取字符
do{
c=(char)br.read();
System.out.println(c);
}while(c!='q');
2.在java中,小數(shù)默認為double 數(shù)據(jù)類型粗悯。
3.java中switch可用數(shù)據(jù)類型主要是:byte ,short,int,char,enum等虚循。條件表達式的數(shù)據(jù)類型必須和case后的常量類型一致。
4.java一個類可以有多個構造方法,參數(shù)列表不同横缔。構造方法的主要用處是初始化類的成員屬性铺遂。
5.java的問題都應該聯(lián)想到對象。
6.類變量通過類方法訪問茎刚。
7.java 多態(tài) ? Animal ?an=new ?Cat();
8.抽象類被繼承襟锐,里面的抽象方法必須全部實現(xiàn)。
9.當一個類實現(xiàn)一個接口膛锭,要求實現(xiàn)接口中的所有方法粮坞。一個類可以實現(xiàn)多個接口,一個類可以繼承一個類同時繼承多個接口初狰。一個接口可以繼承別的接口莫杈。接口中可以有變量,但變量不能用private和protected 修飾奢入,接口中的變量本質(zhì)上都是static的筝闹,而且是final ,不管加不加static修飾俊马,一般當做全局變量使用丁存,訪問方法:接口名.變量名。
10.接口不能被實例化柴我,接口中的方法都不能有主體解寝。抽象類中可以有不是抽象的方法(有主體的方法)。
11.給方法用final修飾艘儒,則表示不可以被修改聋伦,不可被覆蓋。給變量用final修飾界睁,表示不可被修改觉增,必須賦初始值。給類用final修飾翻斟,表示不可被繼承逾礁。
12.數(shù)組可以存放多個同一類型的數(shù)據(jù)
13.定義類的數(shù)組,需要再實例化數(shù)組成員的類才能使用访惜。例如:有一個類Dogs 嘹履,Dogs [] dg=new Dogs[4];需要實例化Dogs[0]=new Dogs();才能使用Dogs[0]。
14.比較字符串是否相等用equals,不要用==债热。
15.數(shù)組大小必須事先指定砾嫉。
16.hashmap ?用迭代遍歷。Iterator it=hm .keyset().iterator()
17.hashtable是同步的窒篱,只能允許一個線程訪問焕刮,其他線程必須等待舶沿,同步的要求會影響執(zhí)行效率,但它是線程安全的配并。hashmap是異步的括荡,不是線程安全的。hashtable不允許存放null.而hashmap可以荐绝。
18.vector是同步的一汽,數(shù)據(jù)增長是成倍的增長。Arraylist是異步的低滩,數(shù)據(jù)增長是按原來大小的50%增長召夹。當數(shù)據(jù)量大的時候用Vector會有一定優(yōu)勢,避免頻繁增長數(shù)據(jù)空間而浪費系統(tǒng)資源恕沫。
19.泛型很強大监憎,類型是安全的,向后兼容婶溯,層次清晰鲸阔,性能較高。
20.Java的反射機制迄委。能返回類的各種信息褐筛,例如:類方法的名稱。
21.布局管理器
this.setLayout(new BorderLayout(4,2));//邊界式布局叙身,水平距離4渔扎,垂直距離2
this.setLayout(new FlowLayout(FlowLayout.CENTER,4,2));//流式布局,利用FlowLayout設置對齊方式信轿,水平距離4晃痴,垂直距離2
this.setLayout(new GridLayout(3, 3, 4, 2));//網(wǎng)格式布局 ?三行三列, 水平距離4财忽,垂直距離2
22.只允許有一個頂級組件JFrame倘核,但可以有多個面板組件JPanel
23.布局管理器中設置組件的大小用setPreferredSize(new Dimension(120,25)).
24.JComboBox控件的操作
String jb[] ={ "1", "2", "3", "4" };
JComboBox jb1 = new JComboBox(jb);
jb1.addItem("足球");
jb1.addItem("籃球");
jb1.setPreferredSize(new Dimension(140, 25));//設置大小,setSize()無效
25.JList控件的操作
String jb[] ={ "1", "2", "3", "4" };
JList jList = new JList(jb);
JScrollPane jScrollPane = new JScrollPane(jList);//設置滾動
jList.setVisibleRowCount(2);//jList顯示的數(shù)量
this.add(jScrollPane);
26.JRadioButton控件必須放在ButtonGroup中即彪。
ButtonGroup此類用于為一組按鈕創(chuàng)建一個多斥(multiple-exclusion)作用域紧唱。使用相同的ButtonGroup對象創(chuàng)建一組按鈕意味著“開啟”其中一個按鈕時,將關閉組中的其他所有按鈕隶校。
27.分割窗口控件JSplitPane
jSplitPane1.add(jPanel1, JSplitPane.LEFT); jSplitPane1.add(jPanel2, JSplitPane.RIGHT);或者jSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jList, jLabel);//左右分割琼蚯,左邊加載jList右邊加載jLabel
this.jSplitPane1.setDividerLocation(0.7);//設定分割面板的左右比例(這時候就生效了,如果放在setVisible(true)這據(jù)之前就不會有效果惠况。)
jSplitPane1.setOneTouchExpandable(true);//是否可收縮
28.JMenuBar ?菜單條組件 ? ?JMenu ? ?JMenuItem
JToolBar工具條? ? ? ? JTabbedPane 選項卡
29.正要的畫圖方法paint(Graphics g)繪制組件的外觀,? repaint()刷新組件的外觀宁仔,如果paint方法中沒有super.paint(g)稠屠,repaint后原來的圖像不會清除(意思就是如果是移動一個原點,就會形成一條線)。
paint()被調(diào)用的情況:窗口最小化再最大化权埠,窗口的大小發(fā)生變化榨了,repaint函數(shù)被調(diào)用。
drawLine(int x1,int y1,int x2.int y2)畫直線
drawString(String str,int x,int y)畫字符串
fillRect()填充矩形? fillOval()填充橢圓? drawRect() 畫矩形? drawOval() 畫橢圓
30.畫圖片
java.awt.Image image = Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/image/cb.jpg"));
g.drawImage(image, 100, 100, 100, 100, this);
//用JLable控件顯示圖片
Image image = ImageIO.read(new File("D://1.png"));
JLabel jLabel = new JLabel("");
jLabel.setIcon(new ImageIcon(image));
31.java事件處理機制 響應的監(jiān)聽接口:KeyListener.MouseListener,ActionListener,WindowListener.
jb1 = new JButton("藍色");
jb1.addActionListener(this);? ? //this表示類攘蔽,也可使用其他任意類龙屉,例如:jb1.addActionListener(new Man());
jb1.setActionCommand("藍色");
32.Java事件處理機制:事件類型
ActionEvent :通常在按下按鈕,或者雙擊一個列表項或者選中某個菜單時發(fā)生
AdjustmentEvent:當操作一個滾動條時發(fā)生
ComponentEvent:當一個組件隱藏满俗,移動转捕,改變大小時發(fā)生
ContainerEvent:當一個組件從容器中加入或者刪除時發(fā)生
FocusEvent:當一個組件獲得或者失去焦點時發(fā)生
ItemEvent:當一個復選框或者列表項被選中時,當一個選擇框或者選擇菜單被選中
KeyEvent:當鍵盤的按鈕被按下唆垃,松開時發(fā)生
MouseEvent:當鼠標被拖動五芝,移動,點擊辕万,按下枢步,釋放
TextEvent:當文本區(qū)和文本域的文本發(fā)生改變時發(fā)生
WindowEvent:當一個窗口激活,關閉渐尿,失效醉途,恢復,最小化砖茸,最大化...
33.線程(兩種方法)
1. myThread mythread=new myThread();
mythread.start();
class myThread extends Thread
{
static int i=0;
public void run()
{
try{
Thread.sleep(1000)
while(i<10)
{
System.out.println(i);
i++;
}
} catch(Exception e){e.printStackTrace();
}}
}
2.myThread mythread=new myThread();
Thread th1=new Thread(mythread);
th1.start();
class myThread implements Runnable
{
public void run()
{
try{
Thread.sleep(1000)
} catch(Exception e){e.printStackTrace();
}}
}
34.Swing提供了JOptionPane類來實現(xiàn)類似Windows平臺下的MessageBox的功能隘擎。
使用實例:import javax.swing.JOptionPane;
ConfirmDialog --- 確認對話框,提出問題渔彰,然后由用戶自己來確認(按"Yes"或"No"按鈕)
InputDialog --- 提示輸入文本
MessageDialog --- 顯示信息
OptionDialog -- 組合其它三個對話框類型嵌屎。
調(diào)用方法:
采用JOptionPane.showXXXDialog()來顯示,如showConfirmDialog()顯示確認對話框恍涂、 showInputDialog()顯示輸入文本對話框宝惰、showMessageDialog()顯示信息對話框、showOptionDialog() 顯示選擇性的對話框再沧。
參數(shù)說明:
① ParentComponent:指示對話框的父窗口對象尼夺,一般為當前窗口。也可以為null即采用缺省的Frame作為父窗口炒瘸,此時對話框?qū)⒃O置在屏幕的正中淤堵。
② message:指示要在對話框內(nèi)顯示的描述性的文字
③ String title:標題條文字串。
④ Component:在對話框內(nèi)要顯示的組件(如按鈕)
⑤ Icon:在對話框內(nèi)要顯示的圖標
⑥ messageType:一般可以為如下的值ERROR_MESSAGE顷扩、INFORMATION_MESSAGE拐邪、WARNING_MESSAGE、QUESTION_MESSAGE隘截、PLAIN_MESSAGE
⑦ optionType:它決定在對話框的底部所要顯示的按鈕選項扎阶。一般可以為DEFAULT_OPTION汹胃、YES_NO_OPTION、YES_NO_CANCEL_OPTION东臀、OK_CANCEL_OPTION着饥。(使用方法:JOptionPane.YES_NO_OPTION)
35.FileDialog文件對話框,用于打開或保存文件的對話框惰赋。LOAD(打開文件)宰掉、SAVE(保存文件),不同模式下顯示的畫面(組件等)不太一樣赁濒;FileDialog內(nèi)部已經(jīng)解決了所有瑣碎的細節(jié)轨奄,比如按OK的時候檢查文件是否重復、是否存在等流部,如果出現(xiàn)異常會彈出消息框提示等等戚绕,這些都不需要程序員關心,都是自動的枝冀;
FileDialog ?file_open = new FileDialog(this, "請選擇文件", FileDialog.LOAD);?
FileDialog? file_save = new FileDialog(this, "請保存文件", FileDialog.SAVE);
獲取對話框中選中或保存的文件的路徑和名稱:
i. 主要運用FileDialog提供的兩個方法獲取舞丛,一個是getDirectory,一個是getFile果漾;
ii. String getDirectory(); // 返回目標文件的絕對路徑(不包括文件名)
iii. String getFile(); // 返回目標文件的名稱(不包含路徑球切,但包含后綴)
iv. 因此要獲取完整的絕對路徑名應該將上述兩個返回值相加;
36.java線程同步
只需要在需要同步的代碼段加上synchronized (this){你要同步的代碼}即可绒障。
同步機制的解釋:java任意類型的對象都有一個標志位吨凑,該標志位具有0,1兩種狀態(tài)户辱,其開始狀態(tài)為1鸵钝,當某個線程執(zhí)行了synchronized(object)中的語句,object對象的標志位變成0的狀態(tài)庐镐,直到執(zhí)行完整個同步代碼塊后恩商,該對象的標志位又回到1狀態(tài)。如果有其他線程執(zhí)行到synchronized(object)同步代碼塊時必逆,先檢查object對象的標志位怠堪,如果為0狀態(tài),表明已經(jīng)有另外的線程正在執(zhí)行synchronized(object)同步代碼塊中的代碼名眉,那么這個線程將暫時阻塞粟矿,讓出cpu資源,直達object對象的標志位為1狀態(tài)损拢。注:object需要定義陌粹,例如:static Object ob = "aa";// 值是任意的? ? synchronized(ob){}
37.File類的使用
File file=new File(string filepath);
file.mkdir();//創(chuàng)建文件夾? ? file.createNewFile();//創(chuàng)建新文件? ? file.list(); 文件下的文件(夾)列表. ? ? ?file.isDirectory();//是否是文件夾 ? ?file.isFile();//是否是文件 ? ?file.exists();//是否存在 ??file.getAbsolutePath();//獲取文件的絕對路徑 ? ? ?file.length();//返回由此抽象路徑名表示的文件的長度福压。如果此路徑名表示一個目錄申屹,則返回值是不確定的绘证。 ??file.delete();//刪除文件 ? ? ? ? ?file.renameTo(dest);//文件剪切到的dest(新路徑) ? ? ? ??file.getParent();//獲取文件的目錄 ? ? ? ? ??file.getPath();//獲取文件路徑
38.FileOutputStream字節(jié)輸出流(寫入)? ? FileInputStream字節(jié)輸入流(讀取)哗讥,結束時要關閉字節(jié)流。用完一定要記得關閉流
FileInputStream? fin = new FileInputStream(file); FileOutputStream ?fout = new FileOutputStream(file2);
byte[] bt = new byte[1024];//定義一個1kb的字節(jié)數(shù)組
int n = 0;
while ((n = fin.read(bt)) != -1)//讀取字節(jié)胞枕,n表示讀取字節(jié)的大小杆煞,n等于-1表示沒有讀取到字節(jié)。
{
String str = new String(bt, 0, n);//字節(jié)轉字符串腐泻,n表示讀取字節(jié)的大小
System.out.println(str.toString());
fout.write(bt,0,n);//寫入字節(jié)流到file2.
}
39.FileReader(字符輸入流)决乎,F(xiàn)ileWriter(字符輸出流)操作char
char ch[]=new char[1024];
40.BufferedReader(緩沖字符輸入流)派桩,BufferedWriter(緩沖字符輸出流) 操作String,使用緩沖字符流需要先轉換字符流才能使用构诚。用完一定要記得關閉流,否則會讀不到也寫不進內(nèi)容铆惑。
FileReader fr=new FileReader("FilePath")范嘱;
FileWriter fw=new FileWriter("FilePath");
BufferedReader br=new BufferedReader(fr);
BufferedWriter bw=new? BufferedWriter(fw);
String str = "";
while ((str = br.readLine()) != null)//如果到達流末尾則返回null员魏,內(nèi)容不包括任何行的中止符丑蛤,例如換行符。
{
System.out.println(str);
bw.Writer(str+ "\r\n");
}
41.ImageIO(javax.imageio.*;)
Image image=ImageIO.read(new File("imagepath"));
42.連接數(shù)據(jù)庫
需要引用的包:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
代碼(連接mysql):
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1:3306/mysql";
String user = "root";
String psw = "";
try
{
Class.forName(driver);
Connection connection = DriverManager.getConnection(url, user, psw);
Statement statement = connection.createStatement();
String sql = "select * from help_keyword";
ResultSet rSet = statement.executeQuery(sql);
while (rSet.next())
{
String ste = rSet.getString("name");
System.out.println(ste);
}
} catch (Exception e)
{
e.printStackTrace();
}
finally {
try
{
statement.close();
connection.close();
} catch (SQLException e)
{
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}