关闭

Java编程思想(二)--一切都是对象

标签: Java
193人阅读 评论(0) 收藏 举报
分类:

我们如何操作对象:

我们通过引用来控制对象。就好比遥控器控制电视。引用就是遥控器,对象就是电视机。我们操纵对象,实际上是操作引用。我们并不直接操作电视机,而是操作遥控器从而控制电视机。

此外,就算没有电视机(对象),我们可以创建遥控器(引用)。只不过这时候遥控器(引用)不能控制任何电视机(对象)。如果此时要使用遥控器(引用),则编译器会报错。

你可以这样创建一个引用:String s;

引用如何和对象连接:

利用new关键字来新建一个对象。

String s = new String("a");

对象一般存储在什么地方:

1、寄存器:速度最快,因为位于处理器内部,但是数量有限。

2、堆栈:位于通用RAM中,速度仅次于寄存器。编译器必须知道确切地生命周期,以便上下移动堆栈指针。引用就放在堆栈中。

3、堆:通用内存池(RAM中),需要更多时间,编译器不需要知道确切的生命周期。对象就放在堆中。

4、常量存储:直接放在程序代码内部。

5、非RAM存储:数据在程序之外。分为流对象和持久化对象。

流对象:对象转化为字节流,发送个另一台机器。

持久化对象:对象被存放在磁盘上。

 

类的特例:基本类型

为什么要有基本类型:

有一系列类型需要经常使用,如果橡其他对象一样放在堆中创建,则需要耗费大量时间。所以直接创建这些基本类型的值,并存放在堆栈中。

基本类型的一些特性:

类型

占用存储空间

表数范围

默认值

包装器类型

Boolean

--

true/false

false

Boolean

char

2字节(Unicode 编码)

字符

‘\u0000’(null)

Character

byte

1字节

-128~127

(byte)0

Byte

short

2字节

-2^15~2^15-1

(short)0

Short

int

4字节

-2^31~2^31-1

0

Integer

long

8字节

-2^63~2^63-1

0

Long

float

4字节

-3.403E38~3.403E38

0.0f

Float

double

8字节

-1.798E308~1.798E308

0.0d

Double

void

--

--

--

Void

所有类型都有正负号,没有无符号的类型

所有类型都有包装器类型。

除了表格中的类型,还有BigInteger和BigDecimal两个包装器类型,分别代表int和float,专门用于高精度计算。

 

数组:一组对象的引用

Java会确保数组会被初始化,而且不能再范围之外访问。

当我们创建了一个对象数组的时候,我们实际上是在创建一个引用数组,初始时,每个引用都指向null。如果试图使用还是null的引用,Java就会报错。

 

变量的生命周期:作用域

作用域决定了变量的生命周期。在Java中作用域由花括号{}决定,即变量只会存在于{}内部。

{

int y = 1;

{

int x = 2;

}

int z = y + x;//编译出错,因为变量x只存在于{}中。

}

对象的生命周期:

开始:

当我们创建了一个引用(变量),并把它指向一个new出来的对象时,这个对象的生命周期就开始了。然而在引用(变量)的作用域结束时,引用(变量)消失,对象仍然存在。

结束:

只要还有引用指向该对象,该对象就不会消失。只有没有引用指向该对象时,该对象才会消失。然而真正是什么时候消失是由垃圾收集器控制的。

也就是说你只需要创建对象,而不需要关心什么时候消灭对象,即释放内存。

 

什么决定了对象的类型(特性):类

类由两个方面组成:变量和方法(没有也行)

class A {}

A a = new A();

这样也可以定义一个类,但这样的类没什么意义。

字段(变量):

当对象在定义一个字段(不是方法内的变量)时,Java会给它一个默认值。如果是方法内的变量,则不会自动初始化。

方法:

参数:传递给方法的信息

返回值:方法返回的信息,利用return关键字进行返回,可以返回void(空值)。

方法名:方法调用时所用的名称

方法体:具体实现

ReturnType methodName(/* Argument list */) {

/* Method body */

}

方法调用必须通过对象来调用。

int x = a.f();//a为对象,f()为该对象内的方法,x为返回类型。

 

类名冲突:

一个程序往往由多个人编写,一个人编写的类中可能与其他人编写的类名相同。那么程序该如何辨别这两个类。

打包:

Java使用了包机制,即使用域名的,即使反过来使用域名。例如baidu.com就可以使用com.baidu.util。一般包名都是小写。

package com.baidu.util; //这句话一定要放在程序第一行

如何在程序中引用其他包:

使用import关键字

import com.baidu.util.*; //引用这个包中所有的类,这种方式比较常用。

或 import com.baidu.util.A; //只引用这个包中的类A

 

static:

为什么要static:

一般来说,只有在堆中创建一个类之后才能访问类中的字段和方法。但有时候我们并不想创建对象,只想调用一个变量或方法。

其次,每个相同类型的对象都有自己的字段或方法,而有时候我们会想要这些相同类型的对象共用一个变量或方法。

static变量的使用:

直接用类名 如:A.f();

也可通过对象调用:a.f();

 

注释:

//:只注释当前行

/* */:注释中间内容

/**  */:用于产生注释文档

必须放在所要注释内容的前面

可以内含HTML代码,但不要放入<h1>或<hr>

只能对public和protect的变量和方法进行文档注释

每一行开头的星号和第一个空格会被忽略。

标签:

@see:引用其他类,生成一个See Also

{@link package.class#member label}:使用label而不是SeeAlso

{@docRoot}:产生到文档根目录的绝对路径

{@inheritDoc}:从这个类最直接的基类中继承相关文档到当前文档的文档注释中

@version:版本信息

@author:作者信息

@since:指定代码最早使用的版本

@param:参数

@return:返回值

@deprecated:表示该方法已抛弃

@throws:异常

 

编码风格:

类名首字母要大写,如果由多个单词组成,则每个单词都要大写

其他的首字母小写,其他一样。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4168次
    • 积分:278
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条