美文网首页
自考 java程序设计语言(一)(2018版)串讲

自考 java程序设计语言(一)(2018版)串讲

作者: __construct | 来源:发表于2020-07-28 19:22 被阅读0次

    第一章 java概述

    java 语言的特点

    1. 语法简单,功能强大,安全可靠
    2. 与平台无关
    3. 解释编译两种运行方法
    4. 多线程
    5. 动态执行兼有丰富的API文档及类库

    设置环境变量

    1. JAVA_HOME: jdk安装路径
    2. CLASSPATH
    3. Path

    Java 程序的两种形式

    • Java程序(Java Application)
    • Java小应用程序(Java Applet)

    编译与运行

    • 编译:javac [选项] 源文件名
    • 运行: java 文件类名

    IDE

    • Eclipse
    • NetBeans

    面像对象技术

    • 面像对象的分析(OOA)
    • 面像对象的设计(OOD)
    • 面像对象的程序设计(OOP)

    面像对象三大特性:封装、继承、多态

    第二章 数据和表达式

    注释

    • // 在一行内的注释
    • /一行或多行注释/
    • /* * 文档注释 * */

    关键字

    java 关键字

    标识符

    1. 标识符是由字母、数字、下划线(_)或美元符($)组成的字符串
    2. 数字不能最为标识符开头
    3. 标识符区分大小写。长度没有限制

    Java 编程风格

    • 类名或接口名: 多为名称,含有大小写,每个单词的首字母大写
    • 方法名: 多是动词,含有大小写,首字母小写,其余各单词的首字母大写。
    • 常量名:全为大写字母,单词与单词之间使用下划线。
    • 变量名:首字母为小写,后面单词的首字母为大写。

    基本数据类型

    1. 基本数据类型
      • 整数类型:byte, short, int, long
      • 浮点类型:float, double
      • 字符类型:char
      • 布尔类型:boolean
    2. 复合数据类型
      • 类类型:class
      • 数组
      • 接口类型: interface

    运算符

    • 算数运算符:+,-,*,/,%,++,--
    • 关系运算符:>,>=,<,<=,==,!=
    • 逻辑运算符:&&,||,!
    • 位运算符:-(取反),&,|,^,右移(>>),左移(<<),无符号右移(>>>)
    • 扩展赋值运算符:+=,-=,*=,/=,%=
    • 条件运算符:?:
    • 点运算符: .
    • 实例运算符:instanceof
    • new运算符: new
    • 数组下标运算符: []

    自动类型转换

    由低到高
    byte,short,char,int,long,float,double

    第三章 流程控制语句

    包语句

    package pag1[.pk2.[pk3]]

    引入语句

    import java.util.*;

    赋值语句

    =

    分支语句

    • if 语句:if else
    • switch语句:switch case default

    循环语句

    • for语句
    • while语句
    • do while语句

    跳转语句

    • 标号:可以放在任意语言之前,通常与for、while、do while语句配合使用,已发格式为【标号:语句;】
    • break语句
    • continue语句

    简单的输入输出

    1. Scanner类:常使用read(),readLine()方法读入数据
    2. NumberFormat类:输出类
      • getInstance():返回当前默认语言环境的默认数据格式
      • getCurrenyInstance():返回当前默认语言环境的通用格式
      • getNumberInstance():返回当前默认语言环境的通用数值格式
      • getPercentInstance():返回当前默认语言环境的百分比格式
      • setMaximumFractionDigits(int):设置数值的小数部分允许的最大位数。
    3. DecimalFormat类:构造方法字符串设置数值的显示格式

    异常处理机制

    Java的异常采取抛出和捕获的方式处理

    异常分类

    1. Exception:异常总类
      • RuntineException:运行时异常
      • IOException:输入输出异常
    2. Error: 错误类

    异常处理

    1. throws:告诉方法的调用者处理异常。
      2.try catch finally:在方法内处理异常

    公共异常

    • ArithmeticException:
    • NullPointerException:空指针异常
    • NegativeArraySizeException
    • ArrayIndexOutOfBoundsException: 数组越界异常

    抛出异常

    当不能使用合理的方式来解决不正常或意外事件的情形下,才抛出异常
    throw 异常对象

    第四章 面向对象程序设计

    类的定义

    修饰符 class 类名 [extends 父类名]{
      修饰符 类型 成员变量1;
      修饰符 类型 成员方法(参数列表){
        方法体 
    }
    ……
    }
    

    构造方法

    构造方法的名字与类名相同,没有返回值,在创建对象实例时用过new运算符自动调用。

    对象的创建,初始化

    //1. 声明:类名 对象吗;
    Date myBirthdatay,yourBirthdat
    //2. 初始化:对象名=new 类名 ([参数列表])
    myBirthday = new Data()
    
    

    方法的定义

    修饰符 返回值类型 方法名(参数列表){
      方法体内容
      ……
    }
    

    重载方法名

    方法名称加上方法的参数列表(包括方法中参数的个数、顺序和类型)称为方法签名。方法重载时,方法签名一定不能相同。

    修饰符

    • public
    • proteted
    • private

    静态变量

    static修饰的变量,所有对象共享

    静态方法

    • 静态方法不能使用非静态变量
    • 静态方法不能重写

    包装类

    java.lang包中的包装类

    第五章 数组和字符串

    数组声明

    • 定义格式:类型数组名 [];
    • java没有静态的数组声明

    创建数组

    • 静态初始化:声明时赋值
    int intArray[ ] = {1,2,3,4}
    Double [ ] heights = {4.5, 23.6, 84.124} 
    
    • 动态初始化:使用new申请空间,在逐步赋值
    类型 数组名[] = new 类型[数组大小];
    数组名[0] = new 类型(初值表);
    

    访问数组元素

    • 访问格式:数组名[下标]
    • 其中,下标的范围是0~length-1。下标可以是整型常数或表达式。

    多维数组

    //二维数组的定义
    类型 数组名[] []
    类型[] [] 数组名
    类型[] 数组名[]
    
    //二维数组初始化
    //静态初始化
    int intArray[][] = new {{2,3},{1,5},{3,4}}
    //动态初始化:直接分配
    类型 数组名[][] = new 类型[数组第一维大小][数组第二维大小];
    
    //动态初始化:按维分配
    类型 数组名[][] = new 类型[数组第一维大小][];
    数组名[0] = new 类型[数组第二维大小];
    数组名[1] = new 类型[数组第二维大小];
    

    字符串声明

    • String 类一旦创建,值无法改变
    • StringBuffer可变长字符串,可以修改长度

    字符串创建

    String s1 = new String();
    String s1 = "hello world!";
    
    StringBuffer sb1 = new StringBuffer();
    

    字符串的操作

    String 和 StringBuffer常用方法

    • length(): 获取字符串长度

    • charAt(int index):获取字符串index对应的元素

    • subString(int beginIndex):从某个位置取子串

    • replace(char oldChar, char newChar):字符创替换

    • toLowerCase(): 字符串转小写

    • toUpperCase():字符串转大写

    • startsWith(String prefix):判断字符串以什么开头

    • "==":比较两个字符串的内存地址是否一致

    • "equals()": 比较两个字符串的数值是否相同

    Vector 类

    • 可变长存储空间
    • 可存储不同类型数据
    • Vetor 类只能存储对象
    • Vetor 类提供了许多方法来操作对象

    Vetor常用方法

    1. 构造方法: Vetor()
    2. 添加方法
      • addElement(Object obj)
      • insertElementAt(Object obj, int index)
      • add(int index, Object obj)
    3. 修改或删除方法
      • setElementAt(Object obj, int index)
      • removeElement(Object obj)
    4. 查找方法
      • ElementAt():返回指定位置元素
      • contains(Object obj):是否包含指定对象
      • indexOf(Object obj, int start_index):返回指定位置开始的第一个字串的位置
      • lastIndexOf(Object obj, int start_index):返回指定位置开始后的最后一个字串的位置

    第六章 继承和多态

    is a 关系

    • is a : 一般与特殊关系
    • has a : 整体与部分关系

    extends 关键字

    用extends关键字实现通过已有类生成新类,新类叫子类,已有类叫父类。两个类中共性部分放在父类中,两个类中特殊部分放在子类。

    //创建新类格式
    修饰符 class 子类名 extends 父类名{
      类体
    }
    

    Object 类

    所有类的父类

    • getClass() : 获取当前对象所属的类信息。
    • toString(): 按字符串对象返回当前对象本身的有关信息。
    • equals(Object obj): 比较两个对象是否是同一个对象,是返回true。

    单重继承

    • java 只支持单继承;
    • 多继承是通过接口实现的;
    • 构造方法不能被继承,构造方法只能自己编写或没有的时候系统添加的默认的构造方法。

    对象转型

    父类Employee,子类Manager,向上转型:

    //向上转型 
    Empolyee e = new Manager();
    

    方法覆盖及其规则

    子类与父类使用的是相同的方法名及参数列表,但可以执行不同的功能,叫方法覆盖。

    • 覆盖方法的允许访问范围不能小于原方法。
    • 覆盖方法所抛出的异常不能比原方法更多。

    调用父类的构造方法

    子类第一条语句:

    super(参数列表);
    

    多态

    1. 静态多态: 同一个类中同名方法
    2. 动态多态:不同类中同名方法,父类做函数形参,根据实参决定执行哪个对象的方法,完成不同的功能。

    接口的定义

    //定义格式
    [接口修饰符] interfance 接口名 [extends 父接口列表]{
      //方法原型或静态常量
      ……
    }
    

    接口的实现

    //格式
    class 类名 implements 接口{
      //接口方法的具体实现
    }
    

    第七章 输入输出流

    数据流的基本概念

    流是一组有顺序的、有起点和终点的数据构成的集合。来完成数据的输入和输出。
    Java 的IO包中流被分成不同的层次。

    输入数据流(字节流)

    InputStram类的常用方法:

    • int read()
    • int read(byte[] b)
    • int read(byte[] b, int off, int len)
    • long skip(long n)
    • void close()
    • int available()
    • boolean markSupported()
    • void mark(int readlimite)
    • void reset()

    输出数据流(字节流)

    OutStream类的常用方法:

    • void write(int b)
    • void write(byte b[])
    • void write(byte b[], int off, int len)
    • void flush()
    • void close()

    文件数据流

    FileInputStream 和 FileOutStream类实时对文件进行读写操作。不支持mark()和reset()方法。

    FileInputStream in = new FileInputStream("a.txt");
    while (in.available() > 0)
      System.out.print(in.read() +"");
    in.close();
    
    //例题:文件复制
    InputStream in = new FileInputStream("a.txt");
    OutputStream = out new FileOutputStream("b.txt");
    int len;
    while ((len = in.read()) != -1) {
      out.write(len);
    }
    in.close();
    out.close();
    

    缓冲数据流

    在基础字节流的基础上建立一个缓冲区,来提高字节流处理的效率。

    • BufferedInputStream(InputStream in)
    • BufferedInputStream(InputStream in, int size)
    • BufferedOutputStream(OutputStream out)
    • BufferedOutputStream(OutputStream out, int size)
    • read()
    • write()
    • flush()

    DataInputStream类数据流

    1. DataInputStream输出流:读取基本类型数据的方法

      • byte readByte()
      • long readByte()
      • double readByte()
      • boolean readByte()
      • String readByte()
      • int readByte()
      • float readFloat()
    2. DataOutputStream输入数据流:写入基本类型数据的方法

      • void writeByte(int aByte)
      • void writeLong(long aLong)
      • void writeDouble(double aDouble)
      • void writeBoolean(boolean aBool)
      • void writeUFT(String aString)
      • void writeInt(int aInt)
      • void writeFloat(float aFloat)

    对象流

    将对象信息写入文件或从文件读取对象信息。

    //向文件写入对象流创建
    FileOutputStream f = new FileOutputStream("a.txt");
    ObjectOutputStream s = new ObjectOutputStream(f);
    
    //从文件读对象流创建
    FileInputStream f = new FileInputStream("a.txt");
    ObjectInputStream s = new ObjectInputStream(f);
    

    序列化

    将对象信息长久保存到文件叫序列化(Serializable),反之叫反序列化

    public class Student implements Serializable{
      String name;
      public Student(String name){
        this.name = name;
      } 
    }
    
    //对象流写入文件
    Student stu = new Student("LiMing");
    FileOutputStream fb = new FileOutputStrean("a.txt");
    ObjectOutputStream so = new ObjectOutputStream(fb);
    so.writeObject(stu);
    so.close();
    
    //读取对象流
    FileInputStream fi = new FileInputStream("a.txt");
    ObjectInputStream si = new ObjectInputStream(fi);
    stu = (Student)si.readObject();
    si.close();
    

    基本字符流

    InputStreamReader 和 OutputStreamWrite 可以用于不同平台间编码方式的转换。

    • InputStreamReader(InputStream in):默认规范。
    • InputStreamReader(InputStream in, String enc):指定规范enc。
    • OutputStreamWrite(OutputStream out):默认规范。
    • OutputStreamWirte(OutputStream out, String enc):指定enc。

    FileReader 和 FileWrite 是文件字符读者和写着。以字符为单位对文件进行读写。常用的方法和字节流一样,就是读的参数变为char变量和char数组。

    • FileWrite 新增 write(String):将一个字符串写入文件

    缓冲区读者和缓冲区写者

    BufferedReader 和 BufferedWrite ,缓冲字符流。

    • BufferedReader(Reader r)
    • BufferedWrite(Write w)
    • readLine(): 读一行
    • newLine(): 写一行空白

    File类

    1. 与文件名相关的

      • String getName(): 获取文件名
      • String getPath(): 获取文件路径
      • String getAbsolutePath(): 获取文佳绝对路径
      • String getParent(): 获取文件父目录名称
      • boolean renameTo(FilenewName): 更改文件名,成功返回True,否则返回false。
    2. 文件测试方法:

      • boolean exists(): 文件是否存在
      • boolean canWrite(): 文件对象是否可写
      • boolean canRead(): 文件对象是否可读
      • boolean isFile(): 文件对象是否是文件
      • boolean isDirectory(): 文件对象是否是目录
      • boolean isAbsolute(): 文件对象是否是绝对路径
    3. 常用文件信息和方法

      • long lastModified(): 获取文件最后修改时间
      • long length(): 获取文佳长度
      • boolean delete():删除文件对象指向的文件,成功则返回true, 否则返回false。

    随机访问文件

    RandomAccessFile类

    //1.使用文件名
    myRAFile = new RandomAccessFile(String name, String mode);
    //2.使用文件对象
    myRAFile = new RandomAccessFile(File file, String mode);
    

    常用方法:

    • long getFilePointer(): 返回文件指针的当前位置。
    • void seek(long pos): 将文件指针置于指定的绝对位置。

    第八章 图形界面设计

    AWT 与 Swing

    顶层容器

    JFrame常用方法:

    1. 构造方法
      • JFrame()
      • JFrame(String title)
    2. 其它方法
      • setBounds(int x, int y, int width, int height)
      • setSize(int width, int height): 设置尺寸
      • setBackground(Color c): 设置背景颜色
      • setVisible(boolean aFlag): 设置是否显示
      • pack()
      • setTitle()
      • getContent()
      • setLayout(LayoutManager manager)

    内容窗格

    1. 通过顶层容器的方法设置内容窗格
    Container contentPane = frame.getContentPane();
    contentPane.add(button, BorderLayout.CENTEER);
    
    1. 创建一个新的内容窗格
    Jpanel contenPane = new Jpanel();
    contenPane.setLayout(new BorderLayout());
    contentPane.add(button, BorderLayout.CENTER);
    frame.setContentPane(contentPane);
    

    面板

    普通面板JPanel和滚动面板JScrollPane:

    • JScrollPane()

    • JScrollPane(Component view)

    • void setHorizontalScrollBarPolicy(int policy) :确定水平滚动条何时显示在滚动窗体上。

    • void setVerticalScrollBarPolicy(int policy): 确定垂直滚动条何时显示在滚动窗体上。

    • Scrollbar():构造一个新的垂直滚动条

    • Scrollbar(int orienration): 构造一个具有指定方向的新滚动条。orientation指滚动条的方向,Scrollbar.HORIZONTAL水平滚动条,Scrollbar.VERTICAL垂直滚动条

    • Scrollbar(int orientation, int value, int visible, int minimum, int maximum):构造一个新的滚动条。value是滚动条初始值,visible是滚动条的可视量

    标签

    可设置文本、对齐方法和图标

    • String getText()
    • void setText(String text)

    按钮

    可设置文本和图标

    • void setEnabled(boolean b)
    • void setMnemonic(int c):设置键盘激活键

    事件处理:点击按钮时产生ActionEvent 事件,注册ActionListener监听器

    • addActionListener(ActionListener l): 为按钮添加事件侦程序。
    • e.getSource(): 获取事件源。
    • e.getActionCommand():获得事件源的命令字符串。

    切换按钮、复选按钮和单选按钮

    JCheckBox:复选按钮
    JRadioButton: 单选按钮

    • isSelected(): 判断按钮是否被选中。

    事件处理:

    1. 点击时产生ActionEvent事件,注册ActionListener,实现actionPerform()方法。
      • e.getSource():获取事件源
      • e.getActionCommand():获得事件源的命令字符串
    2. 状态选中时产生ItemEvent事件,注册ItemListener监听器,实现itemStateChanged().
      • e.getSource()
      • e.getItem()

    FlowLayout布局管理器

    流式布局管理器

    //设置布局方式
    setLayout(new FlowLayout(FlowLayout.RIGHT, 20, 40));
    setLayout(new FlowLayout(FlowLayout.LEFT));
    setLayout(new FlowLayout());
    

    BorderLayout布局管理器

    边界管理器,分成North(上)、West(左)、center(中)、East(右)、South(下)五个部分

    GridLayout布局管理器

    网格布局管理器,网格变化时,网格内组件大小会发生变化。

    GardLayout布局管理器

    卡片布局管理器

    • first()
    • next()
    • previous()
    • last()
    • show(Container parent, String name)
    //内容窗格设为卡片布局
    myCard = new CardLayout();
    contentPane.setLayout(myCard);
    
    //将卡片放到内容窗格中,其中p1,p2,p3为名称
    contentPane.add(p1, "First");
    contentPane.add(p2, "Second");
    contentPane.add(p3, "Third");
    

    BoxLayout布局管理器

    盒式布局管理器

    空布局

    指定布局为空

    //通过组件的方法设置位置
    setBounds(int x, int y, int width, int height)
    

    颜色

    //java.awt包中
    //创建颜色类对象
    Color myColor = new Color(r, g, b);
    

    字体

    Font f  = new Font("Dialong",Font.PLAIN, 14)
    //Font.PLAIN:正常
    //Font.BOLD:粗体
    //Font.ITALIC: 斜体
    

    Graphics类的基本功能

    重写Jcomponent的paintComponent()方法,该方法得到Graphics对象,然后使用绘画方法。

    Graphics 2D绘图

    //绘制几何图形
    import java.awt.geom;
    Graphics2D g2d = (Graphics2D)g;
    Line2Dline = new Line2D.Double(30.0, 30.0, 340.0, 340.0);
    //绘制线段
    g2d.draw(line);
    

    第九章 Swing组件

    组合框(JComboBox)

    JComboBox:下拉列表

    常用方法:

    • void setSelectedIndex()
    • objec getSelectedItem()

    事件处理:
    选择选项时产生ActionEvent事件,注册ActionListener监听器。或者触发ItemListener事件

    列表(JList)

    ListSelectionEvent事件:

    • addListSelectionListener():接口
    • valueChangeed(ListSelectionEvent e):接口方法

    方法:

    • getSelectedValue():
    • setVisibleRowCount(int visibleRowCount)

    文本框 (JTextField)

    常用方法:

    • String getText()
    • void setText(String text)
    • void setEditable(boolean b)

    事件处理:
    在JTextField里按下回车键时,产生ActionEvent事件,注册ActionListener监听器,重新actionPerformed()。

    文本区 (JTextArea)

    构造方法:

    • JTextArea()
    • JTextArea(int rows, int cows)
    • JTextArea(String text)

    常用方法:

    • String getText()
    • void setText(String text)
    • void copy()
    • void cut()
    • void paste()
    • void append(String str): 将指定文本str追加到文本区
    • void inster(String str, int pos):将指定文本str插入到文本区的特定位置pos处。
    • void replaceRangs(String str, int stan, int end): 用指定文本str替换文本区中从起始位置stan到结尾位置end的内容。

    菜单栏和菜单

    //菜单栏
    JMenuBar menuBar = new JMenuBar();
    setJMenuBar(menuBar);
    
    //菜单
    JMenu menu1 = new JMenu("文件");
    JMenu menu2 = new JMenu("帮助");
    menuBar.add(menu1);
    menuBar.add(menu2);
    

    菜单项

    JMenuItem item1 = new JMenyItem("打开");
    JMenuItem item2 = new JMenuItem("退出");
    menu1.add(item1);
    menu1.addSeparator()
    menu2.add(item2);
    

    复选菜单项和单选菜单项

    //复选菜单项
    JCheckBoxMenuItem cbm = new JCheckBoxMenuItem("Always on Top");
    
    //单选菜单项
    JRadioButtonMenuItem rbi = new JRadioButtonMenuItem();
    

    触发ItemEvent事件,可以使用ItemListener中的itemStateChanged()对此事件进行响应。

    对话框

    • 模式对话框:关闭之前其它窗口无法操作
    • 非模式对话框:不管是否关闭,其他窗口都可以接受操作

    标准对话框

    • showConfirmDialog: 确认对话框,显示问题,要求用户进行确认(yes/ no/ cancel)。
    • showInputDialog: 输入对话框,提示用户进行用户输入。
    • showMessageDialog: 信息对话框,显示信息,告之用户发生了什么情况。
    • showOptionDialog: 选项对话框,显示选项,要求用户进行选择。

    文件对话框

    • showOpenDialog(Component parent): 弹出一个“打开”文件对话框。
    • showSaveDialog(Component parent): 弹出一个“保存”文件对话框。
    • getSelectedFile():取得用户所选择的文件。结构File对象,得到打开的文件。

    第十章 多线程

    线程的结构

    • 虚拟CPU
    • 执行的代码
    • 处理的数据

    线程的状态

    1. 新建状态(New)
    2. 就绪状态(Runnable)
    3. 运行状态(Running)
    4. 阻塞状态(Blocked):
    5. 死亡状态(Dead)

    继承Thread类创建线程

    class Lefthand extends Thread{
      //线程体
      public void run(){
        for(int i; i<=5; i++){
          System.out.println("l am Left hand!");
          try{
            sleep(500);
          }catch(InterruptedException e){}
        }  
      }
    }
    
    class Righthand extends Thread{
      //线程体
      public void run(){
        for(int i; i<=5; i++){
          System.out.println("l am Right hand!");
          try{
            sleep(500);
          }catch(InterruptedException e){}
        }  
      }
    }
    
    public class ThreadTest{
      static Lefthand left;
      static Righthand right;
      public static void main(String[] args){
        left = new Lefthand();
        right = new Righthand();
        left.start();
        right.start();
      }
    }
    

    实现Runnable接口创建线程

    public class xyz implements Runnable{
      int i;
      public void run(){
        while (true){
          System.out.println("Hello" + i++) ;
        }
      }
    }
    
    Runnable r = new xyz();
    //线程
    Thread t = new Thread(r);
    t.start();
    

    线程的启动

    • start()

    线程的调度

    设置优先级:

    • void setPriority(int newProiorty): 重置线程优先级
    • int getProiority(): 获取当前线程的优先级

    其他方法:

    • sleep()
    • yield()

    结束线程

    • interrupt(): 强迫终止线程

    挂起线程

    • sleep()
    • wait()
    • notify()
    • notifyAll()
    • join()

    对象的锁定标志

    //互斥块
    public void push(charc){
      synchronized(this){
        //实现功能代码
      }
    }
    
    //互斥方法
    public synchronized void push(charc){
      //实现代码
    }
    

    相关文章

      网友评论

          本文标题:自考 java程序设计语言(一)(2018版)串讲

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