原类型
for(int i=0;i<4;i++)
{
System.out.println(numbers[i]);
}
增强for循环
for(声明语句:表达式)
{
代码句子
}
int [] numbers=[10,20,30,40];
for(int x:numbers)
{
System.out.println(x);
}
方法的定义
修饰符 返回值类型 方法名(参数类型 参数名)
{
方法体
return 返回值
}
数组的定义
dataType [] arrayRefVar=new dataType[arraySize];
alt+insert启动构造
鼠标移至一个类中,ctrl+h生成一个继承树
默认初始化
数字: 0 0.0
char:u0000
boolean:false
引用:null
程序设计要求:高内聚,低耦合
高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。
面向对象编程的本质:以类的方式组织代码代码,通过对象封装数据
继承
修饰词 class 子类名 extends 父类
super用于调用父类方法
子类默认调用父类的无参构造
调用父类的构造器,必须要在之类构造器的第一列
super注意点
1.super调用父类的构造方法,必须在构造方法的第一个
2.super必须只能出现子类的方法或者构造方法中!
3.super和this不能同时调用构造方法!
VS this:
代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
前提
this:没有继承也可以使用
supper:只能在继承条件下使用
构造方法
this():本类的构造
super():父类的构造
多态:父类的引用可以指向子类的实现
父类型,可以指向子类,但不能调用独有子类独有的方法。(可以采用强制转换,高转低)子类重写父类的方法,执行子类的方法。
重写
重写:需要有继承关系,之类重写父类的方法!
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大但不能缩小:public>protected>default>private
4.抛出的异常:范围,可以被缩小,但不能扩大。
重写,子类的方法和父类的方法一致,方法体不同。
为什么要重写:
1.父类的功能,子类不一定需要,或者不一定满足。Alt+Insert :override;
多态
多态注意事项:
1.多态是方法的多态,属性没有多态
2.父类和子类,有联系,类型转换异常!ClassCastException!
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象!Father f1=new Son();
部分条件无法被重写:
1.static 方法,属于类,不属于实例
2.final 常量;
3.private方法;
注意:
1.父类引用指向子类的对象
2.把子类转换为父类,向上转型
3.把父类转换为子类,向下转型,强制转换(可能会丢失方法)
static
静态代码块只执行一次
匿名代码块每当创建一个对象都会执行
执行顺序:静态代码块,匿名代码块,默认构造方法
静态导入包:import static java.lang.Math.random
被final修饰的类无法进行继承
abstract
1.不能new这个抽象类,只能靠子类去实现它:约束
2.抽象类中可以写普通的方法
3.抽象方法必须在抽象类中
接口interface
1.接口里面的方法都是抽象类public abstract
2.接口里的常量为静态常量,public static final
3.接口不能被实例化,接口中没有构造方法
4.implements可以实现多个接口
5.必须要重写接口中的 方法
异常处理机制
快捷键:选中语句然后ctrl+alt+t可以将语句包裹,并赋予指定的结构
异常处理的五个关键字:try,catch,finally,throw,throws
try
{
}catch{
}finally{
}//finally可以不存在,但catch必须存在
throw和throws是两个截然不同的关键词
throw:(方法体内,throw new + 异常())
表示方法内抛出某种异常对象
如果异常对象是非 RuntimeException 则需要在方法申明时加上该异常的抛出 即需要加上 throws 语句 或者 在方法体内 try catch 处理该异常,否则编译报错
执行到 throw 语句则后面的语句块不再执行
throws:(方法定义名()后面+throws+异常)
方法的定义上使用 throws 表示这个方法可能抛出某种异常
需要由方法的调用者进行异常处理
进制
0b 二进制
0x 十六进制
0 八进制