一旦创建了一个引用,就希望它能与一个新的对象相关联,通常用new操作符来实现这一目的。new关键字的意思是”给我一个新对象”。
对象存储地方
1. 寄存器:最快的存储区,位于处理器内部。寄存器数量极其有限。
2. 堆栈:位于通用RAM中,通过堆栈指针可以从处理器那里获得直接支持。虽然某些Java数据存储于堆栈中,特别是对象引用,但是java对象并不存储于其中。
3.堆:一种通用的内存池,用于存放所有java对象。
4. 常量存储:常量值通常直接存放在程序代码内部。
5. 非RAM存储:流对象和持久化对象。
特例:基本类型——–:因为new将对象存储在”堆“里,故用new创建一个对象特别是小的,简单的变量,往往不是很有效。对于这些类型,不用new来创建变量,而是创建一个并非是引用的”自动“变量,这个变量直接存储”值“,并置于堆栈中。
char c = 'x';
java提供了两个用于高精度计算的类:BigInterger和BigDecimal。1.BigInteger支持任何精度的整数。也就是说,在运算中,可以准确地表示任何大小的整数值,而不会丢失任何信息。2.BigDecimal支持任何精度的定点数。
Java中的数组:当创建一个数组对象时,实际上创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,该值拥有自己的关键字null。一旦java看到null,就知道这个引用还没有指向某个对象。在使用任何引用前,必须为其指定一个对象。
Java怎么替我们完成所有的清理工作。
1. 由new创建的对象,只要你需要,就会一直保留下去。
若类的某个成员是基本数据类型,即使没有进行初始化,java也会确保它获得一个默认值。但这些初始值对你的程序来说,可能是不正确的,甚至是不合法的。
参数列表采用的都是对象形式,这里传递的实际上也是引用。
想在自己的程序中使用预先定义好的类,可以使用关键字import来准确地告诉编译器你想要的类是什么。
执行new来创建对象时,数据存储控件才被分配,其方法才供外界调用。当声明一个事物是static时,就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起。所以即使从未创建某个类的任何对象,也可以调用static方法或访问其static域。为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象。
使用类名直接引用static变量的首选方式,这不仅是因为它强调了变量的static结构,而且在某些情况下它还为编译器进行优化提供了更好的机会。
因为一个static字段对每个类来说都只有一份存储空间,而非static字段则是对每个对象有一个存储空间。