java编程思想 -- 1
1.程序运行时数据的存储位置
1>寄存器 这是最快的存储区,位于处理器内部。但是数量及其有限,只能根据需求分配,你不能直接控制,也不能感觉到寄存器存在的任何迹象。
2>堆栈 位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那获得直接支持。堆栈指针若向下移动,则分配新的内存,若向上移动,则释放那些内存。这种快速有效的存储分配方法,仅次于寄存器。Java系统必须知道存储在堆栈中所有项的生命周期,以便移动堆栈指针。由于这种约束性,虽然有部分java数据存储在堆栈中,如对象引用,但java对象却不存储在堆栈中。
3>堆 也位于RAM中,用于存放所有的java对象。
4>常量存储 常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。
5>非RAM存储 如果数据完全存活于程序之外,那么它可以不受程序控制,在程序没有运行时也可以存在。其中两个基本的例子是:流对象(对象转化为字节流,通常被发送给另一个机器)和持久化对象(存储在磁盘上)。这种存储方法的技巧在于:把对象转化为可以存放在其他媒介上的事物,在需要时可恢复成常规的、基于RAM的对象。
2.基本类型
不用new来创建变量,而是创建一个并非是引用的“自动”变量。这个变量直接存储“值”,并置于堆栈中,实现起来更加高效。
| 基本类型 | 大小(字节) | 默认值 | 封装类 |
| byte | 1 | (byte)0 | Byte |
| short | 2 | (short)0 | Short |
| int | 4 | 0 | Integer |
| long | 8 | 0L | Long |
| float | 4 | 0.0f | Float |
| double | 8 | 0.0d | Double |
| boolean | - | false | Boolean |
| char | 2 | \u0000(null) | Character |
| void | - | - | Void |
java中每一种基本类型所占存储空间的大小都是固定的,这也是java编写的程序更具移植性的原因之一。
javaSE 5 的自动包装功能能自动的将基本类型转换为包装器类型:
如: Character ch = "c";
也可以反向转换:
char c = ch ;
| Java中8种基本数据类型总结 | |||||
| 序号 | 数据类型 | 大小/位 | 封装类 | 默认值 | 可表示数据范围 |
| 1 | byte(位) | 8 | Byte | 0 | -128~127 |
| 2 | short(短整数) | 16 | Short | 0 | -32768~32767 |
| 3 | int(整数) | 32 | Integer | 0 | -2147483648~2147483647 |
| 4 | long(长整数) | 64 | Long | 0 | -9223372036854775808~9223372036854775807 |
| 5 | float(单精度) | 32 | Float | 0.0 | 1.4E-45~3.4028235E38 |
| 6 | double(双精度) | 64 | Double | 0.0 | 4.9E-324~1.7976931348623157E308 |
| 7 | char(字符) | 16 | Character | 空 | 0~65535 |
| 8 | boolean | 8 | Boolean | flase | true或false |
java数组:
当创建了一个数组对象时,实际上是创建了一个引用数组,并且每个引用都会自动初始化为一个特定值"null",如果试图使用一个还是null的引用,程序会报错。
还可以创建一个存放基本类型的数组,同样,编译器也会确保数组的初始化,因为它会把这种数组所占内存全部置为0。
垃圾回收器:
监视用new创建的所有对象,并辨别那些不会再被引用的对象(如何辨别?)
按理说不会再出现内存泄漏现象,为什么在某些java程序中仍然存在此问题??
java编程规范:
驼峰式 类名首字母大写 其他(变量名,方法名)首字母小写
摆放开 闭花括号
浙公网安备 33010602011771号