1.引用类型转换(掌握)
基本数据数据类型转换:自动转换(byte/short/char---->int---->long—>float---->double)
强制转换 (类型字节小的)字节大 int x=256; byte b=(byte)x
引用类型转换:向上造型(上塑造性):自动转换 子类转父类
特点:损失子类新扩展的属性和方法
向下造型(下塑造性):强制转换 父类转子类
特点:必须先经过向上造型才可向下造型,否则运行时异常ClassCastException:类转换异常
instanceof关键字:判断某个对象是某个类的实例 ,表达式结果为true 、false
对象 instanceof 类名
Person p=new Student();
boolean b=p instanceof Student //true
Person p1=new Person();
boolean b1=p1 instanceof Student //false
2.多态(掌握)
多态:同一消息响应不同的结果。消息可理解成方法,对象
多态体现:重载,重写
侧重:父类引用指向子类对象(向上造型)
三要素:
继承关系,方法的重写,父类引用指向子类对象
简言之:同一个方法,不同对象执行结果不同;
同一个方法,传入的实参不同结果不同
意义:使java可扩展,”适应未来“
3.内部类(了解)
定义在class中类成为内部类。
(1)普通内部类
class A{
class B{
}
}
//A为外部类,B为内部类
创建A对象
A a=new A()
创建B对象
A.B b=a.new B()
(2)静态内部类
class A{
static class B{
}
}
//创建内部类B对象
A.B b=new A.B()
(3)局部内部类:在方法体或者代码块中定义的类
class A{
void method(){
class B{ //局部内部类
}
new B();
}
{
class C{//局部内部类
}
}
}
只有调用方法才能加载内部类
A a=new A();
a.method();
(4)匿名内部类
一般用于接口和抽象类的使用
abstract class A{
abstract void f();
}
Interface B{
void f2();
}
Test{
public static void main(String args[]){
A a= new A(){ //匿名内部类
void f(){}
};
B b=new B(){//匿名内部类
void f2(){}
};
}
}
lamda表达式、 lamda语法:简化匿名内部类的
(参数名)->{方法体}
前提:接口或抽象类中的抽象方法唯一
Test{
public static void main(String args[]){
A a=()->{System.out.print("hello")};
a.f();
B b=()->{System.out.print("hello")};
b.f2()
}
}
4.异常简介Exception
定义:运行期间发生的错误,而不是编译期间的语法错误。
常见异常:
数组下标越界异常 ArrayIndexOutOfBoundsException:访问不存在的下标对应的元素
类转换异常classCastException(直接下塑造性)
算术异常ArithmeticException 除0
输入异常InputMismatchException
空指针异常 NullPointerException 引用指向null,使用引用调用方法或属性时
(1)多个catch捕获异常按照顺序执行,catch捕获语句块只能匹配一次
(2)前面的catch中异常类型不能是后面异常的父类
(3)try{代码块}不能独立书写
结构
try{}
catch(异常类型1 参数名){}
catch(异常类型2 参数名){}
。。。
catch(异常类型n 参数名){}
try{}
finally{
一定能够执行
}
try{}
catch(异常类型1 参数名){}
catch(异常类型2 参数名){}
。。。
catch(异常类型n 参数名){}
finally{}
finally用于异常处理中,进行释放资源,特点是不论异常是否发生都能够运行。
(4)异常类的常用两个方法
String getMessage()获取异常信息
void printStackTrace()打印堆栈信息
7.throws与throw
抛出异常:回避异常
throws用于方法上回避异常,由调用该方法的函数进行处理异常
static void tt() throws NullPointerException,ArrayIndexOutOfBoundsException,IOException{
System.out.println("方法体有很多代码,很复杂");
}
throw抛出异常 直接创建一个异常
throw new Exception();
8.自定义异常类
class 自定义类名 extends Exception{含参构造器}
public class MyException extends Exception {
public MyException(String msg){
super(msg);
}
}
static void speek() throws MyException{
//需求:谁说脏话停止运行 ***
while(true){
System.out.println("请发表意见:");
Scanner sc=new Scanner(System.in);
String words=sc.next();
if(words.equals("***")){
throw new MyException("不可说脏话");
}
}
}
public static void main(String[] args){
try{
speek();
}catch(MyException my){
System.err.println(my.getMessage());
}
System.out.println("-----------");
}