第2章 一切都是对象

2.1  对象及引用

在Java里,一切都被视为对象,但操纵对象的标识符实际上是对象的一个引用(reference);

好比,遥控器(引用)操纵电视机(对象);

创建一个String引用:

String s;(s此时没有与任何对象关联)


2.2  创建对象

new关键字:创建一个对象


“对象”存储的地方:

寄存器:最快的存储区

堆栈:位于RAM(随机访问存储器)中,;堆栈指针向下移动,则分配新的内存,向上移动,则释放那些内存;速度仅次于寄存器;

堆:通用的内存池(也位于RAM中),用于所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多久。new关键字会自动在堆里进行存储分配;

常量存储:常量值直接存放在程序代码内部;

非RAM存储:流对象和持久化对象(文件、数据库)


对象的特例:基本类型

new关键字将对象存储在“堆”里,但这种方法创建特别小的、简单的变量不是很有效;

基本类型不是用new创建的,不需要创建一个引用的“自动”变量,而是直接将值存储在堆栈中,更加高效;

基本类型都有相应的包装类型。可以进行自动装箱拆箱。

自动装箱:

Character ch = 'x';(相当于Character c = new Character('x');)

自动拆箱:

Character ch = new Character('x');

char c = ch;(这句用到了自动拆箱,相当于……)

Java还提供高进度数字:BigInteger和BigDecimal,分别对应int和float;

Java数组自带范围检查,很安全;

当创建一个数组对象时,实际上创建了一个引用数组,每个引用都自动初始化为一个特定值null;

在使用任何引用之前,都必须为其指定一个对象;

还可以创建存放基本数据类型的数组;


2.3  对象的生命周期

作用域(scope):作用域决定了在其定义的变量名的可见性生命周期

基本类型的作用域由花括号决定;在作用域内定义的变量只可用于作用域结束之前;

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

例如:

{

String s = new String("string");

}

引用s在作用域终点(就是花括号“}”)就消失了,但是s指向的String对象仍然占据内存空间;

Java有垃圾回收器,会自动回收不会再被引用的对象,这样就不用担心内存泄漏的问题。


2.4  创建新的对象类型——类

class关键字:

class ATypeName{

//……

}

ATypeName a = new ATypeName();

类的两个元素:

字段:数据成员(可以是对象,也可以是基本数据类型)

方法:成员函数

类中基本数据类型有默认值,只有当变量作为类的成员使用时,Java才确保给其默认值,但是“局部”变量(并非某个类的数据成员)则不享受这种待遇,在某个方法中定义的变量得到的可能是随机值。


2.5  方法、参数和返回值(注意事项)


2.6  构建一个Java程序

 包名(类库名):

为了给一个类库生成不会与其他名字混淆的名字,Java设计者希望程序员反过来使用自己的Internet域名。

import关键字导入一个包;

static关键字:

使用情况:

(1)只想为某个特定域分配单一存储空间,而不去考虑究竟要创建多少对象,或者根本不创建任何对象;(静态成员变量)

(2)即使没有创建对象,也想调用某个方法;(静态成员方法)

static声明的事物和类绑定,而不和类的对象实例绑定。

注意:static方法不能调用非static的域或方法;

静态方法可以通过类名直接调用。


2.7 第一个Java程序

java.lang包会自动导入;

Data类在java.util包;

javac.java


2.8  注释和嵌入式文档 

代码和稳定链接起来

javadoc是用于提取注释的工具,它采用了Java编译器的某些技术,可以查找程序内的特殊标签。通过解析标签,将毗邻的类名或方法抽取出来。

javadoc输出一个doc文档;

语法和标签示例:略;

编码风格:驼峰























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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值