目录
一、数据类型
1、整形
- 字节 byte
- 短整型 short
- 整形 int
- 长整型 long
2、浮点型
- 单浮点型 float 32位 (定义后要写f,float a = 3.14f)
- 双浮点型 double 64位
3、布尔类型
- Boolean (没有0和1,只有true和false)
4、字符
- char (双字节,一个字符可以表示一个汉字)
- 字符串 string
5、变量
- 声明变量没有默认值,先赋值再使用
6、常量
- 赋值后不能被改变
- final 数据类型 常量名 ( = 值);
二、流程控制语句
1、if……else if
2、switch(表达式){ case 常量: 语句; break; default: 语句;break;}
3、输入输出
//输入
Scanner input = new Scanner(System.in);
int a = input.nextInt();//得到int型
string name = input.next();//得到字符
//输出
System.out.print(); //输出结束后不换行
System.out.println(); //输出结束后换行
4、判断字符串是否等值
- 不使用 == ,使用 " ".equals(answer) //不等于:!" ".equals(answer)
5、while(){ } do{ }while();
6、for( )
增强型for循环的基本语法如下:
for (elementDataType element : arrayOrCollection) {
// 循环体,使用element访问当前迭代的元素}
其中,
elementDataType 是数组或集合中元素的数据类型;
element 是用于访问当前迭代元素的变量;
arrayOrCollection 是要遍历的数组或集合。
三、数组
1、一维数组
- 声明:数据类型[ ] 数组名 / 数据类型 数组名[ ]
- 创建:数组名 = new 数组元素类型[元素个数]
- 静态初始化:int a[ ] = {1,2,3}; 或 int a[ ] = new int[ ] {1,2,3};
- 动态初始化:int a[ ] = new int[3]; a[0] = 1; a[1] = 2; a[3] = 3
- 功能 import java.util.Arrays
四、类和对象
1、类和对象
- 类:具有相同属性与行为的一类东西,(类名大写)
- 对象:类的一个实例
2、创建
对象:类名 对象名 = new 构造函数()
Employee e1 = new Employee();
3、构造函数
- 规则:
- 具有与类相同的名称
- 不含返回值,不能用return返回一个值
- 权限一般为public
- 一般使用构造函数完成对成员变量的初始化
- 初始化:this关键字
4、重载
- 规则:
- 函数名称必须相同
- 函数的参数必循不同(参数个数,参数类型)
- 函数返回值可以相同,可以不同
5、变量
- 变量的作用域
- 全局变量
- 局部变量
- 静态变量(static)
- 共享字段,所有对象共享静态属性(计数器)
- 定义:归属于类而不是对象,在实例方法中不能定义static变量,在static方法中可以定义static变量,此时类也应改为static类
- 静态常量
- static final String sex = “man”
6、封装
- 方法:变量private化,方法getter/setter化,getter/setter中添加条件控制语句
- (eclipse:Shift+Alt+S)
五、继承(extends)
- 定义:子类继承父类的基本功能
- 子类构造函数、方法通过super调用继承父类
- 构造函数不能被继承(也无法被重写),只能被super调用
- Object类
六、多态
- 为不同的数据类型提供统一的接口,防止主函数或使用函数中重复定义方法,冗余增加
- 抽象类(abstract)
- 抽象类不能被实例化
- 抽象类里必须有抽象方法,父类抽象方法中没有方法体
- 抽象类里的抽象方法必须在其派生类中被重写
- 抽象方法是其所有子类都具有的方法(功能)
- 多态:相同的父类引用,不同的子类实例,执行相同的行为,产生不同的结果
-
Master ms = new Master(); Pet p1 = new Cat(); Pet p2 = new Dog(); ms.cure(p1); //cat的治疗方法 ms.cure(p2): //dog的治疗方法
七、接口(interface)
- Java不支持多继承,防盗门同时拥有门与锁的功能,让防盗门继承门,同时实现锁的接口(功能)
- 表示能力,也表示约定
- 规则:
- 接口不能被实例化,可通过使用了接口的子类实例化对象
- 接口类中定义的方法没有方法体
- 接口类的“子类”必须重写接口方法
- 接口类中的变量必须是静态变量
- 面向接口编程(一个类可以实现多个接口(功能))
- 父类(抽象类):门;
- 接口类:锁,拍照,远程开门,储存密码……
- 子类:防盗门(继承门类,接口锁类)
public class Smartphone extends Phone implements NetWork,Playgames,TakePicture //智能手机继承了手机类,使用了上网,玩游戏,照相接口
八、面向对象编程原则
- 多用组合,少用继承
- 针对接口编程
- 针对扩展开放,针对改变封闭
九、泛型集合
十、异常处理
- 使用异常处理替代if-else结构,使代码健壮,不臃肿
try{
//正常执行代码段,有异常时中断,向catch抛出异常
//代码段
}catch(<异常类型> e){
//接收try中抛出的异常
//对异常进行处理的代码段
}finally{
//不关是否有异常都强制执行(System.exit(0)除外)
//强制执行的代码段
}
多级catch:先子类再父类
- 方法抛出系统异常(throws)
-
//方法体中出现的异常,通知调用者 public static void main(String[] args){ //…… try{ divide(); }catch(Exception e){ //异常处理 } //…… } public static void divide() throws Exception{ //方法中声明异常(多个异常用逗号隔开) }
-
- 手动抛出异常(throw)
-
public class person{ private String sex; public void setSex(String sex) throws Exception{ if("男".equals(sex) || "女".equals(sex)) this.sex = sex; else throw new Exception("性别必须为‘男’或‘女’"); } }
- 自定义异常:添加一个新的继承了Exception的自定义异常类
-
十一、文件操作
十二、多线程
线程启动:Thread.start()
线程等待:Thread.sleep(1000) //1000ms
线程加入:Thread.join() //阻塞正在运行的线程,加入此线程
线程礼让:Thread.yield() //正在执行的线程进入就绪状态,礼让其他线程
线程共享资源:
public synchronized boolean <方法名> //线程同步方法
synchronized (this) { } //同步代码块,同一时刻只能有一个线程进入同步块