java 一切皆对象

Java语言是面向对象的编程语言,当我们用Java做实际开发时,我们必须将思想转化到面向对象的世界中。这是作为一个Java程序员的基本功,如果你兼备使用这种语言的一种能力,会使你学起来更加简单。我们在项目开发中,经常做到会new对象、会使用对象已经足够了。想知道java对象在程序内怎么存储怎么使用的吗?今天的内容深入剖析java对象。

一、用引用操纵对象

什么是引用:

在java程序中,尽管我们一切都将看作为对象,但实际上操作对象的标识符实际上是对象的一个“引用(referen)”。

为了读者方便理解,我们可以将操纵对象的标识符想象成电视机的遥控器(引用),电视机为对象。只要握住遥控器,我们就可以保持与电视机的连接。当我们减小电视机的音量时,我们的实际操控是遥控器(引用),再由遥控器操纵电视机(对象)。以上形象的比喻就是我们在java中使用对象时,不是直接对对象进行操作,而是通过引用进而对对象的控制操作。

即使我们没有电视机,遥控器也可以独立的存在。也就是说,我们可以单独的拥有一个引用,并不一定需要一个对象去关联。下面举个小例子详细说明,我们可以创建一个String的引用。

String s;

这里所创建的只是引用,并不是对象。如果此时此刻对s进行输出使用,运行时就会返回一个错误。因为s实际上没有与任何的事物关联。因此,为了安全起见,我们通常在项目中创建一个引用通常做初始化处理:String = “abc”;

这里用到的是字符串带文本的初始化,通常还有另外一种更通用的方法。

 

二、对象的创建与存储

我们一旦创建了引用就必须关联一个对象,通常用new关键字来实现。new关键字的意思是“给我一个新对象”,所以另一种初始化字符串的方式为:

String s = new String(“abc”);

除此之外,java中还有很多数据类型,以上只是举个小例子。

 

三、对象存储到了什么地方?

很多人对会在程序中很轻松的new出一个对象,但是对象到底存储到什么地方呢?特别是内存会发生什么变化呢?下边的讲解会对你有很大的帮助。

  1. 寄存器。这是这是最快的存储区,因为这是位于不同于其他的存储位置—处理器内部。但是寄存器的数量有限,所以寄存器根据需求进行分配。
  2. 栈堆。位于RAM(随机访问存储器)中,通过栈堆指针从处理器那获取直接支持。如果栈堆指针向下移动,则重新分配新的内存。若指针向上移动,则释放内存空间。某些的java数据就存储到栈堆中,比如上面讲到的遥控器(引用)就存储到该区域,而对象并不存储到其中。
  3. 堆。一种通用的内存池,(位于RAM)中,用于存放java所有的对象。堆不同于栈堆的好处就是:编译器不知道存储到堆里的数据存活多长时间。因此,在堆里分配存储有很大的灵活性。当需要一个对象时,只需要new写一行代码,当执行到该代码时,会自动在堆里进行存储分配。堆的分配清理空间比栈堆的花费的时间要长。
  4. 常量存储。常量值通常直接存放到程序的内部,这样做是安全的,因为他们的值永远不会被改变。在嵌入式系统开发中,常量本身会和其他部分分隔开,在这种情况下,我们可以选择将其存放到ROM(只读存储器)中。

     5. 非RAM存储。如果数据完全存活于程序之外,那么它可以不受程序任何控制,在程序没有运行时也可以存在。两个基本           的例子就是流对象和持久化对象。在流对象中,数据转化为字节流,通常被发送到另一个机器。在“持久化对象”中,对           象被存放于磁盘上,因此即使程序终止,他们仍可以保持原有的状态。这种存储方式的技巧在于:把对象转化成可以存           放在其他媒体的事物,在需要时,再恢复成常规,基于RAM的对象

猜你喜欢

转载自blog.csdn.net/qq_36903042/article/details/81213787
今日推荐