1 用引用操纵对象,new创建对象。new关键字的意思是:给我一个新对象
2 存储位置
寄存器:最快的存储区,直接存储在处理器内部。不能直接控制(c c++允许向编译器建议寄存器的分配方式)
堆栈:位于RAM中,但可以通过堆栈指针可以从处理器哪里获得直接支持。指针下移动,分配内存,上移释放内存。知识一种快速有效的分配存储方法。java系统必须知道存储在堆栈内所有
确切的生命周期。所以虽然某些java数据存储在堆栈中-特别是对象引用,但是java对象并不存储在其中
堆:一种通用的内存池(也位于RAM区),用于存放所有的java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间。当执行new时,会自动在堆里进行分配。代价:用堆分配存储和清理可能比用堆栈进行分配需要更多的时间。
常量存储:通常直接存放在程序代码内部,因为他们永远不会改变。有时,在嵌入式系统中,常量本身会和其他部分分割离开。这时可以选择存放在ROM(只读存储器)中。
ROM例子:字符串池。所有字面常量字符串和具有字符串值的常量表达式都自动是内存限定的,并且会置于特殊的静态存储区中。
非RAM存储:如果数据完全存活程序之外,那麽它可以不受程序控制。例子:流对象和持久化对象。在流对象中,对象转化成字节流,通常被发送给另一个机器。持久化对象中,对象被存放于磁盘上。这种存储方式的技巧在于:把对象转换成可以存放在其他媒介上的事物,在需要时,可以恢复成常规的,基于RAM的对象。java提供了对轻量级持久化的支持,而诸如JDBC和Hibernate这样的机制提供了更加复杂的对数据库中存储和读取对象信息的支持
3 基本类型
截图 (1).png因为比较小,所以基本类型不是引用的自动变量。这个变量直接存储值,并置于堆栈中。
高精度数值:BigInteger BigDecimal。运算速度慢,但不会丢失信息
4 数组
C++数组是内存块,危险。java为了安全,确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销及运行时的下表检查为代价的。
当创建一个数组对象时,实际上是创建了一个引用数组,每个引用被初始化为null,看到null就知道引用没有指向对象。创建基本类型数组,则会把所占的内存全部置0。
5永远不需要销毁对象
java不允许较大作用域与较小作用域定义相同的变量。C++确是允许的,下例会报错
{
int x = 3;
{
int x = 5;
}
}
在作用域里定义的变量只可用于作用域结束之前。
String s = new String("123");
java定义对象,引用在作用域结束后消失,而生成的对象确不会消失。所以需垃圾回收器,用来监视用new创建的所有对象。
6 默认值
类成员即使没有初始化,java也会确保它获得一个默认值。然而确保初始化的方法不适用于局部变量 截图 (2).png7 方法,参数和返回值
方法名和参数列表(合起来被成为“方法签名”)唯一地标识出某个方法。
调用方法的行为通常被称作发送消息给对象。
参数列表传递的实际上也是引用
若返回类型是void return只用来退出方法。
8 static 关键字
只为某特定域分配单一存储空间,希望某个方法不与包含它的类的任何对象关联在一起
9 文档注释
@see:引用其他类
@link
@docRoot 文档根目录的相对路径
@inheritDoc
@version
@author
@since
@param
@return
@throws
@deprecated,已经被@Deprecated注解替代
网友评论