版本控制概述
-
版本控制分类
优点:便于集中式的代码管理
便于进行权限控制
缺点:
需要联网才可以工作,而且项目庞大的情况下对带宽的要求比较高
中心服务器存在单节点故障风险
常见的集中式版本控制软件:CVS、SVN
- 分布式版本控制
优点:不需要联网也可以工作
不存在单节点故障风险
缺点:无法实现严格的权限控制
常见的分布式版本控制软件:Git
static(静态)
-
概念
关键字—修饰符 变量、方法、代码块以及类 -
修饰变量—静态变量(属性)
static修饰的成员变量也叫类变量,随着类的加载(方法区的静态常量池)而加载方法区的静态区,会赋予系统默认初始值,可以用类名点的形式调用也可以通过对象调用,所有的对象都是在共享着这静态变量。
注意:类只加载一次
在类加载的过程中信息自动存入方法区
构造方法中可以定义静态变量?[x 不可以]
构造方法是对象级别且被调用才执行,静态变量与类同级 -
修饰方法—静态方法
随着类的加载(方法区静态常量池)而加载到静态区,存储是存储在静态区,当方法被调用的时候被加载到栈中执行(所有的方法和语句都是在栈中执行),可以被类名调用也可以被对象调用
注意:
静态方法中可以定义静态变量?不可以,方法被调用执行
静态方法中可以使用this/super?this和super都是对象级别,静态方法是类级别
main方法可以直接调用非静态方法?不行,静态修饰的内容不能直接调用非静态内容,非静态内容可以调用直接静态内容
静态方法可以重载?可以
静态方法可以重写?不可以,java规定了父子类中只能出现都是static的二分法但是不是重写,要么都不是static就可以重写 -
修饰代码块----静态代码块
在方法外类内static{},随着类的加载而只加载一次,用于属性初始化以及程序启动默认需要加载的东西
执行顺序:静态–》对象 父类静态—子类静态—父类对象—子类对象
注意:静态修饰的内容随着类的加载而加载一次
static int i=1;
static{
i=4;
}
Java在加载的时候就确定了i是成员变量,就可以往下进行操作,在静态代码块中执行相应的操作(赋值,运算都可以)
static{
i=3;
}
static int i=4;
java开始进行加载发现了i,会根据上下文去确定这个i是什么变量,如果都没有定义就会对这个i进行标记,标记成了成员变量,但是只是一个标记,会把3标记成i的值,只能赋值不能有其他操作,往下找定义找到这个i的定义,会把这个标记的值给下面的i,后面进行正常赋值就把标记值覆盖了,标记也就没了。
final(最终)
-
概念
关键字—修饰符 数据、方法、类 -
修饰数据—最终值
修饰基本数据类型的变量的值不发生改变
修饰引用数据类型的变量的地址值不能发生改变,但元素的值可以改变
final修饰的成员变量要在创建对象之前进行赋值,静态常量要在类加载完成之前进行初始化 -
修饰方法—最终方法
最终方法可以重载?支持重载
最终方法可以重写?不支持重写 -
修饰类—最终类
不能被继承,可以继承别的类
类里的方法可以被重写?不可以
abstract(抽象)
关键字----修饰符
- 概念
如果所有的子类对父类某个方法都进行了不同的程度的重写,那么此时认为这个方法的方法体就没有了实际意义,把方法体去掉用abstract修饰就变成了抽象方法,如果一个类中有抽象方法那么此时这个类就要变成抽象类 - 注意:
如果一个普通类继承了抽象类就要重写所有的抽象方法,如果不想重写所有就要变成抽象类
抽象类一定有抽象方法?不一定
抽象类能否创建对象?不可以 抽象类的构造方法是在底层由其他语句进行创建的,使用不了
总结
- static—静态变量(类的信息都是存储在方法区)—静态方法(静态方法与类同级,重写与对象同级)----静态代码块(所有静态内容只加载一次)
- final----数据(基本数据类型的变量与引用)—方法(不可以重写)----类(不可以被继承)
- Abstract—抽象方法—抽象方法可以重载?可以----抽象方法可以被private/final/static修饰?不可以------抽象类可以被final修饰?不可以,重写的前提是继承