• 读书笔记-《ON JAVA 中文版》-摘要2


    第三章 万物皆对象

    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
    char16 bitsUnicode 0Unicode 216 -1Character
    byte8 bits-128+127Byte
    short16 bits-215+215-1Short
    int32 bits-231+231-1Integer
    long64 bits-263+263-1Long
    float32 bitsIEEE754IEEE754Float
    double64 bitsIEEE754IEEE754Double
    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 不在作用域内 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    4.2 对象作用域

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

    {
    	String s = new String("a string")
    }
    // 作用域终点
    
    • 1
    • 2
    • 3
    • 4

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

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

    5.类的创建

    5.1 类

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

    5.2 字段

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

    5.3 基本类型默认值

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

    基本类型初始值
    booleanfalse
    char\u0000(null)
    byte(byte)0
    short(short)0
    int0
    long0L
    float0.0f
    double0.0d

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

    5.4 方法使用

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

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

    // 方法体
    
    • 1

    }

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

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

    6.程序编写

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

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

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

    7.小试牛刀

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

    public static void main(String[] args) {
        
    }
    
    • 1
    • 2
    • 3

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

    8.编码风格

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

    —PS:推荐安装阿里编码规范
    在这里插入图片描述

  • 相关阅读:
    探索可观测性:AIOps中的时序数据应用
    正点原子stm32F407学习笔记6——外部中断实验
    404. 左叶子之和
    公司日常业务开发中,我是如何基于antd定制属于自己的主题
    企业级用户该如何选购腾讯云服务器配置?
    CSS中的 5 类常见伪元素详解!
    ssm冬奥会志愿者报名系统毕业设计源码241154
    Java集合面试题(总结最全面的面试题)
    iNFTnews | 从5G到6G:创新与颠覆的竞赛
    【用户画像】Redis的简介和安装
  • 原文地址:https://blog.csdn.net/JustDI0209/article/details/126427828