第二章 一切都是对象

2.1 用引用操纵对象

  创建一个String引用:

String s;

  这里所创建的只是引用,并不是对象。

  创建一个引用的同时便初始化:

String s = "abc";

2.2 必须由你创建所有对象

  创建一个引用,希望它能与一个新对象相关联:

String s = new String("abc");
引用 = new 对象;

2.2.1 保存到什么地方

  1. 寄存器。这是最快的保存区域,在处理器内部,由编译器分配不能直接的控制。
  2. 堆栈。位于通用RAM(随机访问存储器)中,但可通过它的“堆栈指针”获得处理的直接支持。尽管有些Java数据要保存在堆栈里——特别是对象引用,但Java对象并不放到其中。
  3. 堆。一种通用的内存池(也在RAM区域),其中保存了Java对象。
  4. 常量存储。常量值通常直接置于程序代码内部。
  5. 非RAM存储。若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。其中两个最主要的例子便是“流对象”和“持久化对象”。

2.2.2 特例:基本类型

  不用new来创建变量,而是创建一个并非是引用的“自动”变量,这个变量直接存储“值”,并置于堆栈中,因此更高效。

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

2.2.3 Java中的数组

  当创建一个数组对象时,实际上就是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,该值拥有自己的关键字null。

2.3 创建新的数据类型:类

2.3.1 基本成员默认值

 若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值。

  然而上述确保初始化的方法并不适用于”局部“变量(即并非某个类的字段)。因此,如果在某个方法定义中有:

int x;

那么变量x得到的可能是任意值,而不会是自动初始化为零。

2.4 方法、参数和返回值

  方法名和参数列表(它们合起来被称为“方法签名”)唯一地标识出某个方法。

2.4.1 参数列表

  像Java中任何传递对象的场合一样,这里传递的实际上也是引用。

2.5 构建一个Java程序

2.5.1 static关键字

  一种情形,只想为某特定区域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至不创建任何对象。

  另一种情形,希望某个方法不与包含它的类的任何对象关联在一起,就是说,即使没有创建对象,也能调用这个方法。

  下述代码能生成一个static数据成员,并对其初始化:

class StaticTest {
Static int i = 47;
} StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();

  尽管我们制作了两个StaticTest对象,但它们仍然只占据StaticTest.i的一个存储空间。无论st1.i还是st2.i都有同样的值47。

[Java编程思想] 第二章 一切都是对象的更多相关文章

  1. 《 Java 编程思想》CH02 一切都是对象

    用引用操纵对象 尽管Java中一切都看作为对象,但是操纵的标识符实际上对象的一个"引用". String s; // 这里只是创建了一个引用,而不是一个对象 String s = ...

  2. JAVA编程思想第二章答案

    欢迎访问我的CSDN博客查看https://mp.csdn.net/mdeditor/94797839# 有其他问题欢迎发送邮箱至hpzhangjunjiell@163.com 感谢

  3. Java编程思想学习(一) 一切都是对象

    前言 Java是基于C++的,但Java是一种更加纯粹的面向对象程序设计语言. C++和Java都是混合/杂合型语言.杂合型语言允许多种编程风格. 用引用操纵对象 每种编程语言都有自己操纵内存中元素的 ...

  4. Java编程思想学习笔记——一切都是对象

    前言 Java是基于C++的,但Java是一种更加纯粹的面向对象程序设计语言. C++和Java都是混合/杂合型语言.杂合型语言允许多种编程风格. 用引用操纵对象 每种编程语言都有自己操纵内存中元素的 ...

  5. Java编程思想之二 一切都是对象

    2.1 用引用操作对象 每种编程语言都有自己的操作内存中元素的方式. 在Java中,一切都可以视为对象,因此可以采用单一的固定语法. 2.2 必须由你创建所有对象 一旦创建一个引用,就希望它能与一个新 ...

  6. Java编程思想学习(二)----一切都是对象

    2.1用应用操作对象 String s; 这里所创建的只是引用,并不是对象.如果此时向s发送一个消息,就会返回一个运行时错误.这是因为此时s没有和任何事物关联.因此,一种安全的做法是:创建一个引用的同 ...

  7. [Java编程思想] 第一章 对象导论

    第一章 对象导论 "我们之所以将自然界分解,组织成各种概念,并按其含义分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下来--除非赞成这个协定中规定的有 ...

  8. java编程思想第九章接口

    9.1抽象类和抽象方法 为什么要有抽象类? 是希望通过通用接口操作一系列类. 那么抽象类的形式是什么样的呢? 声明类的使用使用abstract关键字,且在该类中应该具有抽象方法. 注:抽象方法被关键字 ...

  9. JAVA编程思想读书笔记(四)--对象的克隆

    接上篇JAVA编程思想读书笔记(三)--RTTI No1: 类的克隆 public class MyObject implements Cloneable { int i; public MyObje ...

随机推荐

  1. java中静态代码块初始化顺序

    (一)java 静态代码块 静态方法区别    一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下, ...

  2. 关于String不可变的一些理解

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11683720.html 一直对String不可变感到疑问, 不知为何说String是不可变的, ...

  3. web虚拟主机、日志分割以及日志分析

    目录 一.构建虚拟web主机 1.1 概述 1.2 支持的虚拟主机类型 1.3 部署虚拟主机步骤 1.3.1 基于域名的虚拟主机 (1)为虚拟主机提供域名解析 (2)为虚拟主机准备网页文档 (3)添加 ...

  4. python中生成器的两段代码

    生产者-消费者经典单线程问题 import time def consumer(name):     print("%s 准备吃包子啦!" %name)     while Tru ...

  5. 基于TMS320C6670的软件无线电核心板

    一.板卡概述 北京太速科技自主研发的TMS320C6670核心板,采用TI KeyStone系列的四核定点/浮点DSP TMS320C6670作主处理器.板卡引出处理器的全部信号引脚,便于客户二次开发 ...

  6. netty系列之:channel和channelGroup

    目录 简介 神龙见首不见尾的channel channel和channelGroup channelGroup的基本使用 将关闭的channel自动移出 同时关闭serverChannel和accep ...

  7. 对象到底是怎么new出来的

    前言:要想理解本文,必须先了解JVM的内存结构 一.创建对象的方式 new:最常见 反射:Class.newInstance() 使用clone() 反序列化 二.创建对象的步骤(对象在JVM中怎么存 ...

  8. RISC-V 特权指令结构

    机器模式 机器模式(缩写为 M 模式,M-mode)是 RISC-V 中 hart(hardware thread,硬件线 程)可以执行的最高权限模式.在 M 模式下运行的 hart 对内存,I/O ...

  9. Spring 类名后缀理解

    Aware 理解 实现Spring的Aware接口. 定义为感知.意识,核心意义在于通过Aware可以把spring底层组件注入到自定义的bean中. 对于bean与容器的关系,bean不应该知道自身 ...

  10. 利用AWVS扫描Web漏洞

    实验目的 利用AWVS扫描Web漏洞. 实验原理 AWVS是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞. 实验内容 AWVS是一个自动化的web应用程序安全测试工具, ...