java学习(一)((java编程思想)待补充)—— ·对象

如果我们说另一种不同的语言,那么我们就会发觉一个有些不同的世界。

一、对象的存储

  1、寄存器:位于处理器内部,寄存器的数量极其有限,要根据需求进行分配。不能直接控制,也不能在程序中感觉到及村子存在的任何迹象。

  2、堆栈:位于通用的RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动则分配新的内存,若向上移动,则释放那些内存。这是一种快速邮箱的分寸存储方法,仅次于寄存器。创建程序时,java系统必须知道存储与堆栈内所有想的确切生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些java数据存储于堆栈中—特别是引用对象,但java对象并不存储于其中。

  3、堆:一种通用的内存池(也位于RAM区),用于存放所有的java对象。堆不同于堆栈的好处是:便以其不需要知道储存的数据在堆里存活多长时间。因此,在堆里分配存储有很大的灵活性。当需要一个对象时,只需要new写一行简单的代码,当执行这行代码时,会自动在堆里进行存储分配,当然这种灵活性需要付出相应的代价:用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间。

  4、常量存储:常量值通常存储在代码内部,这样做是安全的,因为它们永远不会被改变。有时在嵌入式系统当中,常量本身会和其它部分隔离开,所以这种情况下,可以将其存在RO(只读存储器)中。

  5、非RAM存储:如果数据完全存活于城西之外,那么它可以不收任何程序的控制,在程序没有运行时也可以存在。其中两个基本的例子是流对象和持久化对象。在流对象当中,对象转化成字节流,通常被发送给另一台机器。在持久化对象中,对象被存放在磁盘上,因此,即使程序终止,他们可以保持自己的状态。这种存储方式的技巧在于:把对象转化成可以存放在其他媒介上的实物,在需要时,可恢复成常规的,基于RAM的对象。java提供了对轻量级持久化的支持,而诸如JDBC和Hibernate这样的机制提供了更加复杂的对在数据库中存储和读取对象信息的支持。

二、特例:基本类型

  

基本数据类型
数据类型 大小 最小值 最大值 包装器类型
boolean Boolean
char 16-bit Unicode 0 Unicode   216-1 Character
byte 8-bit -128 +127 Byte
short 16-bit -215 +215-1 Short
int 32-bit -231 +231-1 Integer
long 64-bit -263 +263-1 Long
float 32-bit IEEE754 +IEEE754 Float
double 64-bit IEEE754 +IEEE754 Double
void Void

  1、boolean类型所占的空间大小没有明确的指定,仅定义能够取字面值true或false。

  2、基本类型具有包装器类,使得可以在堆中创建一个非基本对象,用来表示对应的基本类型。

  3、java提供连个用于高精度计算的类:BigInteger和BigDecimal。虽然它们大体上属于“包装器类”的范畴,但二者没有对应的基本嫩类型。

三、永远不需要销毁对象

  1、作用域:通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

    (1)、在作用域里定义的变量只可用于作用域结束之前。

    (2)、任何位于“//”之后到行末的文字都是注释。

    (3)、缩排格式使java代码更易阅读。由于java是一种自由格式(free-form)的语言,所以,空格,制表符,换行都不会影响程序的执行结果。

  2、对象的作用域:

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

        例如

1 2      String s = new String ("a string")             
3//End of scope

 

    引用s在作用域的重点就消失了。然而s指向的String对象仍继续占据内存空间。在这一小段代码中,我iomen无法在这个作用域之后访问这个对象,因为对它唯一的引用已超出了作用域的范围。

    (2)、如果java让对象继续存在,那么靠什么才能防止这些对象填满内存空间?java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象,随后释放这些对象的内存空间,以便供其他新的对象使用。

 四、创建新的数据类型:类

  1、字段和方法:

    (1)、字段:(有时被称为数据成员)可以是任何类型的对象,可以通过其引用与其进行通信;也可以是基本类型中的一种。如果字段是对某个对象的引用,那么必须初始化该引用,以便使其与一个世纪的对象相关联。

    (2)、方法:(有时被称作成员函数)

  2、基本成员默认值:

基本类型 默认值
boolean false
char ‘\uoooo’(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

   然而上述确保初始化的方法并不适用于“局部”变量(即并非某个类的字段)。

  3、方法、参数、返回值

    (1)、java的方法决定了一个对象能够购接收什么养的消息。方法的基本组成包括:方法名、参数、返回值和方法体。

     例如:

RetrurnType methodName(/* Argument list */){
        /*Method body*/    
}  

      (2)、返回类型描述的是在调用方法之后从方法中返回的值。参数列表给出了要传给方法的信息的类型和名称。方法名和参数列表(结合起来叫做“方法签名”)唯一的标识出某个方法。

    (3)、参数列表:方法的参数列表指定要传递给方法什么样的信息。参数列表中必须指定所传递对象的类型及名字。 

    (4)、名字可见性:import关键字。

    (5)、static关键字:可以满足两种情形:一种是只想为某特定域分配单一存储空间,而不考虑究竟要创建多少对象,甚至根本就不去创建对象。另一种情形是,希望某个方法不与包含它的类的任何对象关联在一起,也就是说,即使没有创建对象,也能调用这个方法。

    (6)、引用static变量有两种方法:一是通过一个对象去定位它。二是通过类名直接引用。如

StaticTest.i++

五、注释和嵌入式文档

  1、“/*”开始,随后是注释内容,并且可跨越多行,最后以“*/”结尾。

  2、已“//”起头,直至句末。

  3、注释文档 :(javadoc)所有javadoc命令都只能在“/**”注释中出现,注释结束于“*/”。使用javadoc主要有两种方式:嵌入HTML、或使用“文档标签”。独立文档标签是一些以“@”字符开头的命令。而且要置于住世行的最前面。而“行内文档标签”则可以在javadoc的任何地方它们也是以“@”字符开头,但主要在花括号内。

 

posted on 2016-10-23 19:12  The—Loner  阅读(250)  评论(0编辑  收藏  举报

导航