关于Java咋记记不住的东西!很闹心~(1)
来源:互联网 发布:好看男士衣服的淘宝店 编辑:程序博客网 时间:2024/09/21 08:59
静态方法
在下面两种情况下使用静态方法:
- 一个方法不需要访问对象状态,其所需参数都是通过显式参数提供(例如:Math.pow)。
- 一个方法只需要访问类的静态域.
工厂方法
静态方法另外一种常见的用途:工厂方法。
使用工厂方法的两个原因:
- 无法命名构造器。构造器的名字必须与类名相同。
- 当时用构造器时,无法改变所构造的对象类型。
方法参数
- 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。
- 一个方法可以改变一个对象参数的方法。
- 一个方法不能让对象参数引用一个新的对象。
构造器
域与局部变量的主要不同点。必须明确地初始化方法中的局部变量。但是。如果没有初始化类中的域,将会被自动初始化为默认值(0, false或null)。
默认域会初始化是因为一个类没有编写构造器,那么系统会提供一个无参数构造器。
如果类中提供了至少一个构造器,但是没有提供无参数的构造器,则在构造对象时如果没有提供参数就会被视为不合法。
其记住,仅当类没有提供任何的构造器的时候,系统才会提供一个默认的构造器。
两种初始化数据域的方法:
* 在构造器中设置值
* 在声明中赋值
类设计技巧
一定要保证数据私有
这是最重要的;绝对不要破坏封装性。有时候,需要编写一个访问器方法或更改器方法,但是最好还是保持实例域的私有性。很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但他们的使用方式却不会经常发生变化。当诗句保持私有时,他们的表示形式的变化不会对类的使用者产生影响,即使出现bug也易于检测。一定要对数据初始化
Java不对局部变量进行初始化,但是会对对象的实例域进行初始化。最好不要依赖于系统的默认值,而是应该显式地初始化所有的数据,具体的初始化方式可以是提供默认值,也可以是在所有构造器中设置默认值。不要在类中使用过多的基本类型
就是说,用其他的类代替多个相关的基本类型的使用。这样会使类更加易于理解且易于修改。不是所有的域都需要独立的域访问器和域更改器
在对象中,常常包含一些不希望别人获得或设置的实例域。将职责过多的类进行分解
类名和方法名要能够体现它们的职责
与变量应该有一个能够反映其含义的名字一样,类也应该如此(在标准类库中,也存在着一些含义不明确的雷子,入:Date类实际上是一个用于描述时间的类)。
命名类名的良好习惯是采用一个名词(Order)、前面有形容词修饰额名词(RushOrder)或动名词(有“-ing”后缀)修饰名词(例如,BillingAddress)。用于方法来说,习惯是访问器方法用小写get(getSalary),更改器方法用小写的set开头(setSalary)。优先使用不可变的类
LocalDate类以及java.time包中的其他类是不可变的—-没有方法能够修改对象的状态。类似plusDays的方法并不是更改对象,而是返回状态已修改的新对象。
更改对象的问题在于,如果多个线程试图同事更新一个对象,就会发生并发更改。其结果是不可预料。如果类是不可变的,就可以安全地在多个线程间共享其对象。
因此,要尽可能让类是不可变的,这是一个很好的想法。对于表示值的类,如一个字符串或一个时间点,这尤其容易。计算会生成新值,而不是更新原来的值。
当然,并不是所有的类都应该是不可变的。如果员工加薪时让raiseSalary方法返回一个新的Employee对象,这会很奇怪。
- 关于Java咋记记不住的东西!很闹心~(1)
- 防不住的东西[安全类]
- 你总是喜欢抓不住的东西
- 一些我记不住的东西
- 贪官自述称谁送东西记不住不送东西的记很牢
- 闹心的CMakeList!!
- 闹心
- 关于JAVA-一些要记住的东西
- 关于java学习的一些东西
- 关于java线程的一些东西
- 闹心的飞机噪音污染!!
- 关掉闹心的 PC 喇叭
- 关掉闹心的 PC 喇叭
- 这几个闹心的日子
- 一道闹心的水题
- Java security之记不住的CodeBase
- [Java] 关于Java,你值得看的一些东西
- 关于手机屏幕,一直很困惑的东西
- Could not resolve all dependencies for configuration ':classpath'. Could not find com.android.t
- [莫比乌斯反演+数位DP]计蒜客 阿里云秘钥池
- 如何理解jsp页面中的“<base href="<%=basePath%>">”?
- 数据挖掘魔法学院(DMM)— 关于DMM关于我
- java常用位操作
- 关于Java咋记记不住的东西!很闹心~(1)
- 关于变量提升
- pymysql模块连接数据库详解
- NEFU 1268 区间最小值求和(单调队列||RMQ)
- 重拾springmvc(三)
- Leetcode_3Sum Closest
- SDNU1171.合并果子优先队列
- 前台正则表达式校验
- angular4之父子组件之间的传值