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 类设计技巧(略)

最新文章

  1. jQuery的DOM操作实例(3)——创建节点&&编写一个弹窗
  2. Excel自文本导入内容时如何做到单元格内换行
  3. 类UNIX操作系统概念
  4. iOS - CAEmitterLayer 学习笔记一
  5. Objective-C 链式语法的实现
  6. 关于allow_url_fopen的设置与服务器的安全
  7. HiKey连接
  8. css3新属性的总结
  9. Android 国际化字符串资源,各语言目录表及从字符串资源文件读字符方法
  10. JQuery 判断ie7|| ie8
  11. 架构漫谈:自己开发一个Log框架
  12. NOI2004郁闷的出纳员
  13. flagr 数据库配置
  14. 阻止Java反编译蛋疼方法
  15. 2月第3周业务风控关注|上海网信办复测23个被约谈APP 涉及1号店、小红书等
  16. wagger的展示路径修改
  17. 五:python 对象类型详解二:字符串(上)
  18. Tarjan-割点&桥&双连通
  19. java基础---->java注解的使用(一)
  20. springcloud-Feign基础使用

热门文章

  1. Redission加锁解锁流程
  2. 同事内推的那位Linux C/C++后端开发同学面试没过......
  3. 安卓控件RecycleView的简单使用
  4. Java基础-封装和继承
  5. Spring学习日记03_IOC_属性注入_集合类型属性
  6. 05 jumpserver权限管理
  7. 让你发布的nuget包支持源代码调试
  8. HDU 4438 Hunters 区域赛水题
  9. Blazor 组件入门指南
  10. Spring:Spring的各jar包依赖及作用详解