Java语法小记

来源:互联网 发布:ctp高频交易系统源码 编辑:程序博客网 时间:2024/05/21 20:28

//2015年6月28日

//未完成

1.HashMap

提高冲突时性能

好的初始值

扩容


list底层用数组实现,asList会改变次序,但传给新的arraylist则不会


2.继承、组合、接口

继承:父类改了,子类都要改;耦合度太高


3.静态工厂:
类的创建模式,静态方法模式


4.广义接口的真正意义是在类的继承中体现多态的功能;重载不是多态


5.final:终态

final类:不能被继承

final方法:不能被覆盖

final容器:本身不能改变,但可以改变其中的对象


6.protected(应用:clone方法

包外子类看到的是继承来的protected方法和属性,而不是父类对象的

clone不能被object直接调用(object中并没有实现),但可以被子类调用。调用时会检查子类是否实现了cloneable接口

7.this作用

局部变量重名

访问对象而不是实例

在一个构造函数中调用另一个构造函数


8.synchronized与lock
后者可实现前者所有功能
前者会自动释放锁,后者需在finally中人工释放
注意synchronized锁定的是对象而不是一段代码或方法


9.serializable不保存成员方法和静态成员变量


10.进程与线程
不同进程地址空间独立,而同一进程内线程共享地址空间
进程是资源调度和分配的基本单位;线程是cpu调度的基本单位
切换线程代价低,且多线程间同步,通信容易实现
前者为静态概念,一个进程不会运行,运行的是主线程


11.static(运用:静态工厂,JDBC中的用户名密码)
当类被java载入时,会对static进行初始化,而其他变量需等到实例化。
static方法是静态绑定,其他方法默认为动态绑定
C中则是改变存储方式,作用域;默认为0
static final 全局常量


12.malloc  free javaGC
new=malloc+构造函数
C/C++ 申请内存需要系统调用,开销大
JVM先一次性分配较大内存,如何每次new的时候都在该空间上进行分配和回收就和GC原理有关了


13.java 栈、堆
对象引用放在栈,new出来的东西放在堆
栈空间小,速度快,但数据大小必须固定,生命周期固定;heap大


14.String不是基本数据类型;而是对象
String str=””;String str=new String (“”);的区别:

前者编译期决定,放在常量池;后者new在运行期,放在堆里

15.string
用equal而不是==

字面值引用与对象引用的不同;前者会先去找字面值为3的引用
string其实是一个final类,每个改变string的值,会创建一个新的对象;没创建string对象而是指向string类的引用
stringbuffer当string需要经常变动时;而且要在初始化时指定较大内存,避免复制数组开销


16.stringbuffer

stringbuffer a=“”;

b=a.append("ss");

a也改变了



0 0
原创粉丝点击