Java编程思想学习-《第二章 一切都是对象》

第2章 一切都是对象

    尽管Java是基于C++的,但是相比之下,Java是一种更“纯粹”的面向对象程序设计语言。Java语言假设我们只进行面向对象的程序设计。也就是说,在开始用Java进行设计之前,必须将思想转换到面向对象的世界中来。

2.1 用引用操作对象

    每一种编程语言都有自己操纵内存中元素的方式。在Java中,一切都是对象,因此可以采用单一固定的用法。尽管在Java中一切都是对象,但是操作的标识符实际上是对象的一个引用。就像遥控器(引用)遥控电视(对象)一样。而且可以只有引用,而没有与该引用关联的对象。就像可以只有遥控器,没有电视。

    String s;//只有引用,容易出现问题

    String s = “abc”;//安全做法:创建引用时初始化

2.2 必须由你自己创建对象

    一旦创建了一个引用,就希望它能与一个对象关联。可以使用new操作符实现该想法。

    String s = new String(“abc”);

    那这些对象存储到什么地方呢?

A.寄存器:位于CPU内部,速度最快,数量有限。

B.堆栈:位于通用RAM中。若堆栈指针下移,则分配新内存;若上移,则释放内存空间。这样方式仅次于寄存器。

C.堆:一个通用的内存池(RAM中),用于存放所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储在堆中的对象存活多久。这样很灵活,但是用堆存储分配和清理的时间比堆栈多。

D.常量存储:直接存放在代码内部,这样很安全,保证永远不会被修改。

E.非RAM存储:如果数据完全存活于程序之外,那么它肯定不受程序控制。如持久化对象。

    对于基本类型来说,Java采取和C/C++相同的方法,不用new来创建变量,而是创建一个并非是引用的“自动”变量。这个变量直接存储“值”并且将其置于堆栈中。

    Java中的基本数据类型所占用存储空间是固定,这样占用的存储空间大小不会随着硬件架构的改变而改变,这样提高Java的可移植性。基本类型如下:

基本类型

大小

最小值

最大值

默认值

包装器类型

boolean

-

-

-

false

Boolean

char

16b

Unicode0

Unicode2^16-1

\u0000

(null)

Character

byte

8b

 

 

(byte)0

Byte

short

16b

-2^15

+2^15-1

(short)0

Short

int

32b

 

 

0

Integer

long

64b

 

 

0L

Long

float

32b

 

 

0.0f

Float

double

64b

 

 

0.0d

Double

void

-

-

-

-

Void

    说明:

A.所有数值类型都是有符号数。

B.boolean类型所占存储空间没有指定,仅能取值ture和false。

C.基本数据类型具有包装器类,使得可以在堆中创建一个非基本数据类型的对象,用来表示对于的基本数据类型。

D.Java中提供了2个高精度计算的类:BingInteger(支持任意精度的整数)和BigDecimal(支持任意精度的定点数)。

    在Java中会确保数组被初始化,而且不会在它的范围之外被访问。这样范围检查,是以每个数组上少量的内存开销和运行时的下标检查作为代价的。

    当创建一个数组时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为特定值,该值就是null。一旦Java看到null,就知道这个引用还有与对象关联。

2.3 永远不需要销毁对象

    在程序设计语言中要考虑对象的作用域问题。也就是说要了解对象的生命周期。先看下基本数据类型的作用域:

    {

        int x = 10;//只有x

        {

           int y = 20;//有x和y

        }

        //只有x

    }

    Java对象的作用域与基本数据类型的作用域不同。当用new创建一个对象后,它可以存活在作用域之外。

   {

       String s = “abc”;

    }//引用在这里就结束了

    但是,s指向的String对象仍然在堆空间中。

2.4 创建新的数据类型:类

    在Java中,一切都是对象。但是我们需要一种能够表示对象的外观和行为的一种类型。所以引入了一个新的基本类型-类。

    一旦定义了类(事实上,程序员所做的工作就是创建类,然后生成这个类的对象以及发送消息给这个对象),就需要在类中设置两种类型的元素:字段(数据成员)和方法(成员函数)。

字段可以是基本数据类型,也可以是对象的引用。

    方法决定了一个对象能够接受什么样的消息。方法包括方法名、参数、返回值和方法体。方法名和参数列表(合起来成为“方法签名”)唯一的标识出某个方法。Java中的方法只能作为类的一部分来创建。方法只能通过对象来调用(static方法除外)。

    int x = a.f();//发送消息f给对象a

    方法的参数列表指定要传递给参数什么样的信息。在参数列表中必须指定每个传递对象的类型和名字。像Java中任何传递对象的场合一样,这里实际上传递的对象的引用,并且引用的类型必须正确。

    int storage(String s)

    {

    return s.length()*2;

    }

    关于return关键字的用法有二:

A.它说表已经做完,离开此方法

B.返回一个值

    若返回值为void,则return关键字的作用就只退出当前方法。

2.6 构建一个Java程序

    首先考虑到命名为问题?如果使得命名不会冲突?Java中使用命名空间解决该问题。将域名反转作为包名即可。

    如果引用其他类?Java中使用import关键字引入其他类。

    通常来说,当我们创建类时,就是为了描述对象的外观和行为。使用new关键字就可以得到一个新的对象。而有两种情况是用new不能解决的:

A.想为特定域分配单一的存储空间,而不考虑创建多少个对象,甚至不创建对象。

B.希望某个方法不与它的类的任何对象关联。

    使用static关键字就可以满足上述需求。static关键字可以放在字段(称为类数据)和方法(称为类方法)前,表面它们不与类中的任何对象关联。Static方法的一个重要用法就是在不创建任何对象的情况下调用该static方法。如:

    Class Test{

       static int i = 47;

    }

    Test test1 = new Test();

    Test test2 = new Test();

    则test1.i和test2.i指向同一存储空间,都是47。

2.7 你的第一个Java程序

    编译:javac Test.java

    运行:java Test

2.8 注释和嵌入式文档(没看完)

    Java中有两种注释风格:A.多行注释/* 注释内容 */。B.单行注释//注释内容。如:

    /*

     *注释内容,注意:进行编译时/*和*/之间的*都会忽略。

     */

    //这就是单行注释

    代码与文档如果分离则难以对文档维护。所以Java可以将代码和文档链接在一起。最简单的方法就是将代码和文档放在一个文件中。因此,Java中使用一种特殊的注释语法来标记文档,此外还需要一个工具来提取这些注释。

    Javadoc便是用来提取文档的工具。它采用java编译器的某些技术,查找程序内的特殊注释标签。它不仅解析由这些标签标记的信息,而且还将毗邻的类名或方法名提取出来。最终生成一个html文件。

2.9编码风格

    Java中采用“驼峰风格”。规定是这样的:类名首字母大写;如果类名中包含多个单词,则把它们并在一起,每个单词首字母大写。方法、字段、对象引用名称的规定与类的基本一致,只是首字母小写而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甘蓝聊Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值