第二章 万事万物皆物件(Everything is an Object)

reference操作对象
l         虽然抽象概念上你可以把所有东西都“视为”物件,但用以操作对象的识别字,实际上却只是其“reference”(引用、参照、指引)而已
l         安全的做法是在每次产生reference的同时便对其进行初始化,比如:
   
String s = “strings”

所有对象都必须由你建立
l         使用new关键字来建立,比如上例:String s = new Stringstrings”
l         java提供了许多地已有类,但是最重要的环节是能创建自己的class

储存在哪里
l         寄存器(Registers位于处理器中,数量有限,编译器分配
l         栈(Stack位于RAM(随机寄存器)中,处理器通过栈指针(Stack Pointer)对它进行直接访问,存储在栈中的数据大小和生命周期必须是已知的,java把对象的reference放到栈中,但对象不在
l         堆(Heap位于通用存储器,也在内存RAM中,用于放置对象,同栈不同,堆的优点是在分配空间的时候,编译器无需知道该分配多少空间,用new就可以分配到,分配堆的存储空间比分配栈的要慢一些
l         静态存储(Static Storage意思是“固定的位置”(仍然在内存RAM中),静态存储里面的数据在整个程序的运行期间都能访问到,采用static关键字声明,java对象本身是不能放到静态存储器里的
l         固定存储(Constant Storage存放常量值,这部分位于唯一寄存器(ROM),常量能为自己设置界限,在嵌入式系统中,就能选择是否把它们放入到ROM
l         非内存的存储(Non-RAM Storage程序如果不运行,它也还存在,两个最重要的例子是“流对象(streamed object)”和“永久性对象(presistent object)”,前者是一种会被送往另一台机器的,由对象转化成字节流;后者是保存在磁盘上的,能在程序中止后仍保存对象状态的文件,java提供了“轻量级永久性(lightweight persistence”支持

特例:基本类型(Primitive Types

l         这类不用new来创建,并且放置于stack中,并且每种类型所占的空间大小在java中是不变的,这也是java具有很高的可移植性的原因之一
l         所有数值类型(numberic types)都带有正负号
l         基本类型所谓的“外部类型”,允许在堆里创建一个表示这个基本类型的对象,这个对象不是基本类型,比如:
            c
har c = ‘x’;
               
Character C = new Character(c);
           
  Character C = new Character(‘x’);
l         高精度数值(High-precision numbersjava提供了两个用来进行高精度计算的classes:BigIntegerBigDecimal,虽然可以勉强说是外部类型,但它们却没有对应的基本类型,所有可以在IntFloat上的事情,都可以实施于它们,只不过是用“函数调用”取代基本类型的运算符(operators),以速度换取精度。
   
BigInteger所提供的整数支持任意精度
   
BigDecimal提供任意精度的定点数(fixed-point numbers

Java中的数组(array
不用再关心何时销毁对象,只需关心产生即可
生存空间(Scoping-
作用域

对象的生存空间(Scope of Object

l        垃圾回收器(garbage collector),不会造成内存溢出

数据成员(field)和成员函数(method
l         java中需要做的事情就是:定义classes、产生对象、将信息发送给对象
l         每一个对象都有用来存储数据成员的空间,不同的对象彼此之间并不共享数据成员
l         引用对象的数据成员   ObjectReference.member
l         数据成员属于基本类型时(primitive members)的缺省直(default values),如果是非类数据成员变量无法给缺省值


函数(method)、参数(arguments)、返回值(return values
l         java函数决定了某个对象究竟能接收到什么样的信息
l         函数包含:名称,参数,返回类型,函数体
     
returnType methodName /*arguments list*/
     
{
  
         /*Method body*/
      }

l         函数的调用: ObjectName.methodName(arg1,arg2,arg3)
l         java中传递的都是物体对象的reference,其类型必须正确
l        函数可以接受其他物体对象作为参数,也可以发送信息给其他对象

名称的可视性(Name Visibility
l         命名空间,用package包命名区分相同的变量名
l         关键字import可以明确告诉java编译器要使用的class究竟是哪一个,引入的是哪一个packageclasses组成的一个程序库)

关键字static
l         static可以完成两种情况:
   
  不论产生了多少个对象,或根本就不存在对象,那些特定数据的存储空间都只有一份
   
  希望某个函数不要和class object绑在一起,就是说可以不通过该类对象调用
l         static数据成员调用方法  ObjectName.member ClassName.member
l         static成员函数调用方法  ObjectName.method()、ClassName.method()
l         static函数的最重要用途之一是可以在不建立任何物体对象时调用其函数
l         有一组classes会被自动包含于每个JAVA程序中,java.lang
l         class名称必须和文件名相同,该class必须要有main(),其标记格式为:
       
public static void main String[] args{   }
          
args.length来表示参数个数,用args[0]表示第一个参数,
       
args[1]表示第二个参数…..
           args用来存储“命令行(command line)参数”
l         static方法的调用不是通过对象,而是通过类

编译与执行(Compiling and Running
l         使用javac进行编译      javac  Test.java
l         使用java执行程序       java  Test

程序的注释
l         使用javadoc可以把注释行程HTML文档
     
两种做法:嵌入式的HTML文档标记(doc tags
    
独立的文档标记是一些由“@”打头的命令,它们会被放在注释行的开头
     
内嵌式文档标记则可以出现在任何地方,也是由“@”开始,但用花括号括起来
l         注释文档根据它所注释的内容分成三类:类,变量和方法。注释在其前面紧挨
l         javadoc只会处理publicprotected的成员注释,可以使用-private来包含
l         在程序中可以按照HTML的格式来写注释,然后用javadoc可以形成文档
l         注释中都可以含有@see标签,这个功能让你可以参考其他的class说明文件,javadoc会自动为@see标签产生一个超连接,格式如下
           
@see classname
                 
@see fully-qualified-classname
                
@see fully-qualified-classname#method-name

类文件采用的标签
l         @version 格式:@version version-information
l         @author  格式:@author author-information
l         @since
l         使用的时候用javadoc –author Class.java
                      
javadoc –version Class.java

变量文件采用的标签
l         只能使用@see和内嵌式HTML

方法文件采用的标签
l         @param   格式:@param parameter-name description
            
用于描述参数,parameter-name参数名称,description参数描述
l         @return   格式:@return description   描述返回值信息,可以延续数行
l         @throws  格式:@throws fully-qualified-class-name description
            
用于描述异常出现
l         @deprecated  这个标签表示此方法已经被更新,建议不要再使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值