一、面向对象
关键字
this:1、指代当前对象
2、指代当前类
3、指代构造方法 只能放在首行
super:1、指代父类对象
2、指代构造方法 只能放在首行
final:1、被final修饰类 不能被继承
2、被fianl修饰的变量 成为一个常量
3、被fianl修饰的方法 不能被重写
static:1、static先出生 非static后出生
2、可以直接通过类名点出
instanceof: 判断对象是哪个类的实例
二、抽象类
定义抽象类时使用 abstract 关键字
语法格式
abstract 类名{ }
public abstract class Animal {
}
抽象方法
抽象方法没有具体的实现
语法格式
访问修饰符 abstract 返回值类型 方法名
public abstract class Animal {
protected abstract void eat();
}
抽象类和抽象方法的关系
1、 抽象类中可以没有抽象方法
2、有抽象方法的类必然是抽象类
3、用static或final修饰的方法不能声明为抽象方法
一个抽象类中没有抽象方法,是为了限制其不能被实例化而只能被继承
抽象类的成员
成员变量
可以是变量,也可以是常量
成员方法
可以是抽象方法,也可以是普通方法
抽象类的构造方法
抽象类有构造方法但不能被实例化
由子类继承该抽象类,实例化子类
抽象类的子类要么实现父类的抽象方法,要么该子类继续抽象
三、接口
接口定义
使用 interface 关键字定义接口
语法
public interface Flyable {
}
interface 接口名{ }
接口使用
使用 implements 关键字实现接口
语法
public class Parrot implements Flyable{
}
class 类名 implements 接口名{ }
1、接口不能实例化,使用接口时需要子类实现接口
2、 接口的实现
一个实现接口的类,必须实现接口内所有的方法,否则该类就必须声明为抽象类
成员变量
接口中的成员变量只能是常量,默认的修
饰符 public static final
任何类都可以直接访问到接口中的常量
成员方法
接口中的方法只能是抽象方法,默认修饰
符 public abstract
成员特点
接口没有构造方法
接口主要目的是扩展功能,没有具体存在
接口的多实现
一个类可以实现多个接口
class 类名 implements 接口名1,接口名2,…{ }
关系
类和类 继承关系,只能单继承,可以多层继承
类和接口 实现关系,类实现接口,可以多实现
接口和接口 继承,可以单继承,也可以多继承
区别
抽象类
成员变量 -----变量/常量
成员方法------ 抽象/非抽象方法
构造方法------ 有
关系------------ 继承
接口
成员变量 ------ 常量
成员方法 -------抽象方法
构造方法 -------没有
关系 ----------- 实现
四、String类介绍
String是引用数据类型
但是String实际上java给我们提供的是一个类
注意:String 全类被fianl所修饰 所以 String 又叫 字符串常量
String 的值 一旦定义 不可以改变
String 的创建方式
1、直接赋值
String str = "coco";
2、通过new关键字
String str1 = new String("fdsfs");
String的比较方式:
1、equals() : 比较两个String的值 是否一样
2、 == : 比较两个String 的地址
String的常用方法:
equals(): 判断两个String的值 是否相等
equalsIgnoreCase(): 判断两个String的值 是否相等 并且忽略大小写
startsWith():以什么开始
endsWith():以什么结束
isEmpty():判断字符串的长度是否为0
length():计算字符串的长度
getBytes():
str.substring():字符串的截取
split():以某种规则进行拆分
replace():替换
toCharArray():转成char型数组
charAt(): 根据下标取单一的字符
contains():是否包含
indexOf():返回下标
toLowerCase(): 转小写
toUpperCase(): 转大写
valueOf():将满足条件的参数 转换成 String类型
五、工具类
一:Object类
1、在Java中,Object类是所有其它类的父类,位于java.lang包 ?
2、所有类都直接或间接的继承Object类,所以省略了extends Object ?
3、Object中提供了多个方法,方便子类重写或直接调用
Object的toString方法:子类可以重写toString(),自定义对象的字符串输出格式
getClass方法:可以通过Class类中的getName方法,获取对象的真实类的全名称
hashCode方法:同一个对象的hashCode()值肯定相同
equals( )方法:
二、System类
1、System类提供了系统级的很多属性和控制方法,位于java.lang包
2、System类是final类不能被实例化,所有方法和属性都是静态的
当前时间:
SimpleDateFormat sd = new SimpleDateFormat( "yyyy-MM-dd");
Date date = new Date( );
String time = sd.format( date);
system.out.println(time);
三、Random类
1、Random类用于生成伪随机数,位于java.util包 ?
2、Random对象的生成
四、Math类
1、Math类提供了执行基本数学运算的方法,位于java.lang包
2、Math类是final类不能被实例化,所有方法和属性都是静态的
五、Arrays类
Arrays类提供了一系列操作数组的方法,位于java.util包中
六、包装类
Java语言是面向对象语言,但Java中的基本数据类型却不是面向对象的, 这在实际使用时存在很多的不便
为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类
八个基本数据类型对应的类统称为包装类(Wrapper Class)
六、异常
(Throwable类)
1、 Error 错误--无法挽救
2、Exception 异常 --程序中的小bug,可以修复
a)受检异常--在程序中定义代码的时候直接有红线提示。
b)运行时异常--语法格式正确,运行时发生异常;
捕获 (现场发现 现场处理)
try{
//可能发生异常的代码
}catch(异常的类型 异常对象){
//打印异常信息
//其他处理
}
注意:同一句代码 可能出现多个异常 添加多个对应的catch块
try……catch执行顺序
注意:在定义多个catch块的时候 需要注意他们的顺序 (父类异常 只能定义在子类异常的下面)
多个catch块不能定义相同的异常
1、如果try中的代码 没有出现异常 那么会直接跳过catch块
2、如果try中的代码发生了异常 那么会根据出现的异常依次向下匹配对应的异常 打印输出
try……catch……finally
抛出异常
(一般来说不会直接在main方法抛出异常
抛出了异常 一定要处理掉 )
公式:方法头(方法的定义)throws 异常类型
public static void getReuslt() throw ArithmeticException
使用抛出的方式 并不是在处理异常 只是提示调用者 这个地方会出现异常
捕获和抛出:
1、捕获是在处理异常
抛出是提示异常
2、捕获:try catch
抛出:throws
3、捕获是针对的可能出异常的代码 直接处理
抛出:是定义在方法头上
throw和throws的区别:
throw:定义在方法体中
throws:定义在方法头