一 SE的知识体系:
- java基础:
- 一基础语法
- 8个基本数据类型——>8个包装类
- 数据类型转换:
- 自动转换(从小到大)
- 强制转换(从大到小)
- 注意:int 和char
- 分支与判断:
- if(){}
- if (){}else{}
- if(){}else if(){}...else{}//多次判断
- if(){if(){}}else{} //嵌套判断
- 判断条件 ?表达式1 :表达式2;//三目运算
- switch(变量:int byte enum char String){case : ; break;} 注意: break的使用!
- 循环:(重点,必须掌握)
- while
- do while
- for
- for(数据类型 变量: 数组或集合)(foreach) 例如:以下的代码不推荐(效率低) for(int i=0;i<list.size;i++){ list.get(i); } //以上的代码应改为(效率高) int size = list.size(); for(int i=0;i<size;i++){ list.get(i); }
- 数组:是引用类型
- 特点:内存连续、通过下标操作、数据类型相同
- int[] arr = new int[];
- int[] arr = {2,3,4,4};
- int[] arr = new int[]{1,2,3};
- 类与对象:
- 对象:是一个具体的拥有一个特征和行为的事物。
- 类:是抽象的,某些具有相同的特征和行为的实务的集合(抽象)。
- 类是模板,对象是通过类创建出来的。
- java的程序的最小单位是类。
- 类的构成:
- 属性
- 读写属性(常用的)
- 只读(保护)
- 只写(隐藏:安全)
- 静态属性(类属性)
- 方法
- 实例方法
- 类(静态)方法
- 构造方法
- 注意:1:无返回值 2:名称与类同名 3:不能显示调用
- jvm提供一个默认构造器,一旦声明带参构造,默认构造就不存在
- 抽象方法
- 特点:没有方法体(实现)
- 作用:让方法重写
- 本地方法(native:调用本地api)
- 代码块
- {}//构造块
- static{//静态块}
- 属性
- 一基础语法
当我们创建(实例化)对象时,先执行类加载器(把要创建的类的对应的class文件加载到内存中,jvm完成对class文件的检验工作),首先执行静态块,然后执行构造块,最后执行构造器。
A a = new A();
class A{
static{
//静态块:只执行一次且在类被加载后马上执行
//优先于构造块
//全局的且比较消耗资源的:例如数据库连接
}
{
//构造块,每次创建对象时,都会调用
//优先于构造方法执行的
}
public void show(){
A a = new A();
a.show();
disp();//OK
//A();//显示调用构造器,错误!
}
public static void disp(){
A.disp();
show();//不能: 静态只能访问静态
}
}
2、二 面向对象:
- 封装:隐藏代码实现
- 继承:代码重用
- 多态:多种实现
- 封装通过private且提供对应的get和set方法
- 类就是对数据和操作的封装
- 继承的实现:通过extends实现
- 继承是 is a的关系
- 继承的注意:
- 子类会继承父类(除构造)以外的所有成员(包括私有的)。
- 子类就可以对父类的方法进行Override(重写)
- 子类要比父类"大"(子类包含父类)
- 父类与子类存在的类型转换(向下转型)instanceof
- 子类在访问父类的protected的属性和方法时,不能通过父类的引用进行调用,可以使用this或super直接调用
- java的继承是单根继承(一个类最多只能有一个父类,一个父类可以有多个子类)
- 当使用父类的引用创建子类对象时(多态的调用),此时调用的发放是子类的
- 属性是不支持重写的!
- 继承的注意: