1.用引用操作对象。
例如: String s;
这里所创建的只是一个引用,并不是对象。对象只能通过new才能创建。如果此时向s发送一个消息,就会返回一个运行时的错误。这是因为此时s实际上没有与任何事物关联。因此,安全的做法是创建一个引用的同事便进行初始化。
String s="abc";
2 对象是有new创建的
2. 1java存储
寄存器 这是最快的存储区。它位于不同于其他存储区的地方-处理器的内部。但是存储器的数量有限,所以寄存器根据需求分配。不能直接控制,也不能在程序中感觉到寄存器的任何迹象。
堆栈 位于RAM中,但通过堆栈指针可以从处理器那里获得直接支持,堆栈指针若向下移动,则分配新的内存,若向上,则释放那些内存。
堆 一种通用的内存池(也位于RAM区),用于存放所有的java对象,堆不同于堆栈的好处是,编译器不需要知道存储的数据在堆里存货多长时间。因此,在堆里分配有很大的灵活性。 用堆进行存储分配比用堆栈进行存储分配需要更多的时间。
常量存储 常量值通常直接存储在程序代码内部,这样做是安全的。因为他们永远不会被改变。
非RAM存储 如果数据完全存活于程序之外,那么他可以不受程序的任何控制,在程序中没有运行时也可以存在。其中两个基本的例子是流对象和持久化对象。 在流对象中,对象转化成字节流,通常被发送给另一台机器,在持久化对象中,对象被存放于磁盘上,因此,即使程序终止,他们仍可以保持自己的状态,这种存储方式的技巧在于:吧对象转化成可以存放在其他媒介上的事物,在需要时,可以恢复成常规的,基于RAM的对象。java提供了对轻量级的持久化支持,JDBC和Hibernate这样的机制提供了更加负责的对数据库中存储和读取的对象信息的支持。
2.2基本类型
8种基本类型
基本类型 大小 包装容器类型 初始化值
boolean ---- Boolean false
char 16-bit Character (\u0000)null
byte 8-bit Byte (byte)0
short 16-bit Short (short)0
int 32-bit Integer 0
long 64-bit Long 0L
float 32-bit Float 0.0f
double 64-bit Double 0.0d
初始化不适用于局部变量,只适合成员变量。
高精度数字
BigInteger 支持任意精度的整数,也就是说,在运算中,可以准确的表示任何大小的整数二不会丢失任何信息。
BigDecimal支持任何精度的定点数,例如,可以用它进行精确的货币计算。
2.3java中的数组
java确保数组会被初始化,而且不能在它的范围之外被访问,这种范围检查,是以每个数组上少量的内存开销以及运行时的下标检查为代价的。由此换来的是安全性和效率的提高。
2.4永远不需要销毁对象
由new创建的对象,只要需要,就会一直保留下去。java有一个垃圾回收器,用来监视new所创建的所有对象,并辨别哪些不会再被引用的对象,随后,释放这些对象的内存空间,以便供其他新的对象使用。
2.5方法、参数和返回值
方法的基本组成部分包括:名称,参数,返回值和方法体。返回类型描述的是在调用方法之后从方法返回的值。参数列表给出了要传给方法的信息的类型和名称,方法名和参数列表唯一的标识出某个方法。若放回类型是void,return关键字的作用只是用来推出方法,因此,没有必要到方法的最后才离开,可以在任何地方返回。如果返回类型不是void,那么无论在何处返回,编译器都要强制返回一个正确的类型返回值。
2.6static关键字
执行new用来创建对象时,数据存储空间才被分配,其方法才供外界调用。
有两种情形。1是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。第二种,希望某个方法不与包含它的类的任何对象实例关联在一起,所以,即使从未创建某个类的任何对象,可以调用其static方法或访问其static域。。通常,你必须创建一个对象,并用它来访问数据或是方法。因为非static域和方法必须知道他们一起运作的特定对象。 static方法的一个重要用法就是在不创建对象的情况下就可以调用它。
2.7注释和嵌入式文档
@see :引用其他类 @link package.class#member label :该标签域@see标签很相似,只是他用于行内,并且是用label作为超链接文本而不用 see also
@docRoot 该标签长生文档根目录的相对路径,用于文档树页面的显示超链接 @inheritDoc 该标签从当前这个类的最直接的基类中集成相关文档到当前的文档注释中。
@since 该标签允许你指定程序代码中最早使用的版本,可以在HTML Java文档中看到它被用来指定所用JDK版本的情况。
@param 该标签用于文档方法文档中 @deprecated 该标签用于支出一些旧特性已由改进的新特性所取代,建议用户不要在使用这些旧特性,因为在不久的将来可能被删除。如果使用一个标记为@deprecated的方法。则会引起编译器的发布警告。
2.8编码风格
类型的首字母要大写,如果类名由几个单词构成,那么把他们并在一起,其中每个单词的首字母大写。方法,字段(成员变量),以及对象的引用名称与类的风格一样,只是标识符的第一个字母采用小写。