【阅读笔记】Java核心技术卷一 #2.Chapter4
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(...)调用另一个构造器
类构造顺序
- 在类第一次加载的时候,将会进行静态域的初始化:所有的静态初始化语句以及静态初始化块都将依照类定义的顺序执行。
- 对象构造
- 所有数据域被初始化为默认值;
- 按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块;
- 如果构造器第一行调用了第二个构造器,则执行第二个构造器主体;
- 执行这个构造器的主体。
finalize方法
4.7 包
- 类的路径必须与包名匹配
编译器在编译源文件的时候不检查目录结构。例如,假定有一个源文件开头有下列语句 :
package com.myconpany;
即使这个源文件没有在子目录com/mycompany下,也可以进行编译。如果它不依赖于其他包,就不会出现编译错误。
但是,最终的程序将无法运行,除非先将所有类文件移到正确的位置上。如果包与目录不匹配,虚拟机就找不到类。
4.8 类路径
类路径(classpath)所列出的目录和归档文件是搜寻类的起始点
- 虚拟机定位类的查找步骤:(虚拟机拿到的class文件里是全限定类名)
- 查看存储在 jre/lib 和 jre/lib/ext 目录下的归档文件中所存放的系统类文件
- 在classpath包含的路径下查找
- 编译器定位一个被引用的类的查找步骤:
- 首先确定包含这个类的包:逐一查找import的包(java.lang包被默认import)和当前包;如果找到了一个以上的类,就会产生编译错误(import顺序无关)
- 若源文件是否比类文件新,那么源文件就会被自动地重新编译
4.9 文档注释(略)
4.10 类设计技巧(略)
【阅读笔记】Java核心技术卷一 #2.Chapter4的更多相关文章
- 【阅读笔记】Java核心技术卷一 #0
这是一篇备忘性质的读书笔记,仅记录个人觉得有用的知识点 本文作为一个目录索引,部分章节跳过 吐槽:此书中文翻译有不少地方不太通顺,这种情况我要把英文版对应的部分也读一遍才能明白(说实话,英文里的从句表 ...
- java核心技术卷一
java核心技术卷一 java基础类型 整型 数据类型 字节数 取值范围 int 4 +_2^4*8-1 short 2 +_2^2*8-1 long 8 +_2^8*8-1 byte 1 -128- ...
- 对《Java核心技术卷一》读者的一些建议
<Java核心技术卷一>是唯一可以和<Java编程思想>媲美的一本 Java 入门书.单从技术的角度来看,前者更好一些.但上升到思想层面嘛,自然后者更好,两者的偏重点不同. 思 ...
- 读《java核心技术卷一》有感
过去一个多月了吧.才囫囵吞枣地把这书过了一遍.话说这书也够长的,一共706页.我从来不是个喜欢记录的人,一直以来看什么书都是看完了就扔一边去,可能有时候有那么一点想记录下来的冲动,但算算时间太紧,很多 ...
- 【阅读笔记】Java核心技术卷一 #6.Chapter8
8 泛型程序设计 8.1 为什么要使用泛型程序设计 类型参数(type parameters)(E.T.S...) 通配符类型(wildcard type)(?) 注意这两者用法用处并不同. 8.2 ...
- 【阅读笔记】Java核心技术卷一 #5.Chapter7
7 异常.断言和日志 在 Java 中,如果某个方法不能够采用正常的途径完整它的任务,就可以通过另外一个路径退出方法. 在这种情况下,将会立刻退出,并不返回任何值,而是抛出(throw)一个封装了错误 ...
- 【阅读笔记】Java核心技术卷一 #4.Chapter6
6 接口.lambda 表达式与内部类 6.1 接口 6.1.1 接口概念 接口绝不能含有实例域:但在接口中可以定义常量,被自动设为 public static final 接口中的所有方法自动地属于 ...
- 【阅读笔记】Java核心技术卷一 #3.Chapter5
5 继承 5.1 类.超类和子类 5.1.1 定义子类 超类(superclass)和子类(subclass), 基类(base class)和派生类(derived class), 父类(paren ...
- 【阅读笔记】Java核心技术卷一 #1.Chapter3
3 Java的基本程序设计结构 3.1 一个简单的 Java 应用程序(略) 3.2 注释(略) 3.3 数据类型 8种基本类型 byte,short,int,long float,double ch ...
随机推荐
- 用vue ui创建的项目怎么关闭eslint校验
在Vue Cli的控制面板找到配置-ESLint configuration,然后关闭保存时检查就可以了
- 测试开发:推荐一款阿里最新 Python 自动化开源工具!
大家好,我是麦小米,是狂师老师全栈测开训练营中的一名学员. 如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过 xc ...
- 3、oracle表空间及索引操作
3.1.创建表空间和用户授权: 1.创建表空间: CREATE TABLESPACE <表空间名> LOGGING DATAFILE '<存放路径>' SIZE 50M AUT ...
- 19、高可用工具heartbeat介绍
19.1.heartbeat的作用: heartbeat的官方网站地址是:http://linux-ha.org/wiki/Main_Page 19.2.heartbeat工作原理: 19.3.hea ...
- Pptx的多路径形状转为WPF的Path
本文是将演示如何解析pptx文件的多路径的形状转换到WPF,绘制多个Shape的Path Shape Path 这是Pptx的[标注:弯曲曲线(无边框)]形状的OpenXml定义部分: <cal ...
- SonarQube 启动无报错但是拒绝访问的解决过程及方案
启动sonarqube [sonar_user@Sonnarqube-dev linux-x86-64]$ ./sonar.sh start 查看网页: 排错步骤 第一步输入启动过程命令查看启动信息 ...
- 资源:CentOS下载地址资源
新版本系统镜像下载(当前最新是CentOS 7.4版本) CentOS官网 官网地址 http://isoredirect.centos.org/centos/7.4.1708/isos/x86_64 ...
- [心得体会]mysql复习
1. 进入企业需要注意的事情 (1) 查看测试服和本地的mysql版本是否一致(2) 确认sql_mode是否和线上版本一致 show VARIABLES LIKE 'sql_mode'; (3) m ...
- 线程中的yield()
属于本地方法 /** * A hint to the scheduler that the current thread is willing to yield * its current use o ...
- WPF DataGrid RowDetailsTemplate 鼠标滚动通知到 DataGrid 滚动
前言:上次做了数据驱动UI虽然已经实现,但是在明细中鼠标滚动并不能带动外部 DataGrid 滚动条滚动,上文地址 https://www.cnblogs.com/luguangguang/p/14 ...