Java 是基于C++的:但是相比C++,Java是一种更“纯粹”的面向对象程序设计语言。我们将看到Java程序的基本组成部分,并要用心体会到在java中(几乎)一切都是对象。
1. Java创建引用并且用来操纵对象
每种编程语言都有自己的操纵内存中元素的方式。在Java里,这一切都得到了简化。一切都被视为对象,因此可采用单一固定的语法。尽管一切都看作对象,但操纵的标识符实际上是对象的一个“引用’。就是用引用来操作对象的。可以将这一情形想像成用遥控器(引用)来操纵空调(对象)。只要有这个遥控器,就能和空调保持连接。让空调做我们想做的事情。创建引用可以单独创建,就好像遥控器可以单独存在一样:
String s;
但这里所创建的只是引用,并不是对象。还要给引用初始化,一个就是于对象关联,一个就是用Java的一个特性,字符串可以用带引号的文本初始化。
String s="abcd";
2. 创建Java的对象
一旦创建了一个引用,就希望它能与一个新的对象相关联。我们用new关键字来实现,new的意思是“给我一个新对象。”所以前面的例子可以写成:
String s= new String("abcd");
这样就创建了一个String对象,Java还提供了大量的现成类型让你创建。重要的是,你可以自行创建类型。然后由你创建的类型,创建你想要的对象。
3. Java的数据存储到什么地方
Java程序运行时,内存的分配和数据的存储是比较重要的。有五个不同的地方可以存储数据:
(1) 寄存器 :这是最快的存储区,因为它位于不同于其他存储区的地方—处理器内部。但是寄存器的数量极其有限,所以寄存器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象(另一方面,C和C十+允许您向编译器建议寄存器的分配方式)。
(2)堆栈。位于通用RAM(随机访问存储器)中,但通过堆找指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存,这是一种快速有效的分配存储方法,仅次于寄存器。存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中( 字符串常量 对象存放在常量池中。)
(3)堆。一种通用的 内存池 (也位于RAM区),用于存放所有的Java对象。
(4)常量存储。常量值通常直接存放在程序代码内部,这样做是安全的,因为它们永远不会被改变。有时,在嵌入式系统中,常量本身会和其他部分隔离开,所以在这种情况下,可以选择将其存放在ROM( 只读存储器 )中。主要是用来存放字符串常量和基本类型常量(public static final);
(5)非RAM存储。如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本的例子是流对象和持久化对象。转化成数据,保存在硬盘等存储空间。
4. Java的基本数据类型
Java的基本数据类型是一个需要特殊对待的类型。因为它们比价小,new一个Java的对象放在堆里并不是很有效,所以创建一个并不是引用的“自动”变量,直接存储值,并放在堆栈中。基本的数据类型有:
5. Java变量的 作用域
作用域的作用是决定了在其内定义的变量名的可见性和生命周期。在Java中,作用域由花括号{}的位置决定。例如:
{int x= 1;//在这里的代码能只能取到x的值,取不到y的值
{int y= 2;//在这里的代码能能取到x和y的值}
//在这里的代码能只能取到x的值,取不到y的值
}
6. Java对象的作用域
不同于变量,用new创建的Java对象,可以存活于作用域之外。
{
String s= new String( "abcd");}
//作用域到此结束了
上面这段代码,引用s在作用域终点就消失了,而new的对象仍然存在。但是我们没有办法访问这个对象,因为对象的唯一引用s已经超出作用域了。
那么如果让Java的对象继续存在,会不会把内存填满呢? 这就是Java有别于C++的地方,因为Java有个垃圾回收器,能自动识别不需要的对象并且进行回收,释放内存。
—Author: Arvin Chen —Web Address: www. Break yizhan.com (Break易站)