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

第一章 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程序设计语言(一)(2018版)串讲_第1张图片
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程序设计语言(一)(2018版)串讲_第2张图片
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版)串讲)