java核心卷之细枝末节,你知道几条。。

来源:互联网 发布:淘宝优内部惠券领取 编辑:程序博客网 时间:2024/05/16 14:34

——每天的寥寥几笔,坚持下去,将会是一份沉甸甸的积累。


一、基本数据结构

0.式子2.0-1.1 = 0.899999,原因在于浮点数使用二进制表示的,小数部分用2^-1+2^-2……表示,结果不精确,有时精度要求高时要用bigDecimal

1.&&、||有短路处理,&、|没有短路处理;

2.对移位操作,右侧的参数需要进行模32处理(为long型时模64处理)。即1<<35=1<<3=8

3.String字符串是不可变长的,优点为编译器可以让字符串共享(其实放在的class文件的常量池中了)

4.String类重写了equals方法

    public boolean equals(Object anObject) {        if (this == anObject) {            return true;        }        if (anObject instanceof String) {……

5.代码点与代码单元----我也很糊涂,后面百度后补充

6.stringBulider与StringBuffer相比:优点是允许多线程的方式执行添加或删除字符的操作,缺点是效率更低些

7.不在java.lang包中的包都要导入

8.嵌套的两个块中不能使用同名变量

9.可以用javac -Xlint:fallthrough Test.java来检测switch语句中是否少了break

10.case标签可以是int,short,byte,char及其包装类,枚举类型;java se7也支持字符串

11.break标签只支持跳出语句块,不支持跳入语句块;continue语句调到最近的外面一层循环首部

12.数组长度可以为0,即new int[0]合法

13.数组间简单的等号复制,依旧是浅复制,两个引用指向相同地方。一个变动,另一个跟着变动。可以用CopyTo来实现深复制。


二、面向对象

1.方法参数的使用:

- 一个方法不能修改一个基本数据类型的参数

- 一个方法可以改变一个对象参数的状态

- 一个方法不能让对象参数引用一个新的对象**(还没弄懂)

2.类内默认域的初始化

数值型=0;布尔型=false;对象引用=null;char类型=\u0000

3.初始化块:先于构造器执行。静态初始化块在编译是就会被执行。

4.import语句不仅可以导入类,还可以导入静态方法和静态域的功能。

5.类内的数据或方法不加访问限定符时,默认为包访问性。

6.类的设计原则

- 一定要保证数据的私有化

- 一定要对数据初始化

- 不要在类中使用过多的基本类型

- 不是所有的域都需要域访问器和更改器

- 将职责过多的类进行分解

- 类名和方法名要能够体现他们的职责


三、第一次写漏掉的(个人觉得很重要)

1.finalize方法:将在垃圾回收器清除对象前调用。而它具体工作的时间具有不确定性,建议少使用。

2.类之间的关系:

依赖(uses-a)——一个类的方法操控着另一个类的对象。

聚合(has-a)——一个类的对象中包含另一个类的对象。

继承(is-a)——特殊与一般的关系。

3.要命的很:java函数的传值采用都是值传递,而不是基本数据类型值传递,对象引用传递。。。

4.容易忽视的位运算,在hashcode计算时可能会用到,>>运算符用符号位填充高位(负数填充1,正数填充0),>>>运算符用0填充高位。


同系列下一篇有关继承的点滴,看看你又知道多少,,嘿嘿http://blog.csdn.net/sum_rain/article/details/39512443

用java许久了,但真不能说懂,许多细节之处还不是很了解,乘着学期伊始,再重温一遍核心卷一、二,记录下那些边边角角,既作为笔记,也共大家参考。

接下来,博主每天都会更新,大家共同进步。

0 0