Java核心技术之类与对象
知识点
1. 一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。new操作符的返回值也是一个引用。
2. 局部变量不会自动地初始化为null,而必须用过调用new或将他们设置为null进行初始化。最好显示的初始化成员变量
3. 更改器方法更改调用这个方法的对象,相反,访问器方法只访问对象而不修改对象
4. 注意不要编写返回引用可变对象的访问器方法(即getter方法不要直接返回一个对象,而是要返回这个对象的clone对象,return object.clone() 而不是return object,否则返回的是这个对象的引用,会破坏封装性)。
5. 一个方法可以访问所属类的所有对象的私有数据。
Class A{
private String name;
public Boolean equal(A other){
return name.equal(other.name);
}
}
6. 成员变量为final时,必须确保构造器执行后这个域的值被设置,且后面的操作中不能修改它。如果是对象变量,则是引用不能变,但这个对象可以变
7. 可以认为静态方法没有this参数
8. main方法常用于本类的单元测试
9. 当方法的参数是类对象时,实际上是按值传递的。但是方法参数引用了传递的对象地址。所以可以通过参数变量修改原对象的内部属性,而不能修改原对象的引用。
10. 文档注释
文档注释以/**开始,以*/结束。其中可以用@标记、可以使用html语言。类注释必须放在import语句之后,类定义之前。方法注释必须放在所描述的方法之前,可用@param,@return,@throws。域注释,一般只为静态常量建立文档。要想产生包注释,就需要在每一个包目录中添加一个单独文件(package.html或package-info.java)
一定要使用#而不是.来分割类名与方法名,或类名与变量名
通用注释@author,@version,@since,@deprecated,@see(用于类或方法注释中,可增加超链接),@link(在任意位置指向其他类或方法的超链接)
11. Date与localDate
Date类用来表示时间点,LocalDate(JDK8)是日历表示法(推荐用LocalDate)
LocalDate.now()构造一个表示当前日期的对象(静态工厂方法,而不要用new)
LocalDate.of(int year, int month, int day)构造一个表示给定日期的对象
LocalDate.plusDays(int n),LocalDate.minusDays(int n)生成当前日期之后n天的日期
12. 类设计
1)保证数据私有
2)对数据初始化
3)不要在类中过多使用基本类型
4)不是所有的域都需要独立的域访问器和域更改器(即getter和setter)
5)把职责过多的类进行分解
6)类名和方法名要能够体现它们的职责
7)优先使用不可变的类(即合理使得没有方法能修改对象的状态,而是返回一个修改状态后的新对象)
Java核心技术之类与对象的更多相关文章
- Java核心技术卷阅读随笔--第4章【对象与类】
对 象 与 类 4.1 面向对象程序设计概述 面向对象程序设计(简称 OOP) 是当今主流的程序设计范型, 它已经取代了 20 世纪 70 年代的" 结构化" 过程化程序设计开发技 ...
- Java核心技术点之泛型
1. Why ——引入泛型机制的原因 假如我们想要实现一个String数组,并且要求它可以动态改变大小,这时我们都会想到用ArrayList来聚合String对象.然而,过了一阵,我们想要实现一个大小 ...
- Java核心技术点之集合框架
1. 概述 Java集合框架由Java类库的一系列接口.抽象类以及具体实现类组成.我们这里所说的集合就是把一组对象组织到一起,然后再根据不同的需求操纵这些数据.集合类型就是容纳这些对象的一个容 ...
- Java核心技术点之内部类
1. 为什么要使用内部类 内部类就是定义在一个类内部的类,那么为什么要使用内部类呢?主要原因有以下几点:第一,内部类中定义的方法能访问到它所在外部类的私有属性及方法:第二,外部类无法实现对同一 ...
- Java核心技术点之动态代理
本篇博文会从代理的概念出发,介绍Java中动态代理技术的使用,并进一步探索它的实现原理.由于个人水平有限,叙述中难免出现不清晰或是不准确的地方,希望大家可以指正,谢谢大家:) 一.概述 1. 什么是代 ...
- Java基础语法<七> 对象与类
笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 1. 类之间的关系 依赖 users– a 是一种最明显的.最常见的关系.如果一个类的方法操作另一个类的对象 ...
- java核心技术之流与文件
InputStream和OutputStream构成了输入/输出类层次结构的基础.用于按字节进行读写.而与之处在同一等级的Reader/Writer同样作为抽象类定义了用于对字符进行读取的类层次结构, ...
- Java核心技术第五章——1.类、超类、子类(2)
继上一篇Java核心技术第五章——1.类.超类.子类(1) 6.重载解析 假如调用ClassName.Method(args) 1.编译器列出类ClassName所有名为Method的方法. 2.编译 ...
- 《Java核心技术卷1》拾遗
之前对Java的基础知识有过学习,现在开始学习<Java核心技术卷1>,将一些新学的知识点,做简要记录,以备后续回顾: 1.double (1)所有的“非数值”都认为是不相同的 if(x= ...
随机推荐
- UNITY3D 2D物流流体插件下载|Liquid Physics 2D
制作类似<鳄鱼小顽皮爱洗澡>游戏的必备插件 下载地址: https://item.taobao.com/item.htm?spm=0.7095261.0.0.47411debZFbEUn& ...
- Reportviewer中的函数使用——打印当前日期并格式化
如2017-10-23 12:20:20 通过DateTime.Now.ToString("yyMMddHHmmss")变为 20171023122020字符串
- HDU 3974 Assign the task(DFS序+线段树单点查询,区间修改)
描述There is a company that has N employees(numbered from 1 to N),every employee in the company has a ...
- 【转】以太网最大帧和最小帧、MTU
根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大帧长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的帧开始定界符,具体就是:7字节前导同步码 + ...
- 【linux】下Apache无法启动(8080端口被占用)
Linux下8080端口被占用,apache无法启动. 打开终端输入netstat -lnp|grep 8080 发现竟然是tcp6 占用里,因此ipv6启用占用了端口. 1.打开/etc/sysct ...
- IEDriver executable needs to be available in the path
解决办法: 去http://selenium-release.storage.googleapis.com/index.html 下载指定IE版本 解压后 拷贝到Python的目录下 重新运行,提示错 ...
- c#task list waitall task waitany
上边的主线程会被卡住: 7个同时开发,谁先完成之后, 需要完成某个工作,可以用waitany 2: 不卡界面的做法 加上以上命令就不卡,是子线程做的事 //Task task = taskFactor ...
- 在myeclipse中修改发布到tomcat的项目目录名称
在项目上右键-->Properties 搜索web-->Project Facets(Web) 更改右侧Web Content-root的信息
- Linux apt-get命令
一.简介 Ubuntu系列系统包管理工具. 二.常用指令 1.查询功能 apt-cache search package 搜索软件包 apt-cache show package 获取包的相关 ...
- DOM系列基础知识
DOM (Document Object Model) 即文档对象模型, 针对 HTML 和 XML 文档的 API (应用程序接口) .DOM 描绘了一个层次化的节点树,运行开发人员添加.移除和修改 ...