读书笔记-《ON JAVA 中文版》-摘要3[第三章 万物皆对象]

文章目录

  • 第三章 万物皆对象
    • 1.对象操纵
    • 2.对象创建
      • 2.1 数据存储
      • 2.2 基本类型的存储
      • 2.3 高精度数值
      • 2.4 数组的存储
    • 3.代码注释
    • 4.对象清理
      • 4.1 作用域
      • 4.2 对象作用域
    • 5.类的创建
      • 5.1 类
      • 5.2 字段
      • 5.3 基本类型默认值
      • 5.4 方法使用
    • 6.程序编写
    • 7.小试牛刀
    • 8.编码风格

第三章 万物皆对象

1.对象操纵

虽万物皆可为对象,但我们所操作的标识符实际上只是对对象的引用。

—就是变量名

2.对象创建

引用用来关联对象。Java使用 new 关键字代表:创建一个新的对象实例。

—String s = new String(“asdf”);

2.1 数据存储

  • 寄存器(Registers):最快的存储区域,位于CPU内部。
  • 栈内存(Stack):存在于常规内存 RAM(随机访问存储器,Random Access Memory)区域中,可通过栈指针获得处理器的直接支持。
  • 堆内存(Heap):这是一种通用的内存池(也在 RAM 区域),所有 Java 对象都存在于其中。
  • 常量存储(Constant storage):常量值通常直接放在程序代码中,因为它们永远不会改变。如需严格 保护,可考虑将它们置于只读存储器 ROM (只读存储器,Read Only Memory)中
  • RAM 存储(Non-RAM storage)数据完全存在于程序之外,在程序未运行以及脱离程序控制后 依然存在。两个主要的例子:(1)序列化对象:对象被转换为字节流,通常被发送到另一台机 器;(2)持久化对象:对象被放置在磁盘上,即使程序终止,数据依然存在。

—PS:寄存器不能之间控制,栈内存存放Java的引用,堆内存存放Java的对象,常量存储在代码中,非RAM存储脱离代码的存在。

2.2 基本类型的存储

Java 的基本类型不是使用 new 创建变量,而是使用一个“自动”变量。 这个变量直接储"值",并置于栈内存中,因此更加高效。

基本类型 大小 最小值 最大值 包装类型
boolean - - - Boolean
char 16 bits Unicode 0 Unicode 216 -1 Character
byte 8 bits -128 +127 Byte
short 16 bits -215 +215-1 Short
int 32 bits -231 +231-1 Integer
long 64 bits -263 +263-1 Long
float 32 bits IEEE754 IEEE754 Float
double 64 bits IEEE754 IEEE754 Double
void - - - Void

2.3 高精度数值

在Java中有两种类型的数据可用于高精度的计算:

  • BigInteger,支持任意精度的整数
  • BigDecimal,支持任意精度的定点数字

它们并没有对应的基本类型,必须要通过调用它们的方法来实现而非运算符。

2.4 数组的存储

在Java中,数组使用前需要被初始化,并且不能访问数组长度以外的数据。

当我们创建对象数组时,实际上是创建一个引用数组,并且每个引用的初始值都为null。在使用该数组之前,我们必须为每个引用指定一个对象。如果我们尝试使用为null的引用,则会在运行时报错。

3.代码注释

Java中有两种类型的注释:

  • 多行注释,以 /* 开头,可以跨域多行,到 */ 结束。
  • 单行注释,以 // 开头并一直持续到行结束。

—PS:多行注释可以在每一行开头添加 *,不加也不影响效果。不过约定成俗的习惯还是需要遵守

4.对象清理

4.1 作用域

在Java中,作用域是由大括号 {} 的位置决定的。

{ 
    int x = 12; 
    // 仅 x 变量可用 
    { 
        int q = 96; 
        // x 和 q 变量皆可用 
    }
    // 仅 x 变量可用 
    // 变量 q 不在作用域内 
}

Java的变量只有在其作用域内才可用。

4.2 对象作用域

Java 对象与基本类型具有不同的生命周期。当我们使用 new 关键字来创建 Java 对象时,它的生命周期将会超出作用域。

{
	String s = new String("a string")
}
// 作用域终点

上例中,引用 s 在作用域终点就结束了。但是,引用 s 指向的字符串对象依然还在占用内存。在这段代 码中,我们无法在这个作用域之后访问这个对象,因为唯一对它的引用 s 已超出了作用域的范围。

—PS:看不到不代表不存在

5.类的创建

5.1 类

Java使用 class 关键字类来描述一种新的对象。

5.2 字段

当我们创建好一个类之后,我们可以往类里存放两种类型的元素:方法(method)和字段(field)。 类的字段可以是基本类型,也可以是引用类型。如果类的字段是对某个对象的引用,那么必须要初始 化该引用将其关联到一个实际的对象上。

5.3 基本类型默认值

如果类的成员变量是基本类型,那么在类初始化时,这些类型将会被赋予一个初始值。

基本类型 初始值
boolean false
char \u0000(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

不过这种默认值的赋予并不适用于局部变量(不属于类的字段)

5.4 方法使用

方法的基本组成部分包括名称、参数、返回类型、方法体。

[返回类型] [方法名] (/参数列表/){

// 方法体

}

方法名和参数列表统称为方法签名(signature of the method)。签名作为方法的唯一标识。

参数列表必须指定每个对象的类型和名称。

6.程序编写

Java 创建者希望我们反向使用自己的网络域名,因为域名通常是唯一的。

必须通过使用 import 关键字来告诉 Java 编译器具体要使用的类。

我们可以在类的字段或方法前添加 static 关键字来表示这是一个静态字段或静态方法。当 static 关键字修饰时, 它允许我们无需创建对象就可以直接通过类的引用来调用。

7.小试牛刀

每个 java 源文件中允许有多个类。同时,源文件的名称必须要和其中一个类名相同,否则编译器将会 报错。每个独立的程序应该包含一个 main() 方法作为程序运行的入口。其方法签名和返回类型如 下。代码示例:

public static void main(String[] args) {
    
}

参数 args 并没有在当前的程序中使用到,但是 Java 编译器强制要求 必须要有, 这是因为它们被用于接收从命令行输入的参数。

8.编码风格

类名的首字母大写。 如果类名是由多个单词构成的,则每个单词的首字母都应大写(不采用下划线来分隔),字段(成员变量)和对象引用名都采用驼峰命名的方式,但是它们的首字母不需要大写。

—PS:推荐安装阿里编码规范
读书笔记-《ON JAVA 中文版》-摘要3[第三章 万物皆对象]_第1张图片

你可能感兴趣的:(读书笔记,java)