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= ...
随机推荐
- pep8 && pep20
pep8(部分,遇到问题再补充) 1.不建议使用tab键来空格,避免不必要的空格.操作符左右各加一个空格,函数默认参数使用的赋值符左右省略空格. 2.类和top-level函数定义之间空两行:类中的方 ...
- swift4.2 - 一个自定义view弹框
import UIKit /* * 注册协议view:没找到 UI原图,咱不实现 */ class JYRegisterProtocolView: UIView { /// 点击同意协议的回调 pri ...
- Ubuntu下ClickHouse安装
ClickHouse目前仅支持在ubuntu下面部署,而且国内中国文档也比较少 >vi /etc/apt/sources.list #在最后一行追加 #ubuntu16.04 使用Xenial: ...
- 在eclipse上写代码的时候,tomcat突然不能用了,重启都是闪一下就关了
严重: A child container failed during start 严重: The required Server component failed to start so Tomca ...
- WebApi2跨域问题及解决办法
跨域问题产生的原因 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能.现在所有支持JavaScript的浏览器都会使用这个策略.所谓同源是指,域名,协议, ...
- JFinal Web开发学习(七)使用layUI美化的登录功能
效果: 验证码还是没有布局好.背景比较怀古. 1.写前端html login.jsp <!DOCTYPE html> <html> <head> <meta ...
- c#编写windows服务在开机是OnStart启动超时
1.编写服务对应的config文件, 比如我的服务叫ModbusAgent.exe,对应的文件叫ModbusAgent.exe.config 文件内容: <?xml version=" ...
- bootstrap切换按钮点击后显示的颜色
点击按钮后将按钮类库切换为值为btn-success ·· test ·· jquery code ·· $(".tag-checkbox").toggleClass(" ...
- PHP 弹窗 源代码 css Jquery.js
// 每个弹窗的标识 var x =0; var idzt = new Array(); var Window = function(config){ //ID不重复 idzt[x] = " ...
- Data Dictionary 数据字典
数据字典是一种通用的程序设计方法.可以认为,不论什么程序,都是为了处理一定的主体,这里的主体可能是人员.商品(超子).网页.接口.数据库表.甚至需求分析等等.当主体有很多的属性,每种属性有很多的取值, ...