【阅读笔记】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 ...
随机推荐
- 合宙模块LUA相关资料汇总
1. 目录 1. 目录 [2. LUA二次开发](#2. LUA二次开发) 2.1 [新手教程](#2.1 新手教程) 2.2 [进阶教程](#2.2 进阶教程) 2.3 [LUA开发环境](#2.3 ...
- java并发编程JUC第十二篇:AtomicInteger原子整型
AtomicInteger 类底层存储一个int值,并提供方法对该int值进行原子操作.AtomicInteger 作为java.util.concurrent.atomic包的一部分,从Java 1 ...
- 【模拟7.29】大佬(概率期望DP)
首先根据数据范围,可以判断基本上是n^2的复杂度 通过分析我们发现每一次都可以从m个数中任意选,既然任意选,那么此时的概率的分母就是不变的,然而题中涉及的是某一段的最大值,所以我们按套路假设 f[i] ...
- C#设计模式学习之装饰者模式
写这个随笔时,其实对该模式理解的并不是十分透彻.在此想到什么写什么,希望对自己对他人有所帮助. 装饰者模式主要是应用继承和组合的思想,极大的实现了程序的多态,使得的程序有了更高的扩展性. 第一个基础例 ...
- 『无为则无心』Python基础 — 10、Python字符串的格式化输出
目录 1.什么是格式化输出 2.Python格式化输出的五种方式 方式一:字符串之间用+号拼接 方式二:print()函数可同时输出多个字符串 方式三:占位符方式 方式四:f格式化方式(推荐) 方式五 ...
- C#WebApi的创建与发布
VS中新建项目-Web-ASP.NET Web应用程序 然后确定,选择空模版就可以了,勾上Webapi(也可以选择webapi模板,这样生成的文件比较多) 添加好之后Controllers和Model ...
- 资源:jenkins下载路径
Jenkins版本下载路径 所有版本:http://mirrors.jenkins.io/war/
- 1、springcloud gateway
参考: https://www.cnblogs.com/babycomeon/p/11161073.html 1.springcloud gateway1.1.依赖-初体验https://www.cn ...
- 如何用Redis统计独立用户访问量
拼多多有数亿的用户,那么对于某个网页,怎么使用Redis来统计一个网站的用户访问数呢? 使用Hash 哈希是Redis的一种基础数据结构,Redis底层维护的是一个开散列,会把不同的key映射到哈希表 ...
- [小技巧] Windows7 半角全角快捷键 修改方法
From : http://blog.sina.com.cn/s/blog_87ab67b10100x3ww.html 转载说明:在浏览器下我们可以使用空格下翻一页,Shift + 空格上翻一页. 但 ...