注:对应问题见上篇博客。
文章目录
- 一、Java基本语法元素:
- 二、Java基本控制结构:
- 三、Java面向对象程序设计:
- 四、数组和字符串:
- 五、异常处理:
- 六、Java IO流:
- 七、图形用户界面 GUI:
- 八、Java多线程:
一、Java基本语法元素:
- 标识符是由字母、下划线(_)、美元符号($)和数字组成的字符串,首字母不能是数字。
关键字不能作为标识符;布尔常量true和false不能作为标识符;null不能作为标识符。 - Java语言关键字
- Java语言的注释:
(1)单行注释 “//”
(2)多行注释 “/* … /”
(3)文档注释 “/ *… */” 文档注释属于多行注释. - Java数据类型及范围:
- 包装类用途:
(1)作为基本数据类型对应的类,方便设计对象的操作。
(2)包含基本类型的相关属性以及相关的操作方法。
基本类型 | 包装类名 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
(类的首字母大写)
- Java中常量:
(1)整数常量
(2)浮点常量
(3)布尔常量(true和false)
(4)字符常量
注:简单字符常量是由一对单引号括起来的字符,但不能是(‘)和 ()。单引号和反斜杠需要用转义字符表示,分别为’\’’和’\ ’。
(5)字符串常量
(6)null常量
Java中变量:
(1)类变量
(2)实例变量:不使用static修饰的类变量
(3)阵列组件
(4)形参
(5)局部变量 - Java运算符:关系运算符、算数运算符、逻辑运算符、赋值运算符
- 强制类型转换:从高精度向低精度转换(可能会出现精度损失)如:int a = (int)(5.0/3).
自动类型转换:从低范围到高范围转换,如double a = 1. (int范围小于double)
二、Java基本控制结构:
- 三种控制结构:顺序结构,分支结构,循环结构
- if-else语句、switch语句、while语句、do-while语句、for循环语句
for-each语句:
For(变量类型 变量名:数组/容器)
{
循环体语句;
}
- switch语句中的控制表达式必须是char、int、short、byte类型的。
注:在switch(expression)中,expression只能是一个整数表达式或者枚举常量,整数表达式可以是int类型或Integer包装类型。由于byte,short,char都可以隐式转换为int类型,所以,这些类型也可以用作表达式。
三、Java面向对象程序设计:
- 类的定义和使用
(修饰符) class 类名 (extends 父类) (implements A,B...){
//类主体
}
- 如何创建和使用对象:使用new关键字 类名 对象名 = new 类名();
- 什么是方法的重载?
- 如果同一个类中包含了两个或两个以上方法名相同,方法参数的个数、 顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。
只改变参数,其他不变。 - This 关键字用于指代本类对象
Super 用于指代父类对象
A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
B:在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
若局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。 - 封装:将实体特征的属性隐藏起来,对象与外界仅通过公共方法交流,这样可以提高程序的可靠性、安全性、改善程序的可维护性。
- 继承的实现:extends关键字
- 本质上多态分为:
(1)运行期多态(动态多态)
(2)编译期多态(静态多态)
方法的重载(overload)是编译时多态
运行期多态:继承或父类引用指向子类对象
多态:Father c = new Child()
编译看左,运行看右:c可以访问子类重写父类的方法,c不可以访问子类的特有方法,c可以访问父类中的成员变量。 - 四种访问控制符及权限:
- 使用abstract关键字定义抽象类
- 对象类型转换:
- 向下转型
向上转型:多态 - Static修饰的类变量和类方法可直接通过类名访问,(JVM加载时生成)且各对象的同一类变量和类方法享有同一内存空间。
Static修饰的类变量和类方法不可访问非静态的成员变量和成员方法 - 被Final修饰的是不可变的。
对于不可变的理解:
对于基本类型来说:不可变说的是数据不可改变
对于引用类型来说:不可变说的是地址值不可改变,内容是可以发生变化的。 - 如何定义和导入包
- 接口的定义和使用:
定义:public(或默认) interface 接口名 (extends 父类接口列表)
- 内部类、匿名类的定义
- 泛型
四、数组和字符串:
- 定义数组:
动态定义: int[] a = new int[数组长度];
静态定义: int[] a = new int[]{元素1,元素2,元素3…};
静态定义的省略: int[] a = {元素1,元素2,元素3…}; - 数组的length属性,是成员变量
- 多维数组的定义和初始化
二维:
动态定义: int[][] a = new int[数组行数][数组列数];
也可以只定义行数: int score[][] = new int[数组的行数][];
score[0] = new int[数组长度];
score[1] = new int[数组长度];
score[2] = new int[数组长度]; - 字符串的两种创建方法:
(1)使用字符串构造方法:
(2)使用赋值语句.
String s = “Hello World!!”; - String类的主要方法:
1)获得字符串的长度:public int length();
2)截取一个字符:public char charAt(int index);
3)获得子串:public String substring(int beginIndex);
public String substring(int beginIndex,intendIndex);
4)字符串相等比较:public boolean equals(String s);
5)字符串连接:public String concat(String s);
6)字符串内容比较:public int conpareTo(String s);
——>逐字符比较,全相同返回0,不同返回差值(有正负).
7)字符串检索:public int indexOf(char ch);
public int indexOf(char ch,int beginIndex);
public int indexOf(String s);
public int indexOf(String s,int beginIndex);
8)字符串与字符数组的相互转换:copyValueOf
9)去掉起始和结尾的空格:trim
10)字符串替换:replace
11)字符串大小写替换:toLowerCase/toUpperCase
12)将其他数据类型转换为字符串:ValueOf
13)字符串分割:split
五、异常处理:
- 异常:程序在运行过程中产生的不正常情况。
- Java处理异常的两种方式:
(1)throw关键字
使用throw关键字可以在指定的方法中抛出指定的异常。
使用格式:throw new xxxException(“异常产生的原因”);
(2)try-catch-finally - thorw和throws关键字。
Thorws:异常处理的一种方式,抛出异常,让别人处理。
六、Java IO流:
- 什么是流的读和写?
读:输入
写:输出
流式输入/输出(流式I/O)是一种顺序存取方式。 - 字节流和字符流的区别?
字节流:面向字节的流,以8位1字节单位进行读写,是抽象类InputStream和OutputStream的子类。通常用于处理图像和声音。
字符流:是面向字符的流,以16位字符为单位进行读写。是抽象类Reader和Writer的子类。通常用于字符数据的处理。
区别:传输大小不同。 - 节点流和处理流如何区分?
通过参数区分。
七、图形用户界面 GUI:
组件、容器、事件构成了图形用户界面的三大要素。
Java图形用户界面程序主要组成元素是组件。
- 容器:
容器是用来容纳其他组件和容器的特殊组件,是由容器类(Container类)创建的对象。在Java语言中,容器类是组件类(Componnent)的一个子类,具有组件的所有性质。
分类:
(1)顶层容器:JFrame(最常用),JApplet,Jwindow,JDialog.
(2)中间容器:JPanel,JScrollPane,JsplitPane,JDeskopPane,JToolBal.
(3)特殊容器:在GUI上其特殊作用的中间层,如JInterNalFrame.
除了顶层容器外,其他组件是不能独立显示的,必须放在(add()方法)一定容器中才能显示出来。(add()方法是向容器中添加组件的唯一途径).
JFrame类设置窗体常用的方法:
(1)setTitle(String title);
(2)setBounds(int x,int y,int width,int height);
//设置窗体显示的位置(x,y)及大小
(3)setVisable(Boolean b);
//默认使用JFrame类创建的窗体是不可见的,该方法可使窗体可见
(4)setDefaultCloseOperaton(int operation);
//设置关闭按钮的动作,参数为JFrame提供的四个静态常量
(5)添加操作:若添加AWT组件,则使用add()方法;但Swing组件不能直接添加到顶层容器中(低版本JDK)。
- 面板:为了更好的管理组件
P175 实现 - 布局
(1)不使用布局管理器:
(2)边界布局:由BorderLayout类实现
(3)顺序布局:由FlowLayout类实现
(4)网格布局:由GridLayout类实现
(5)卡片布局:由CardLayout类实现 - 事件处理
事件处理过程主要涉及: 1.事件源 2.时间 3.事件处理者
事件源是事件发生的场所,通常是各个组件,如被单机的按钮;
事件是用户对界面的操作,如操作键盘时出发的键盘事件;
事件处理者则是对收到的事件进行处理的程序,也称为监听器。
八、Java多线程:
- 进程与线程:一个进程可以包含多个线程。
- 实现线程的两种方法:
(1)继承Thread类,重写run()方法,创建Thread子类对象,调用start()方法。
(2)实现Runnable接口,重写run()方法,创建Thread类对象,参数为实现接口: Thread th = new Thread(实现类对象);调用start()方法。 - 线程的状态:
(1)新建
(2)就绪
(3)运行
(4)阻塞
(5)死亡
生命周期: - 线程类的主要方法:
Sleep方法:休眠
yield方法:暂停 (静态方法)
join方法:合并
destory方法:销毁
interrupt方法:中断。一个线程运行使,另一个线程可以调用对应的Thread对象 的interrupt方法中断它。
wait方法:使线程进入等待状态,直至被另一个线程唤醒。
注:sleep()调用会给较低优先级的线程一个运行机会,而yield()方法指挥给相同优 先级线程一个执行机会。
- 线程的同步:(为了避免同一个数据对象被多个线程同时访问)