第二章 一切都是对象

2.1 用引用操纵对象

可以单独有一个引用,并不需要一个对象与它关联。比如:
String s;
创建的只是引用,并不是一个对象。

2.2 必须由你创建所有对象

2.2.1 存储到什么地方

1. 寄存器:这是最快的存储区,因为它位于处理器内部。但数量极其有限,所以寄存器根据需求进行分配
2. 堆栈:位于通用RAM(随机访问存储器)中,当通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存,若向上移动,则释放那些内存。创建程序时,Java系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以虽然某些Java数据存储在堆栈中——特别是对象引用,但Java对象并不存储在其中。
3. 堆:一种通用的内存池(也位于RAM区),用于存放所有的Java对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存储多长时间。
4. 常量存储:常量存储通常直接存放在程序代码内部。有时,在嵌入式系统中,常量本身会和其他部分分隔离开,这种情况下,可以选择将其存放在ROM中。
5. 非RAM存储:数据完全存活于程序之外。比如流对象(文件存储在磁盘)和持久化对象(数据库)。

RAM-Random Access Memory易挥发性随机存取存储器,高速存取,读写时间相等,且与地址无关,如计算机内存等。
ROM-Read Only Memory只读存储器。断电后信息不丢失,如计算机启动用的BIOS芯片。存取速度很低,(较RAM而言)且不能改写。由于不能改写信息,不能升级,现已很少使用

2.2.2 特例:基本类型

基本类型不用new来创建变量,而是创建一个并非是引用的“自动”变量,这个变量直接存储“值”,并置于堆栈中,因此更加高效。
Java要确定每个种基本类型所占存空间的大小。这种所占存储空间大小的不变性是Java程序比用其他大多数语言编写的程序更具可移植性的原因之一。

基本类型.png

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

高精度数据
Java提供了两个用于高精度计算的类:BigIntegerBigDecimal。虽然他们大体上属于“包装器类”,但两者都没有对应的基本类型。

2.2.3 Java中的数组

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

2.3 永远不需要销毁对象

2.3.1 作用域

作用域(scope):作用域决定了在其内定义的变量名的可见性和生命周期。在java中,作用域由花括号的位置决定。在作用域里定义的变量只可用于作用域结束之前。

2.3.2 对象的作用域

当用new创建一个Java对象时,它可以存活于作用域之外。

{
    String s = new String("a String");
} //End of scope

引用s的作用域终点就消失了。然而,s指向的String对象仍继续占据内存空间。在上面的例子中,我们无法再这个作用域之后访问这个对象,因为对它唯一的引用一句超出了作用域的范围。
内存释放?Java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会被再引用的对象,随后,释放这些对象的内存空间,以便供其他对象使用。

2.4 创建新的数据类型:类

2.4.1 字段和方法

类中可以设置两种类型的元素:字段(数据成员)方法(成员函数)
若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值。然后确保初始化的方法并不适用于局部变量(即并非某个类的字段)。

class A{
    int x; //Java会初始化一个默认值:0
    void function(){
        int y; //编译器报错
    }
}

每个对象都有用来存储其字段的空间;普通字段不能在对象间共享(static字段才可以)。

2.5 方法、参数和返回值

方法的基本组成部分包括:名称、参数、返回值和方法体。方法名和参数列表(方法签名)唯一地标识出某个方法。
调用方式:

  1. 通过对象调用。
  2. 通过类调用——static数据和方法。

2.5.1 参数列表

参数列表传递的信息像java中其他信息一样,采用的都是对象形式,且这些传递的实际上也是引用

2.6 构建一个Java程序

2.6.1 名字可见性

反转域名

2.6.2 运用其他构件

import指示编译器导入一个包,也就是一个类库。

2.6.3 static关键字

当声明一个事物是static时,就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其static方法(类方法)或访问其static域(类数据)。
引用static变量的两种方法:

  1. 通过一个对象去定位;
  2. 通过类名直接引用(首选方法)。

static字段对每个类来说都只有一份存储空间,而非static字段则是对每个对象有一个存储空间。

2.7 你的第一个java程序

public class HelloDate{
    public static void main(String[] args){ // **static**使得main不需要创建实例即可运行。**args**用来存储命令行参数
        System.out.println("Hello, it's ");// out是System类中的一个静态PrintStream对象。
        System.out.println(new Date());
    }
}

2.7.1 编译和运行

Java开发环境:比如JDK。安装好JDK之后,需要设定好路径信息,以确保计算机能赵傲javac(编译)和java(运行)这两个文件。

2.8 注释和嵌入式文档

单行注释://
跨行注释:始于/*,终于*/

2.8.1 注释文档

javadoc:是用于提取注释的工具,它是JDK安装的一部分。它采用Java编译器的某些技术,查找程序内的特殊注释标签。它不仅解析由这些标签标记的信息,也将毗邻注释的类名或方法名抽取出来。
javadoc输出的是一个HTML文件,可以用Web浏览器查看。

2.8.2 语法

所有javadoc命令都只能在“/**”注释中出现。使用javadoc的方式主要有两种:

  1. 嵌入HTML:javadoc通过生成的HTML文档传送HTML命令,这使你能够充分利用HTML
  2. 使用文档标签。
    • 独立文档标签:是一些以“@”字符开头的命令,且要置于注释行的最前面。
    • 行内文档标签:可以出现javadoc注释中的任何地方,它们也是以“@”字符开头,但要在花括号内。

javadoc只能为publicprotected成员进行文档注释。private和包内可访问成员的注释会被忽略掉。

2.9 编码风格

  • 类名的首字母要大写
  • 驼峰风格
  • 标识符的第一个字母采用小写
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容