Java 第一课

先知道怎么做,再弄懂为什么这么做。做中学,快乐的学。

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();

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,560评论 18 399
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,041评论 0 4
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,398评论 25 707
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 1,207评论 0 2
  • 对于很多会计专业大学生来说,在择业时,总是会犹犹豫豫,不知道未来到底要不要从事会计工作。 在校时,他们就听到不少已...
    会计小软妹阅读 510评论 0 3