美文网首页
Java 第一课

Java 第一课

作者: Mr_馮 | 来源:发表于2017-05-17 20:08 被阅读0次

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

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

    }

    }

    相关文章

      网友评论

          本文标题:Java 第一课

          本文链接:https://www.haomeiwen.com/subject/bjqjxxtx.html