Think in java 学习手记(一)
来源:互联网 发布:老友记 英语 知乎 编辑:程序博客网 时间:2024/05/01 06:53
Chap 2 万物皆对象
1、数据存储
数据有六个存储位置:
1)寄存器registers。
2)栈Stack:位于常规内存区。Primitive变量、对象指针(refrence)就存在这里。
3)堆heap:所有对象数据。
4)静态存储:
5)固定存储:
6)非内存存储:如persistent Object 与 streamed Object。
2、primitive类型
简单数据类型,为加快速度一般存在stack区中。注意:
class a{
int i; //I默认为0,即类数据成员有默认值
a(){
int j; //出错,即方法数据成员没有默认值。
}
}
3、关于变量生存期/作用域
这段代码在C/C++中正确,但在java中不正确:
a(){
int x=1;
{
int x=1; //出错啦!
}
}
chap 3 控制流程
1、随机数
Random类,包含在java.util包中。其nextInt(int I)方法返回[0~I)之间的随机数,其余nextFloat等方法亦然。
Math.random():静态方法,生成[0,1]之间的随机数。结果是一个double。
2、关于==与!=
要理解对于非primitive类型的对象,默认的比较操作是比较reference。一般而言可以用equals方法来实现希望进行的操作,但对自定义对象,必须自定义equals方法,因其默认比较reference.
3、方法调用:不能在静态方法中调用非静态方法。想想道理吧。
4、逻辑表达式的短接
t1 && t2 && t3这个表达式,当t1 = true;t2 = false时,t3就不再执行。可以利用这一点写出较简洁的代码来。
5、关于switch
只能对int和char进行多路选择。
6、类型转换
所有float和double转成int后,直接截去小数。例如5.9转成5.
Chap 4 初始化与清理
1、在构造函数里使用构造函数
这种情况较少见。例如:
Class A{
Private int I;
Private String ss = new String(“null”);
A(){
This( 3, “bbb”);
}
A(int I, String str){
This.i = I;
Ss = str;
}
}
但是注意,不能连续引用两次构造函数,并且只能出现在第一行。例如this(i);this(ss);是不对的。
2、再说static
static严格上来说,由于不需要类实例化就可以调用,不是OOP的方法。类似于全局函数。如果程序中出现多次static,就得怀疑是否需要改进程序了。
static严格上来说,由于不需要类实例化就可以调用,不是OOP的方法。类似于全局函数。如果程序中出现多次static,就得怀疑是否需要改进程序了。
有时,程序中会用到static块。它主要为匿名内部类提供支持。
3、理解garbage Collection (gc,垃圾收集器)
1)在收集前,要先执行finalize()。
2)在绝大多数情况下,程序员不需要考虑垃圾清理问题。
3)垃圾清理的机理较复杂,幸好都是在后台自动进行的,但对系统运行速度会有一定影响。
4)垃圾回收通常是在内存不足时才发生,所以你不知道什么时候执行回收。
4、构造函数与成员变量的初始化顺序问题
public class StackTest {
/**
* @param args
*/
private Tag ii = new Tag( 1 );
StackTest(){
Tag jj = new Tag( 2 );
}
private Tag kk = new Tag( 3 );
public static void main(String[] args) {
new StackTest();
}
}
class Tag{
Tag( int i ){
System.out.println( "Tag(" + i + ")");
}
}
输出:Tag(1) Tag(3) Tag(2)
上面这段函数很清晰地标示出:当新建一个对象时,先初始化成员变量,再初始化构造函数。
这样做显然是很有道理的,因为构造函数可能会引用成员变量。
- Think in java 学习手记(一)
- Think in java 学习手记(二)
- Think in java 学习手记(三)
- 菜鸟学习think in java (一)
- think in java 学习笔记(一)方法重载
- Think in Java学习总结(一)之对象
- think in java学习篇(一)
- Think in Java学习 菜鸟一枚
- Think in Java 学习
- Think in JAVA 笔记(一)
- Think in Java笔记(一)
- 菜鸟学习 Think in java (二)
- 菜鸟学习think in java (三)
- think in java 读后感(一)
- Think In java 笔记一
- java学习手记(一)
- think in java 学习笔记
- think in java 学习总结
- 蓝色的缘分
- 用VB实现数据的加解密算法
- 数据库设计三大范式应用实例剖析
- Hibernate中的inverse
- System Virginity Verifier
- Think in java 学习手记(一)
- DBGridEh 改变行居中!
- 如何做网站需求
- Code Perversion
- 网页播放视频的代码
- vc 代码文档生成
- JBOSS
- PHP 加水印
- Paradox Of Our Times