知识点

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核心技术之类与对象的更多相关文章

  1. Java核心技术卷阅读随笔--第4章【对象与类】

    对 象 与 类 4.1 面向对象程序设计概述 面向对象程序设计(简称 OOP) 是当今主流的程序设计范型, 它已经取代了 20 世纪 70 年代的" 结构化" 过程化程序设计开发技 ...

  2. Java核心技术点之泛型

    1. Why ——引入泛型机制的原因 假如我们想要实现一个String数组,并且要求它可以动态改变大小,这时我们都会想到用ArrayList来聚合String对象.然而,过了一阵,我们想要实现一个大小 ...

  3. Java核心技术点之集合框架

    1. 概述     Java集合框架由Java类库的一系列接口.抽象类以及具体实现类组成.我们这里所说的集合就是把一组对象组织到一起,然后再根据不同的需求操纵这些数据.集合类型就是容纳这些对象的一个容 ...

  4. Java核心技术点之内部类

    1. 为什么要使用内部类     内部类就是定义在一个类内部的类,那么为什么要使用内部类呢?主要原因有以下几点:第一,内部类中定义的方法能访问到它所在外部类的私有属性及方法:第二,外部类无法实现对同一 ...

  5. Java核心技术点之动态代理

    本篇博文会从代理的概念出发,介绍Java中动态代理技术的使用,并进一步探索它的实现原理.由于个人水平有限,叙述中难免出现不清晰或是不准确的地方,希望大家可以指正,谢谢大家:) 一.概述 1. 什么是代 ...

  6. Java基础语法<七> 对象与类

    笔记整理 来源于<Java核心技术卷 I > <Java编程思想> 1. 类之间的关系 依赖 users– a 是一种最明显的.最常见的关系.如果一个类的方法操作另一个类的对象 ...

  7. java核心技术之流与文件

    InputStream和OutputStream构成了输入/输出类层次结构的基础.用于按字节进行读写.而与之处在同一等级的Reader/Writer同样作为抽象类定义了用于对字符进行读取的类层次结构, ...

  8. Java核心技术第五章——1.类、超类、子类(2)

    继上一篇Java核心技术第五章——1.类.超类.子类(1) 6.重载解析 假如调用ClassName.Method(args) 1.编译器列出类ClassName所有名为Method的方法. 2.编译 ...

  9. 《Java核心技术卷1》拾遗

    之前对Java的基础知识有过学习,现在开始学习<Java核心技术卷1>,将一些新学的知识点,做简要记录,以备后续回顾: 1.double (1)所有的“非数值”都认为是不相同的 if(x= ...

随机推荐

  1. Unity3D研究院之设置自动旋转屏幕默认旋转方向

    如下图所示,在处理屏幕默认旋转方向的时候可以在这里进行选择,上下左右一共是4个方向. 策划的需求是游戏采用横屏,但是要求支持两个方向自动旋转,如下图所示,我的设置是这样的. Default Orien ...

  2. TZOJ 4871 文化之旅(floyd预处理+dfs剪枝)

    描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次,即如果他学习了某种文化,则他就不能到达其他有这种文化的国家.不同的国家可能有相同的文化.不同文化的国家 ...

  3. Cisco VSS

    1.原理 VSS是将两台及以上的物理设备虚拟成逻辑上的一台,可类比堆叠.VSS在控制层面上两个交换机有主从之分,但在数据面上处理是双活的.无论是从网络控制层面和管理视图上在网络上都是一个单独的设备实体 ...

  4. ABAP开发需要养成的习惯—变量定义

    变量定义 Global variables are BAD 定义内表先在程序开头定义types,如 types: begin of ty_structure,         id type i,   ...

  5. session高级(session入库)

    我们知道,session是一种会话技术,用来实现跨脚本共享数据. 在之前的php会话技术中我们介绍过,session是存放在服务器端的文件里的,因此session有可能因为文件数量过多,会在查询ses ...

  6. 4-java 格式化输出

    java保留两位小数4种方法 import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberF ...

  7. 转 C++函数返回值,你必须注意的问题

    归根结底,C++所面临的问题要求它提供各种各样的机制以保证性能,也许,这辈子也见不到C++能安全有效的自己进行内存垃圾回收..... 老程序猿都会提醒菜鸟,注意函数的返回值,因为,很可能,你的函数返回 ...

  8. android studio 3.0 集成ijkplayer

    一.ijkplayer编译过程略,有兴趣的朋友可以再研究,以下以编译好的版本讲解. 将ijkplayer相关的so及aar文件复制到app下的libs目录,为支持多版本的手机使用,将所有的so文件都复 ...

  9. L1-025 正整数A+B(15)(思路+测试点分析)

    L1-025 正整数A+B(15 分) 题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000].稍微有点麻烦的是,输入并不保证是两个正整数. 输入格式: 输入在一行给出A和B, ...

  10. Hadoop(二) HADOOP集群搭建

    一.HADOOP集群搭建 1.集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 Na ...