bacor

个人站

Coding is important, so is writing


一切都是对象

java是一种OOP(面向对象)语言,它假设我们只进行面向对象设计。在学习java过程中我们可以感受到,在java中(几乎)一切都是对象。

用引用操纵对象

尽管java一切都可看作对象,但实际上我们操纵的是对象的一个“引用”。它指向保存在内存中的对象,就像我们用遥控器可以操控电视机。在生成对象语句

Person a =new Person();

中,Person是我们编写的类,类是对象的模版,这一句就表示初始化一个对象并把该对象的引用赋给a,而不是把整一个保存在内存中的元素拿出来。

对象的创建

对象创建出来以后,会被存储在哪些地方呢?在java中有五个地方可以存储数据。

寄存器:速度最快,但你无法控制。

堆栈:速度仅次于寄存器,可以保存对象饮用,但不保存对象。

:用于存放所有java对象,当执行new时便会在堆里自动飞配空间。

常量存储:通常直接放在程序代码中。

非RAM存储:存活于程序之外,即程序结束也会存在,两个基本例子就是流对象持久化对象

上面说到对象存储于堆中,堆的速度比堆栈要慢,所以对于常见的比较小的变量就显得划不来。所以java采取C\C++的做法是用基本数据类型。在java中有八个基本数据类型,由于java的通用性每种类型的大小有固定规定。

基本类型 大小 最小值 最大值 默认值 包装器类型
boolean - - - false Boolean
char 16-bit Unicode 0 Unicode 2^16-1 ‘\uoooo’ Character
byte 8-bit -128 127 (byte)0 Byte
short 16-bit -2^15 2^15-1 (short)0 Short
int 32-bit -2^31 2^31-1 0 Integer
long 64-bit -2^63 2^63-1 0L Long
float 32-bit IEEE754 IEEE754 0.0f Float
double 64-bit IEEE754 IEEE754 0.0d Double

这里要注意,boolean类型时没有明确指定大小的!!!

当然了,如果遇到超过上述基本类型范围的数要怎么表示呢?java提供了BigInteger和BigDecimal可表示任意精度的整数和浮点数,付出的代价就是运算速度。

对象不需要销毁

对象需要占据存储空间,如果不断增加对象而不销毁,那么总有一刻内存空间会被填满。所以在C++中你必须记得销毁对象,但是在java中由于有垃圾回收器的存在会自动回收不需要的对象,免去了手动销毁的麻烦。

类,对象的模版

目前为止还没有说明什么东西可以决定对象的类型,这个答案就是类! 一个类一般包含数据成员和方法。在构造一个对象时如果那个类里没有为基本成员赋初始值,java就会赋默认值(见上表)。 方法即C\C++的“函数”,基本组成部分包括:名称、返回值、参数和方法体。 想要调用方法,只能通过对象调用,但是static方法除外。static方法不需要创建对象就能直接调用,这一点被用于main方法;就算一个类 创建了多个对象,static方法也只有一份存储空间。

java程序补充

在多人开发的情形下,如何防止两个模块名字相同产生冲突,java的方法是把程序员的Internet域名反过来是用,例如 com.example.xxx(全都是小写)。当要调用其他模块时就需要用import关键字(其中java.lang包为默认导入)。

注释

java有单行注释——用“//”引领 和多行注释——使用“/*”和“*/”,两者之间的内容会被编译器忽略。另外还有一种称为说明注释,开头使用“/**”而结束于“*/”,独立文档标签用“@”字符开头至于前面。例如:

/**
*该方法功能为传入一个参数,自加1并返回
* @param num 为传入的参数
* @return 返回自增1的num
* /
public int increment(int num){
    return num = num + 1;
}

常见的javadoc标签还有以下几种:

标签 描述
@author 标识一个类的作者
@param 说明一个方法的参数
@return 说明返回值类型
@exception 标志抛出的异常
@throw 与exception一样
@version 指定类的版本