4 对象和类

4.1 面向对象程序设计概述(略)

4.2 使用预定义类

java.time.LocalDate

static LocalDate now();
static LocalDate of(int year, int month, int dayOfMonth);
int getYear();
int getMonthValue();
int getDayOfMonth();
DayOfWeek getDayOfWeek();
LocalDate piusDays(int n);
LocalDate minusDays(int n);

4.3 用户自定义类

一个方法可以访问所属类的所有对象private数据

final一般修饰基本类型或者不可变对象(如String),若final修饰可变对象,例如:

private final StringBuilder evaluations;

则表示存储在evaluations中的对象引用不会再引用另一个StringBuilder。

即可以在构造函数中初始化,并且无法再次赋值。但是可以调用append等方法

System类有一个方法setOut()可以修改out,因为setOut()是一个Native Method,不是Java实现的,可以绕过存取控制机制

public class System
{
...
public static final PrintStream out = ...;
...
}

4.4 静态域与静态方法

静态方法只能访问类的静态域;

4.5 方法参数

The Java programming language always uses call by value.对象引用是按值传递的

4.6 对象构造

方法签名包括方法名和参数类型,不包括返回值

显示域初始化:在执行构造器之前,先执行赋值操作

this(...)调用另一个构造器

类构造顺序

  • 在类第一次加载的时候,将会进行静态域的初始化:所有的静态初始化语句以及静态初始化块都将依照类定义的顺序执行。
  • 对象构造
    1. 所有数据域被初始化为默认值;
    2. 按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块;
    3. 如果构造器第一行调用了第二个构造器,则执行第二个构造器主体;
    4. 执行这个构造器的主体。

finalize方法

4.7 包

  • 类的路径必须与包名匹配

编译器在编译源文件的时候不检查目录结构。例如,假定有一个源文件开头有下列语句 :

package com.myconpany;

即使这个源文件没有在子目录com/mycompany下,也可以进行编译。如果它不依赖于其他包,就不会出现编译错误。

但是,最终的程序将无法运行,除非先将所有类文件移到正确的位置上。如果包与目录不匹配,虚拟机就找不到类。

4.8 类路径

类路径(classpath)所列出的目录和归档文件是搜寻类的起始点

  • 虚拟机定位类的查找步骤:(虚拟机拿到的class文件里是全限定类名)

    1. 查看存储在 jre/lib 和 jre/lib/ext 目录下的归档文件中所存放的系统类文件
    2. 在classpath包含的路径下查找
  • 编译器定位一个被引用的类的查找步骤:
    1. 首先确定包含这个类的包:逐一查找import的包(java.lang包被默认import)和当前包;如果找到了一个以上的类,就会产生编译错误(import顺序无关)
    2. 若源文件是否比类文件新,那么源文件就会被自动地重新编译

4.9 文档注释(略)

4.10 类设计技巧(略)

【阅读笔记】Java核心技术卷一 #2.Chapter4的更多相关文章

  1. 【阅读笔记】Java核心技术卷一 #0

    这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表 ...

  2. java核心技术卷一

    java核心技术卷一 java基础类型 整型 数据类型 字节数 取值范围 int 4 +_2^4*8-1 short 2 +_2^2*8-1 long 8 +_2^8*8-1 byte 1 -128- ...

  3. 对《Java核心技术卷一》读者的一些建议

    <Java核心技术卷一>是唯一可以和<Java编程思想>媲美的一本 Java 入门书.单从技术的角度来看,前者更好一些.但上升到思想层面嘛,自然后者更好,两者的偏重点不同. 思 ...

  4. 读《java核心技术卷一》有感

    过去一个多月了吧.才囫囵吞枣地把这书过了一遍.话说这书也够长的,一共706页.我从来不是个喜欢记录的人,一直以来看什么书都是看完了就扔一边去,可能有时候有那么一点想记录下来的冲动,但算算时间太紧,很多 ...

  5. 【阅读笔记】Java核心技术卷一 #6.Chapter8

    8 泛型程序设计 8.1 为什么要使用泛型程序设计 类型参数(type parameters)(E.T.S...) 通配符类型(wildcard type)(?) 注意这两者用法用处并不同. 8.2 ...

  6. 【阅读笔记】Java核心技术卷一 #5.Chapter7

    7 异常.断言和日志 在 Java 中,如果某个方法不能够采用正常的途径完整它的任务,就可以通过另外一个路径退出方法. 在这种情况下,将会立刻退出,并不返回任何值,而是抛出(throw)一个封装了错误 ...

  7. 【阅读笔记】Java核心技术卷一 #4.Chapter6

    6 接口.lambda 表达式与内部类 6.1 接口 6.1.1 接口概念 接口绝不能含有实例域:但在接口中可以定义常量,被自动设为 public static final 接口中的所有方法自动地属于 ...

  8. 【阅读笔记】Java核心技术卷一 #3.Chapter5

    5 继承 5.1 类.超类和子类 5.1.1 定义子类 超类(superclass)和子类(subclass), 基类(base class)和派生类(derived class), 父类(paren ...

  9. 【阅读笔记】Java核心技术卷一 #1.Chapter3

    3 Java的基本程序设计结构 3.1 一个简单的 Java 应用程序(略) 3.2 注释(略) 3.3 数据类型 8种基本类型 byte,short,int,long float,double ch ...

随机推荐

  1. Windows内核开发-Windows内部概述-1-

    Windows内部概述-1- 进程: 进程是一个程序的运行实例的控制和管理对象.一般的程序员所说进程运行,这样的说法是不对的,因为进程不能运行程序,进程只能管理该程序运行.线程才是真正的执行代码的东西 ...

  2. excel VBA构造正则函数(双参数)

    Function zhengze(ze As String, Rng As Range)    Set regx = CreateObject("vbscript.regexp") ...

  3. 7.1、controller节点配置

    0.配置openstack版本yum源: yum install centos-release-openstack-rocky 1.安装 OpenStack 客户端: yum install pyth ...

  4. 10、基本数据类型(set)

    10.1.集合: 1.集合元素用大括号括起来,用逗号分割每个元素 2.集合的特点: (1)集合元素的数据类型只能是不可变数据类型,"列表"."字典"." ...

  5. Kafka:Springboot整合Kafka消息队列

    本文主要分享下Spring Boot和Spring Kafka如何配置整合,实现发送和接收来自Spring Kafka的消息. 项目结构 pom依赖包 <?xml version="1 ...

  6. ExtJs4学习(四):Extjs 中id与itemId的区别

       为了方便表示或是指定一个组件的名称,我们通常会使用id或者itemId进行标识命名.(推荐尽量使用itemId,这样可以减少页面唯一标识而产生的冲突) id:   id是作为整个页面的Compo ...

  7. log4j配置相对路径实现日志记录

    从网上简单搜索了一下,发现有三种介绍的方法.总结在这里1. 解决的办法自然是想办法用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如: log4j.appender ...

  8. buu [BJDCTF2020]easyrsa

    下载附件是一个py文件,打开之后,发现是常规的rsa,不过有几个函数不知道. 这里记录一下, Fraction(a,b) 相当于 a/b Derivative(f(x),x) : 当x='x'时,f( ...

  9. Python 的上下文管理器是怎么设计的?

    花下猫语:最近,我在看 Python 3.10 版本的更新内容时,发现有一个关于上下文管理器的小更新,然后,突然发现上下文管理器的设计 PEP 竟然还没人翻译过!于是,我断断续续花了两周时间,终于把这 ...

  10. solr_hacktool

    https://github.com/mustblade/solr_hacktool 最近复现了几个solr漏洞,没找到现成工具,就心血来潮写了个小玩具.没了.