JavaShuo
栏目
标签
Java核心技术卷1——第四章下
时间 2019-11-12
标签
java
核心
技术
第四
栏目
Java
繁體版
原文
原文链接
面向对象设计概述
结构化程序设计
OOP
web浏览器的例子
类
对象
识别类
类之间关系
使用现有类
对象和对象变量
Date类
GregorianCalendar类
更改器方法和访问器方法
用户自定义类
一个Employee类
最简单的类
构造器
方法
域
多个源文件的使用
源文件
.java
能够包含多个class
只能有一个public class
且该class名与源文件名相同
习惯性一个class一个源文件
编译源代码
通配符匹配
javac Employee*.java
隐式编译调用的class
javac EmployeeTest.java
会自动从新编译新的.java
解析Employee类
类方法
构造器
方法
关键字public
任何类的任何方法均可以调用这些方法
实例域
关键字private
确保只有Employee类自身的方法可以访问这些实例域
封装性好
可包含属于某个类的实例域
好比String类
从构造器开始
与类同名
构造类对象时被运行
初始化实例域(初始状态)
伴随new操做符的执行被调用
C++:Employee number007("Janes Bond",10000,1950,1,1);//可不用new
不能对已存在的对象调用构造器
没有返回值
不要定义与实例域重名的局部变量
隐式参数和显示参数
隐式参数
方法名前的对象名
this
可明显区分实例域和局部参数
显示参数
方法名后的参数
封装的优势
getxxx访问器方法
只返回实例域值
域访问器
类应提供
一个私有的数据域
一个公有的域访问器方法
一个公有的域更改器方法
比简单的公有数据域复杂些
好处:
能够改变内部实现,仅改变类方法
更改器方法能够执行错误检查
不要返回引用可变对象的访问器方法
会破坏封装性
返回的对象引用可改变引用同一对象的私有状态
应该返回其克隆
return (Object)obj.
clone()
;//Object,obj看具体状况
基于类的访问权限
方法能够访问所调对象的私有数据
方法能够访问所属类的全部对象的私有数据
私有方法
公有数据危险——>私有数据
方法
绝大多数公有
特殊状况私有
计算代码划分红多个独立的辅助方法
辅助方法不该该成为公有接口的一部分
实现机制紧密/须要特别的调用次序
私有方法不被外部类操做调用,可删除
公有方法不能随意删除
Final实例域
构建对象时必须初始化
构造器执行后,必须已被设置
后面操做不能修改值
可变类用final定义,其状态仍是能够改变
仅对象引用为常量
静态域与静态方法
static修饰
静态域
每一个类只有一份
类域
静态常量
static final
公有常量
public final
不怕被类对象修改
静态方法
不能向对象实施操做的方法
没有隐式参数
不能访问实例域
只能访问自身类中的静态域
使用状况
一个方法不须要访问对象状态,其参数都是经过显示参数提供
一个方法只需访问类的静态域
factory方法
NumberFormat类
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
NumberFormat percentFormatter = NumberFormat.getPercentIntence();
double x = 0.1;
System.out.println(currencyFormatter.format(x));//$0.10
System.out.println(percentFormatter.format(x));//10%
使用factory方法产生不一样风格的格式对象
没法命名构造器时使用
须要不一样名字
须要改变构造器返回对象类型
main方法
方法参数
值传递
接收的是调用者提供的值
引用传递
接收的是调用者提供的变量的地址
一个方法能够修改传递引用所对应的变量值,
不能修改传递值调用所对应的变量值
Java程序设计语言老是采用值传递
对象引用可调用方法改变值
但依旧是值传递,对象引用的拷贝
对象构造
多种编写构造器的方式
重载
特征:
多个构造器
多个方法,相同
方法名
,不一样
参数类型
方法的签名:方法名,参数类型
默认域初始化
自动赋默认值
局部变量必须初始化
默认构造器
没有参数的构造器
没有编写构造器,提供默认构造器
默认构造器将实例域设置默认值
提供了至少一个构造器,没有默认构造器,视为不合法
显示域初始化
不一样构造器采用多种形式设置类的实例域的初始状态
执行构造器前先赋值,但愿全部构造器对某一特定实例域赋相同的值
初始值不必定是常量
参数名
前面加a区分
一样的名字屏蔽,用this区分
调用另外一个构造器
this(...)
放在构造器第一句,将调用同一类的另外一个构造器
对公共构造器代码部分只编写一次便可
初始化块
初始化数据域
在构造器赋值
声明中赋值
初始化块
静态代码块在类加载的时候运行
用static块打印”Hello world“,结尾加System.exit(0),可不用main函数
int nextInt(int n);//返回0-n-1之间的随机数
对象析构和finalize方法
析构器(C++)
放置一些当对象再也不使用时须要执行的清理代码
好比回收分配给对象的存储空间
Java不支持(有自动的垃圾回收器)
finalize方法
在垃圾回收器清除对象前调用
System.runFinalizersOnExit(true)能确保finalize方法在Java关闭前调用(不安全)
使用Runtime.addShutdownHook添加“关闭钩”
某个资源须要在使用完毕马上被关闭——人工管理
应用相似dispose或close的方法完成相应的清理操做
包
组织类
一个类能够访问
所属包全部类
其余包公有类
import java.util.*(访问util包全部类)
分隔代码库
标准java包
java
javax
使用包的主要缘由是确保类名的惟一性
还需保证包名惟一
静态导入
import导入包
import导入静态方法
import导入静态域
import static java.lang.System.*;//可以使用System类的静态方法和静态域,不用加类前缀,out.print("hello");
import static java.lang.System.out;//导入特定方法或域
将类放在包中
package com.aaa.bbb;//没有写,放默认包(defaulf package)
包名
会有与包名匹配的子目录
包中文件
源文件.java
类文件.class
基目录
.java(默认包)
.class
com/
core/
.java(包com.core)
.class
从基目录编译和运行类
编译器——.java
解释器——.class
包的做用域
修饰符
public
可被任意类使用
private
只能被定义他们的类使用
默认
可被同一包中的全部方法访问
禁止加载用户自定义的、包名以java.开始的类
可用包密封机制解决自定义类的密封性
类路径
类路径必须与包名匹配
类存储在文件系统的子目录
类文件也能够存储到JAR文件(Java归档)中,
JAR文件中可包含多个压缩形式的类文件和子目录,既节省
又改善性能
程序用到第三方的库文件时一般会给出一个或多个须要包含JAR文件
JDK也提供许多JAR文件,如jre/lib子目录下有数千个类库文件
JAR文件使用ZIP格式组织文件和子目录。可使用全部ZIP实用程序查看内部rt.jar以及其余的JAR文件
使类被多个程序共享,须要:
把类放到一个目录
/home/user/classdir/包/类
将JAR文件放在一个目录
/home/user/archives
设置类路径class path(全部包含类文件的路径的集合)
UNIX中,类路径中的不一样项目之间用
:
分隔
Windows中,用
;
分隔
.表示当前路径
类路径包括
基路径/home/user/classdir或c:\classes;
当前目录.
JAR文件/home/suer/archives/archive.jar或c:\archives\archive.jar
JAVA SE 6
可在JAR文件目录中指定通配符
/home/user/classdir:.:/home/suer/archives/'*'或者c:\classdir;.;c:\archives\*
但在UNIX中禁用*,以防止shell命令进一步扩展
设定类路径
文档注释
javadoc
由源文件生成一个HTML文档
/**开始的注释*/结束
抽取信息
包
公有类与接口
公有的和受保护的方法
公有的和受保护的域
标记@
@自由格式文本
第一句:概要性句子
概要页
可使用html修饰符
不要用<h1><hr>
图片放在doc-files中
类注释
必须在import以后,类定义以前
/**
*/
public class xxx{}
方法注释
放在所描述的方法以前
除通用标记,还能够用
@param variable description
对当前方法的param部分添加一个条目
可占据多行,可使用HTML标记
一个方法的全部@param必须放一块儿
@return description
对方法添加return部分
可占据多行,可使用HTML标记
@throws class description
添加一个注释,用于表示这个方法有可能抛出异常
/**
*Raises the salary of an employee
*@param byPercent the percentage by which to raise the salary(e.g. 10 =10%)
*@return the amount of the raise
*/
public double raiseSalary(double byPercent){
double raise = salsry*byPercent/100;
salary += raise;
return raise;
}
域注释
只需对公有域(静态常量)创建文档
/**
*The "Hearts" card suit
*/
public static final int HEARTS = 1;
通用注释
@author name
产生一个做者条目
可以使用多个@author
@version text
产生一个“version”条目
text是对当前版本的任何描述
@deprecated text
对类、方法、变量添加一个再也不使用的注释
@see和@link
可使用超级连接、连接到javadoc文档的相关部分或外部文档
@see reference
在see also 部分增长一个超级连接
能够用于类中
能够用于方法
连接到方法
@see com.core.Employee#raiseSalary(double)
@see <a href="www.baidu.com">baidu</a>
@see "Core Java 2 volume 2"
指向其余类或方法
{@link package.class#feature label}
包与概述注释
能够直接将类、方法和变量的注释放置在Java源文件中
包注释要在每一个包目录中添加一个单独的文件
方法一:以package.html命名的HTML文件,在<body>...</body>之间的全部文件都会被抽取出来
方法二:以package-info.java命名的Java文件。以/**和*/界定,跟随在一个包语句以后
为全部源文件提供一个概述性的注释。
放在名为overview.html的文件中,位于包含全部源文件的父目录中。标记<body>...</body>之间的全部文本将被抽取出来
在导航栏选择“Overview”时,就会显示这些注释内容
注释的抽取
假设HTML文件将放在目录docDirectory下
执行如下步骤:
切换到包含想要生成文档的源文件目录
若是是一个包,运行
javadoc -d docDirectory nameOfPackage
或对于多个包生成文档,运行:
javadoc -d docDirectory nameOfPackage1 nameOfPackage2...
若是文件在默认包中,运行
javadoc -d docDirectory *.java
为标准类添加超连接
javadoc -link
http://java.sun.com
须要进一步定制
非html文档
自定义doclet
搜索一组源程序文件
DocCheck
类设计技巧
必定将数据设计为私有
必定对数据初始化
不要在类中使用过多的基本数据类型
不是全部的域都须要独立的域访问器和域更改器
使用标准格式进行类的定义
公有访问特性部分
包做用域访问特性部分
私有访问特性部分
每部分应该列出
实例方法
静态方法
实例域
静态域
将职责过多的类进行分解
类名和方法名要可以体现他们的职责
相关文章
1.
Java核心技术卷一第四章思维导图+笔记
2.
Java核心技术卷一第四章思惟导图+笔记
3.
《Java核心技术卷1》读书笔记-第三章
4.
java核心技术卷1第14章----并发
5.
java核心技术卷1知识点
6.
【读】Java核心技术卷1
7.
JAVA核心技术卷1 Day2
8.
《Java核心技术卷1》拾遗
9.
JAVA核心卷第十章
10.
java 核心技术 卷一 第10版
更多相关文章...
•
XML 相关技术
-
XML 教程
•
Hibernate的核心接口
-
Hibernate教程
•
三篇文章了解 TiDB 技术内幕——说存储
•
三篇文章了解 TiDB 技术内幕 —— 说计算
相关标签/搜索
java核心技术:卷1
JAVA核心技术 卷1
Java核心技术卷一
Java核心技术 卷Ⅰ
Java核心技术卷
java核心技术卷Ⅰ
Java核心技术
Java核心技术第十版·卷1
Oracle核心技术
Java核心技术 I
Java
PHP 7 新特性
Hibernate教程
MyBatis教程
技术内幕
java
注册中心
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
[最佳实践]了解 Eolinker 如何助力远程办公
2.
katalon studio 安装教程
3.
精通hibernate(harness hibernate oreilly)中的一个”错误“
4.
ECharts立体圆柱型
5.
零拷贝总结
6.
6 传输层
7.
Github协作图想
8.
Cannot load 32-bit SWT libraries on 64-bit JVM
9.
IntelliJ IDEA 找其历史版本
10.
Unity3D(二)游戏对象及组件
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
Java核心技术卷一第四章思维导图+笔记
2.
Java核心技术卷一第四章思惟导图+笔记
3.
《Java核心技术卷1》读书笔记-第三章
4.
java核心技术卷1第14章----并发
5.
java核心技术卷1知识点
6.
【读】Java核心技术卷1
7.
JAVA核心技术卷1 Day2
8.
《Java核心技术卷1》拾遗
9.
JAVA核心卷第十章
10.
java 核心技术 卷一 第10版
>>更多相关文章<<