本笔记基于itcast刘意老师的视频授课内容。
--------------------------------------------------------------
2016年3月18日23:47:22
针对多个对象共用同一个内存空间,用static。改一个,其他的对象也自动改了。因为共享一个。
静态的特点:
1.随着类的加载而加载。
2.优先于对象而存在。
------------------------------
2016年3月19日15:19:22
代码块:
用{}括起来的代码,叫做代码块。
分类:
1.局部代码块
在方法中用{}括起来的代码。
作用:限定变量的生命周期,及时释放内存,提高运行效率。
2.成员代码块 -- 构造代码块
在类中,方法外,用{}括起来的代码。
作用:把所有构造方法中相同的内容给抽取出来,定义到构造代码块中,将来在调用每个构造方法的时候,回去自动调用该构造代码块。
构造代码块的执行,先于构造方法。
3.静态代码块
在类中,方法外。用{}括起来的代码。只不过,加了static修饰。
作用:在整个系统中只加载一次的代码。一般做整个系统的初始化。
静态代码块-->构造代码块-->构造方法。
------------------------------
2016年3月19日20:00:59
构造方法间的关系:
子类的构造方法都会首先去执行父类的构造方法。
默认执行的父类的无参构造方法。
------------------------------
2016年3月20日09:49:42
方法重载和方法重写的区别:
A:方法重载
方法名相同,参数列表不同。跟返回值类型无关
B:方法重写
方法声明一模一样。
方法重写的注意事项:
A:子类中的重写父类中的方法,访问权限不能更低。
B:父类中的私有方法,不能被重写
C:静态只能重写静态。(其实静态的内容算不上重写,因为静态的内容是跟类相关的,而我们研究的重写其实是跟对象有关的)
多态:
变量:编译看左边,运行看左边。
方法:编译看左边,运行看右边。
如果一个方法,没有发放体,那么该方法必须定义为抽象方法。abstract.
接口中的成员特点:
a:成员变量
只有常量。并且是静态常量。
接口中的成员变量有默认修饰符:
public static final
b:构造方法
接口没有构造方法!
c:成员方法
全部都是抽象的,不能带有主体。
接口中的成员方法有默认修饰符:
public abstract
接口和接口之间可以多继承。
接口和抽象类的设计理念的区别
抽象类被继承体现的是:is a的关系。抽象类中一般定义的是整个继承结构的共性功能。
接口被实现体现的是:like a的关系。接口中一般定义的是整个继承结构的扩展功能。
------------------------------------------------
2016年3月21日14:40:08
常量的值在构造方法完毕后,该值必须是明确的。
可以在哪些地方给final赋值:
A:在定义的那一刻给赋值
B:构造方法中
在构造方法完毕前给值。
本类中能访问:
private(Y)
默认(Y)
protected(Y)
public(Y)
同一个包下的类中能访问:
private(N)
默认(Y)
protected(Y)
public(Y)
不同包下的类中能访问:
private(N)
默认(N)
protected(Y)
public(Y)
不同包下的无关类中能访问:
private(N)
默认(N)
protected(N)
public(Y)
修饰符总结:
类 成员变量构造方法
成员方法
private Y
Y Y
默认 Y YY
Y
protected Y
Y Y
public Y
Y Y Y
final Y
Y Y
static Y
Y
abstract Y
Y
形式参数是引用类型的时候:
如果是一个具体类的类名,要的是该类的或者其子类对象。
如果是一个抽象类名,要的是该类的子类对象。
如果是一个接口名,要的是该接口的实现类的对象。
返回值是引用类型的时候:
如果是一个具体类的类名,返回的是该类的或者其子类对象。
如果是一个抽象类名,返回的是该类的子类对象。
如果是一个接口名,返回的是该接口的实现类的对象。
为什么内部类访问局部变量,必须被final修饰?
A:防止在使用后数据发生改变
B:加final是为了延长变量的生命周期
匿名内部类:
本质是继承了类或者实现了接口的子类匿名对象。
---------------------------------------------
2016年3月23日16:19:21
如果是字符串变量相加:
先开空间,再想家存储。
如果是字符串常量相加:
先加,在常量池里面找,如果有就返回常量池里的地址。否则,就创建新的存储空间。
----------------------------------------------
2016年3月25日18:54:10
获取当前时间的毫秒值:
A:Date getTime()
B:System currentTImeMillis()
设置当前时间的毫秒值:
A:Date Date(long time)
B:Date setTime(long time)
-------------------------------------------------
2016年3月26日09:30:28
java提供了另外一种容器,集合
集合:
1.长度可以发生改变
2.只能储存对象类型,引用类型。
3.可以储存任意类型的对象
数组:
1.长度固定
2.可以储存基本类型,也可储存对象类型
3.只能储存同一种类型的元素
boolean removeAll(Collection c):移除集合中指定的一个集合的元素。删除一个就叫删,返回true。
boolean containsAll:判断集合中是否包含指定的一个集合的元素。全部包含才叫包含,返回true。
------------------------------------------------
2016年3月28日22:47:46
List的特点:元素有序,可以重复。
Set的特点:元素无序,唯一。