【阅读笔记】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 ...
随机推荐
- Java JDK 动态代理(AOP)使用及实现原理分析
一.什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 代理模式U ...
- Feign Client 原理和使用
Feign Client 原理和使用 一块石头 公众号:好奇心森林 关注他 创作声明:内容包含虚构创作 6 人赞同了该文章 最近一个新项目在做后端HTTP库技术选型的时候对比了Spring We ...
- Kubernetes自动伸缩pod-HPA
在运维中,虽然能预先知道负载何时会飙升,或者如果负载的变化是较长时间内逐渐发生的,手动扩容也是可以接受的,但指望靠人工干预来处理突发而不可预测的流量增长,仍然不够理想. 幸运的是,Kubernetes ...
- VSCode 使用 Code Runner 插件无法编译运行文件名带空格的文件
本文同时在我的博客发布:VSCode 使用 Code Runner 插件无法编译运行文件名带空格的文件 - Skykguj 's Blog (sky390.cn) 使用 Visual Studio C ...
- shell 重定向以及文件描述符
1.对重定向的理解 Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向:从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思. 输入方向就是数据从哪里流向程序.标准输入 ...
- Linux文件目录结构详解 (转)
整理自<鸟哥的私房菜> 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能, ...
- ctf实验吧Once More
题目链接:http://ctf5.shiyanbar.com/web/more.php 思路分析:显然是后台逻辑代码. 1.ereg函数有漏洞,可以使用%00截断,这个就做笔记了好吧.这个函数大致意思 ...
- nmon工具安装及nmon analyser的使用
步骤一:下载nmon及nmon analyser工具 nmon:http://nmon.sourceforge.net/pmwiki.php 根据自己系统的版本下载相应的版本即可 nmon analy ...
- Linux下使用Ansible处理批量操作
Ansible介绍: ansible是一款为类unix系统开发的自由开源的配置和自动化工具.它用python写成,类似于saltstack和puppet,但是不同点是ansible不需要再节点中安装任 ...
- asp.net core 视图组件(转)
介绍视图组件 视图组件是 ASP.NET Core MVC 中的新特性,与局部视图相似,但是它们更加的强大.视图组件不使用模型绑定,只取决于调用它时所提供的数据.视图组件有以下特点: 渲染一个块,而不 ...