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= ...
随机推荐
- 对话框 AlterDialog
AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("尊敬的用户"); bu ...
- 我的图片爬虫demo
本来是根据scrapy教程写了一个下载图片的简易爬虫,但是搞了一天,死活下载不了图片. 然后换了一个网站,用原生的库写了一个图片爬虫. import urllib.requestimport osde ...
- stm32GPIO的8种工作模式
推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定. 推挽电路是两个参数相同的三极管或MOS ...
- [codeforces_597B] Restaurant(贪心)
题目链接 http://codeforces.com/problemset/problem/597/B 题意 输入:区间数目n.及n个区间的起止(左闭右闭). 输出:最多不重叠的区间有多少个. 思路 ...
- Java09-java语法基础(八)java中的方法
Java09-java语法基础(八)java中的方法 一.方法(函数/过程):是一个程序块,可以完成某种功能 1.java中方法的定义格式 [访问控制修饰符] 返回值类型 方法名(参数列表){ 方 ...
- maven中导入包版本冲突的解决
导入struts包,在struts核心包的ognl包下存在javassist包: 然后再导入hibernate包,在hibernate核心下也存在javassist包: 这样便会存在冲突,ecplis ...
- 9.4-9.19 h5日记总结
总结: 1.标签 (1)单.双标签 (2)块级.行级标签 (3)标签的属性 2.CSS (1)选择器 *.id.class.标签.后代.子代.并集.交集.伪类.结构 (2)层叠性,即选择器权重的计算 ...
- c#dev操作读取excel方法
一:使用spreadsheetControl1 方法 1:打开excel; private void barButtonItem1_ItemClick(object sender, DevExpres ...
- C# web服务器被webbench攻击及目现采用的防御措施
web服务器连续两次出现CPU达到100%的情况,第一次还想着是升级时,哪个地方写错了,有死循环,最后重启了三次服务器才好. 但事后分析代码,没有死循环的可能,于是在第二次又出现CPU达100%时,仔 ...
- hdu 5691(状压DP) Sitting in Line
题目http://acm.hdu.edu.cn/showproblem.php?pid=5691 状态DP,dp[i][j],i 表示的是一种状态,这个状态指的是当前这个数取或不取,j表示的是以第j个 ...