先知道怎么做,再弄懂为什么这么做。做中学,快乐的学。
1.在java中,对char进行运算的时候,直接当做ASCii 码对应的整数对待。
Scanner scan=new Scanner(System.in);//从键盘接收数据
if(scan.hasNext())//也可以用scan.hasNextLine()判断
{
String str1=scan.next();
System.out.println("输入的数据为:"+str1);
}
next() 与 nextLine() 区别
next():一定要读取到有效字符后才可以结束输入。对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。可以获得空白。
//使用 System.in 创建 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中,小数默认为double 数据类型。
3.java中switch可用数据类型主要是:byte ,short,int,char,enum等。条件表达式的数据类型必须和case后的常量类型一致。
4.java一个类可以有多个构造方法,参数列表不同。构造方法的主要用处是初始化类的成员属性。
5.java的问题都应该联想到对象。
6.类变量通过类方法访问。
7.java 多态 Animal an=new Cat();
8.抽象类被继承,里面的抽象方法必须全部实现。
9.当一个类实现一个接口,要求实现接口中的所有方法。一个类可以实现多个接口,一个类可以继承一个类同时继承多个接口。一个接口可以继承别的接口。接口中可以有变量,但变量不能用private和protected 修饰,接口中的变量本质上都是static的,而且是final ,不管加不加static修饰,一般当做全局变量使用,访问方法:接口名.变量名。
10.接口不能被实例化,接口中的方法都不能有主体。抽象类中可以有不是抽象的方法(有主体的方法)。
11.给方法用final修饰,则表示不可以被修改,不可被覆盖。给变量用final修饰,表示不可被修改,必须赋初始值。给类用final修饰,表示不可被继承。
12.数组可以存放多个同一类型的数据
13.定义类的数组,需要再实例化数组成员的类才能使用。例如:有一个类Dogs ,Dogs [] dg=new Dogs[4];需要实例化Dogs[0]=new Dogs();才能使用Dogs[0]。
14.比较字符串是否相等用equals,不要用==。
15.数组大小必须事先指定。
16.hashmap 用迭代遍历。Iterator it=hm .keyset().iterator()
17.hashtable是同步的,只能允许一个线程访问,其他线程必须等待,同步的要求会影响执行效率,但它是线程安全的。hashmap是异步的,不是线程安全的。hashtable不允许存放null.而hashmap可以。
18.vector是同步的,数据增长是成倍的增长。Arraylist是异步的,数据增长是按原来大小的50%增长。当数据量大的时候用Vector会有一定优势,避免频繁增长数据空间而浪费系统资源。
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));//网格式布局 三行三列, 水平距离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显示的数量
this.add(jScrollPane);
26.JRadioButton控件必须放在ButtonGroup中。
ButtonGroup此类用于为一组按钮创建一个多斥(multiple-exclusion)作用域。使用相同的ButtonGroup对象创建一组按钮意味着“开启”其中一个按钮时,将关闭组中的其他所有按钮。
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)这据之前就不会有效果。)
jSplitPane1.setOneTouchExpandable(true);//是否可收缩
28.JMenuBar 菜单条组件 JMenu JMenuItem
JToolBar工具条 JTabbedPane 选项卡
29.正要的画图方法paint(Graphics g)绘制组件的外观, repaint()刷新组件的外观,如果paint方法中没有super.paint(g),repaint后原来的图像不会清除(意思就是如果是移动一个原点,就会形成一条线)。
paint()被调用的情况:窗口最小化再最大化,窗口的大小发生变化,repaint函数被调用。
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事件处理机制 响应的监听接口:KeyListener.MouseListener,ActionListener,WindowListener.
jb1 = new JButton("蓝色");
jb1.addActionListener(this); //this表示类,也可使用其他任意类,例如:jb1.addActionListener(new Man());
jb1.setActionCommand("蓝色");
32.Java事件处理机制:事件类型
ActionEvent :通常在按下按钮,或者双击一个列表项或者选中某个菜单时发生
AdjustmentEvent:当操作一个滚动条时发生
ComponentEvent:当一个组件隐藏,移动,改变大小时发生
ContainerEvent:当一个组件从容器中加入或者删除时发生
FocusEvent:当一个组件获得或者失去焦点时发生
ItemEvent:当一个复选框或者列表项被选中时,当一个选择框或者选择菜单被选中
KeyEvent:当键盘的按钮被按下,松开时发生
MouseEvent:当鼠标被拖动,移动,点击,按下,释放
TextEvent:当文本区和文本域的文本发生改变时发生
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类来实现类似Windows平台下的MessageBox的功能。
使用实例:import javax.swing.JOptionPane;
ConfirmDialog --- 确认对话框,提出问题,然后由用户自己来确认(按"Yes"或"No"按钮)
InputDialog --- 提示输入文本
MessageDialog --- 显示信息
OptionDialog -- 组合其它三个对话框类型。
调用方法:
采用JOptionPane.showXXXDialog()来显示,如showConfirmDialog()显示确认对话框、 showInputDialog()显示输入文本对话框、showMessageDialog()显示信息对话框、showOptionDialog() 显示选择性的对话框。
参数说明:
① ParentComponent:指示对话框的父窗口对象,一般为当前窗口。也可以为null即采用缺省的Frame作为父窗口,此时对话框将设置在屏幕的正中。
② message:指示要在对话框内显示的描述性的文字
③ String title:标题条文字串。
④ Component:在对话框内要显示的组件(如按钮)
⑤ Icon:在对话框内要显示的图标
⑥ 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内部已经解决了所有琐碎的细节,比如按OK的时候检查文件是否重复、是否存在等,如果出现异常会弹出消息框提示等等,这些都不需要程序员关心,都是自动的;
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两种状态,其开始状态为1,当某个线程执行了synchronized(object)中的语句,object对象的标志位变成0的状态,直到执行完整个同步代码块后,该对象的标志位又回到1状态。如果有其他线程执行到synchronized(object)同步代码块时,先检查object对象的标志位,如果为0状态,表明已经有另外的线程正在执行synchronized(object)同步代码块中的代码,那么这个线程将暂时阻塞,让出cpu资源,直达object对象的标志位为1状态。注:object需要定义,例如:static Object ob = "aa";// 值是任意的 synchronized(ob){}
37.File类的使用
File file=new File(string filepath);
file.mkdir();//创建文件夹 file.createNewFile();//创建新文件 file.list(); 文件下的文件(夹)列表. file.isDirectory();//是否是文件夹 file.isFile();//是否是文件 file.exists();//是否存在 file.getAbsolutePath();//获取文件的绝对路径 file.length();//返回由此抽象路径名表示的文件的长度。如果此路径名表示一个目录,则返回值是不确定的。 file.delete();//删除文件 file.renameTo(dest);//文件剪切到的dest(新路径) file.getParent();//获取文件的目录 file.getPath();//获取文件路径
38.FileOutputStream字节输出流(写入) FileInputStream字节输入流(读取),结束时要关闭字节流。用完一定要记得关闭流
FileInputStream fin = new FileInputStream(file); FileOutputStream fout = new FileOutputStream(file2);
byte[] bt = new byte[1024];//定义一个1kb的字节数组
int n = 0;
while ((n = fin.read(bt)) != -1)//读取字节,n表示读取字节的大小,n等于-1表示没有读取到字节。
{
String str = new String(bt, 0, n);//字节转字符串,n表示读取字节的大小
System.out.println(str.toString());
fout.write(bt,0,n);//写入字节流到file2.
}
39.FileReader(字符输入流),FileWriter(字符输出流)操作char
char ch[]=new char[1024];
40.BufferedReader(缓冲字符输入流),BufferedWriter(缓冲字符输出流) 操作String,使用缓冲字符流需要先转换字符流才能使用。用完一定要记得关闭流,否则会读不到也写不进内容。
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,内容不包括任何行的中止符,例如换行符。
{
System.out.println(str);
bw.Writer(str+ "\r\n");
}
41.ImageIO(javax.imageio.*;)
Image image=ImageIO.read(new File("imagepath"));
42.连接数据库
需要引用的包:
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();
}
}