Java SE5的变化之一是:参数化类型,java称为泛型。
ArrayList<Shape> shapes = new ArrayList<Shape>();解决向下转型时出现的问题
寄存器 最快的存储区,位于处理器内部,但是数量极其有限,所以根据需求进行分配,不能人为地直接控制
堆栈 位于RAM中,通过堆栈指针可以从处理器获取支持。但在创建系统的时候,系统需要指导存储在堆栈的所有项的确切的生命周期,以便上下移动堆栈指针。这限制了程序的灵活性,所以只是某些java的数据如java的对象引用存储在堆栈中,但是java对象并不存储在其中。
堆 一种通用的内存池(也位于RAM区),用于存储所有的java对象。不同于堆栈的好处是:编译器不需要知道存储的数据再堆里存活的时间。在创建对象时,只需new即可,执行代码时会自动在堆里进行存储分配。但是,代价是用堆进行存储分配比堆栈需要跟多的时间。
常量存储 常量值通常直接存放在程序代码内部,这样比较安全,不会被改变。有时,在嵌入式系统中,常量本身会和其他部分隔离开,这种情况下,常量可存放在ROM中。
非RAM存储 如果数据完全存活在程序之外,那它可以不受程序的任何控制,在程序没有运行时也可以存在,如流对象和持久化对象。“持久化对象”,对象存在磁盘上,即使程序终止,仍可保持自己的状态。这种存储方式的技巧在于:把对象转化为可以存放在其他媒介上的事物,在需要时可以恢复成常规的,基于RAM的对象。
new将对象存储在“堆”里,但针对比较简单、小的变量,不是很有效,所以可以不用new来创建变量,一个并非是引用的“自动”变量,直接存储在堆栈中,更加高效。
基本类型 | 包装器类型 |
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
void | Void |
int和integer的区别
int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象
总而言之:如果我们定义一个int类型的数,只是用来进行一些加减乘除的运算or作为参数进行传递,那么就可以直接声明为int基本数据类型,但如果要像
对象一样来进行处理,那么就要用Integer来声明一个对象,因为java是面向对象的语言,因此当声明为对象时能够提供很多对象间转换的方式,与一些常用
的方法。
java会给类的成员(基本类型)赋初值,但“局部”变量并不适用,但java会在编译的时候返回错误提示。
基本类型 | 默认值 |
boolean | false |
char | null |
byte | (byte)o |
short | (short)o |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
java.lang是默认导入到每个java文件中的。
System.getProperties().list(System.out);
System.getPropertie("user.name");
可以获取从运行的系统中获取的所有的“属性”,提供环境信息。list方法将结果发送给它的参数:System.out
// 或/* */
注释及编码风格请遵循规范
==和!=是比较对象的引用,所以对象一般用equals来比较,基本类型直接用==和!=即可。
编译器通常会将指数作为双精度(double)处理,所以float f = 1e-43f中,没有f的话,会有出错提示。
右移位操作符(>>>),使用“零扩展”,无论正负,都在高位插入0。
第四章 控制执行流程
用continue 标签和goto 标签实现goto功能,规则为:
1.一般的continue会退回到最内层的循环的开头,并继续执行
2.带标签的continue会到达标签的位置,并重新进入紧接在那个标签后的循环
3.一般的break会中断并跳出当前的循环
4.带标签的break会中断并跳出标签所指的循环。