java对象

来源:互联网 发布:股指软件 编辑:程序博客网 时间:2024/05/19 01:30

如有问题请在下面留言,互相探讨。

什么是对象

java是面向对象的程序设计语言,那什么是对象?对象就是指任何一个事物可以使具体的也可以是抽象的。java面向对象就是把实际或者你想象的或者介于两者之间的事物用java语言来表达出来。

引用

你使用对象对对象做一系列操作并不是直接操作这个对象,而是一个“引用”,是间接的操作对象。就好比老师叫你去做一件事,并不是老师直接控制你,只是发送了个命令。

如果你想操纵一个词或者句子你可以创建一个引用:String s; 注意这里没有对象只有引用,说明可以只有引用没有对象。

创建对象

又了引用就必须要有对象,对象一般需要new出来,如String s=new String("asd");

对象的存储

  • 寄存器
    位于处理器内部最快存储区,所以你不能直接控制。
  • 堆栈
    位于通用RAM(随机访问存储器)中,堆栈指针受处理器控制,指针上移则分配新的内存,下移则释放内存。所以是一种快速有效的存储方法,仅次于寄存器。创建程序时,java系统必须知道在堆栈所有项的确切生命周期(下代码控制),以便上下移动指针,这一约束限制了程序的灵活性。对象引用和基础类型数据等存储在这。

  • 一种通用的内存池(RAM),用于存放java对象。具有很大灵活性,编译器不需要知道存储的数据的生命周期。新建一个对象就会自动分配空间,也会自动清理,但是时间慢。
  • 常量存储
    常量值直接存储在程序代码内部。
  • 非RAM存储
    某些数据完全存活在程序之外,比如流对象和持久化对象。

基本类型

基本类型数据不需要new来创建一个对象,同时它存储在堆栈中。基本类型具有包装器可以创建一个非基本对象,如Character ch=new Character('x');,存放在堆中。

java数组

在C和C++中使用数组是危险的,因为C和C++中数组就是内存块。如果数组越界或者使用没有初始化的数组,将会导致不可预料的后果。java为了安全和高效,付出了内存开销和运行时检查的代价。当创建数组但没有初始化时,数组会被自动初始化一个特定值null,null告诉java它还没有被初始化,如果使用就会报错,基本类型的数组初始值为0。

对象的销毁

java对象不具备和基本类型一样的生命周期。当用new创建一个java对象时,它可以存活在作用域之外。如下:

{        String s=new String("a string");}

作用域结束时对象引用所占堆栈内存就释放了,但s指向的对象可以仍然 占用空间或许它会被传到其他需要。(当然基础类型的数据可能也会被需要但是它比较简单直接赋值就行,new出来的对象包含基础类型数据在传值的时候重新赋值比较麻烦?ps:我自己的思考)

担心对象一直占用空间?不用,java有一个垃圾回收器,可以监控对象是否被需要,如果不就释放所占空间,这样就消除了内存泄漏的问题。

原创粉丝点击