标签:
从今天开始记录《Thinking in Java》的学习。
java里面(几乎)一切都是对象,操纵对象的标识符是对象的一个引用(reference),可以拥有一个引用,但不一定需要有一个对象与它关联,比如:
String s;
以上只是一个引用,不是对象,但字符串可以用带引号的文本初始化:
String s = "asdf";
但是,更通用的对象初始化方法是使用new关键字(通常在创建一个引用的同时进行初始化):
String s = new String("asdf");
1)寄存器:速度最快,但java中不能直接控制
2)堆栈:或者说栈,速度仅次于寄存器,位于RAM,存放对象的引用,存放基本类型的变量,栈中的每一项都有确切的生命周期
3)堆:位于RAM,存放所有的对象(包括包装类的对象),new一下即可分配,比较方便,但是需要更多的时间
4)常量存储:常量值放在代码内部,或者ROM中(例如:字符串池。这里他讲的不详细,就先这么理解吧)
5)非RAM存储:存活在程序之外,比如流对象和持久化对象。
作用域即花括号的位置,以下的方式不允许:
{ int x = 10; { int x = 20; } }
由于java对象没有生命周期(栈中的引用和基本类型有生命周期),所以当new的对象,可以存活于作用域之外:
{ String s = new String("a string"); }
引用在作用域终点消失,但是s指向的String对象仍然存在,但是作用域之后无法再访问(除非传递或复制对象引用),垃圾回收器会判断出不再使用的对象,释放它占用的内存空间,也就是说只需要创建对象,一旦不再需要,它们机会自行消失。
字段可以如下构成:
1)初始化了的对象
2)基本类型(仅当是类的成员时会被初始化为默认值,局部变量未初始化将会编译错误,所以最好明确地对变量进行初始化)
普通字段不能在对象间共享(static这种针对类调用的可以)。
在向方法传递参数的时候,传递的实际上是引用(但不是引用传递!!!实际上还是值传递,对于对象,传递的是引用的拷贝!)。
return的含义:1.已经做完,离开此方法。2.如果此方法产生了一个值,要通过return返回(无返回值也可以有return语句)。
用反向域名来作为包名划分子目录,同一个文件内每个类都有唯一的标识符。
使用import导包(java中的包全是类库),*可以导入一个目录下的全部类,但是仅限一层。
1)只有一份
2)某个域或方法不予它的类的任何对象关联
注意:
1)非static域和方法必须知道他们一起运作的特定对象
2)static方法不能不通过对象访问非static域或方法
3)static域或方法可以通过对象调用,但常常是通过类名直接调用(使用类名引用static变量为编译器优化提供了更好的机会)
java.lang会自动导入到每一个java文件中,其中包含了System类,System类中的一个属性out是一个静态的PrintStream对象(out是System类的属性,同时也是PrintStream的对象,所以可以调用PrintStream中的println()方法)。
在运行java程序时,在终端输入的"java Demo x y z"分别对应String[] args中的args[0]、args[1]、args[2]...
javadoc会生成HTML格式的文档
类、域、方法三种类型的注释文档分别在需要注释的三种元素的前面:
/** A class comment */ public class Documentation1{ /** A field comment */ public int i; /** A method comment */ public void f() {} }
标签:
原文地址:http://www.cnblogs.com/mvplzl/p/4409647.html