欢迎来到天天文库
浏览记录
ID:48183793
大小:99.00 KB
页数:14页
时间:2020-01-18
《Java中的对象.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一切都是对象1.在Java里,任何东西都可看作对象。2.用引用操纵对象尽管将一切都“看作”对象,但操纵的标识符实际是指向一个对象的引用。在其他Java参考书里,还可看到有的人将其称作一个“句柄”(Handle),甚至一个“指针”。例如:Strings;这里创建的只是引用(句柄),并不是对象。s实际并未与任何对象连接。一切都是对象3.所有对象都必须创建创建引用(句柄)时,我们希望它同一个新对象连接。通常用new关键字达到这一目的。例如:Strings=newString("asdf");Studentstu=newStudent(“张三“,3);一切都是对象4.保
2、存到什么地方程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据:(1)寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹。(2)栈(堆栈)。驻留于常规RAM(随机访问存储器)区域。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。Java对象的引用(句柄)通常存放于此。创建程序时,Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。一切都是对象(3)堆。一种常规用途的内存池(也在R
3、AM区域),其中保存了Java对象。和堆栈不同,在“内存堆”或“堆”(Heap)创建一个对象时,只需用new命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。(4)静态存储。这儿的“静态”(Static)是指“位于固定位置”(尽管也在RAM里)。程序运行期间,静态存储的数据将随时等候调用。可用static关键字指出一个对象的特定元素是静态的。但Java对象本身永远都不会置入静态存储空间。(5)常数存储。常数值通常直接置于程序代码内部。这样做是安全的,因为它们永远都不会改变。有的常数需要严格地保护,所以可考虑将它们置入只读存储器(ROM)。一切都
4、是对象(6)非RAM存储。若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。对象的内存分配图栈内存堆内存str1str2abcabc0088:44000088:44000088:46600088:4660str1标识的对象str2标识的对象当我们声明一个引用类型变量时,系统只为该变量分配了引用空间,并未创建一个具体的对象;当用new为对象分配空间后,将对象的引用赋值给引用变量。一切都是对象5.特殊情况:基本类型有一系列类需特别对待;可将它们想象成“基本”、“主要”或者“主”(Primitive)类型,进行程序设计时要频繁用到它们。之所
5、以要特别对待,是由于用new创建对象(特别是小的、简单的变量)并不是非常有效,因为new将对象置于“堆”里。对于这些类型,Java采纳了与C和C++相同的方法。也就是说,不是用new创建变量,而是创建一个并非句柄的“自动”变量。这个变量容纳了具体的值,并置于堆栈中,能够更高效地存取。在Java中,boolean、byte、short、int、long、char、float、double这八种是基本数据类型,其余的都是引用类型。函数的调用xmainchange…栈内存y4(3)3(4)43classStringTest{publicstaticvoidchange
6、(intx,inty){x=x+y;y=x-y;x=x-y;}publicstaticvoidmain(String[]args){intx=3;inty=4;change(x,y);System.out.println("x="+x);System.out.println("y="+y);}}xy函数的调用ptmainchange…栈内存堆内存Point类的对象pt……0088:46600088:46600088:4660classStringTest{publicstaticvoidchange(Pointpt){pt.x=pt.x+pt.y;pt.y=pt
7、.x-pt.y;pt.x=pt.x-pt.y;}publicstaticvoidmain(String[]args){Pointpt=newPoint();pt.x=3;pt.y=4;change(pt);System.out.println("x="+pt.x);System.out.println("y="+pt.y);}}classPoint{intx,y;}“==”和“equals”的用法“==”是比较两个变量的值是否相等,“equals”是比较两个对象变量所代表的对象的内容是否相等。程序一classStringTestpublicstaticvoidm
8、ain(String[]
此文档下载收益归作者所有