您的位置:首页 > 编程语言 > Java开发

java基础语法学习笔记(四)

2012-06-14 17:41 465 查看
对象构造:java提供了多种机构来编写构造器。

重载,从前面可以看到,GregorianCalendar类有多个构造器。我们可以使用:

GregorianCalendar today = new GregorianCalendar();

或者

GregorianCalendar deadline = new GregorianCalendar(2099,Calendar.DECEMBER,31);

这种能力叫做重载(overloading)。如果多个方法(不仅仅是构造器方法)有相同的名字、不同的参数,便产生了重载。通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来选择正确定的方法。要完整的描述一个方法,需要指出方法名以及参数类型。例如,String类有4个称为indexOf的公有方法:

indexOf(int)

indexOf(int,int)

indexOf(String)

indexOf(String,int)

返回类型不是方法签名的一部分,也就是说,不能有两个名字相同、参数类型相同,返回不同类型值的方法。

默认构造器,是指没有参数的构造器。如果在编写一个类时,没有编写构造器,系统就会提供一个默认构造器。这个默认构造器将所有的实例域设置为默认值。如果类中提供了至少一个构造器,但是没有提供默认的构造器,那么在构造对象时若不提供构造参数就被视为不合法。

调用另一个构造器,关键字this引用方法的隐式参数。然而,这个关键字还有另外一个含义。如果构造器的第一个语句形如this(...),那么这个构造器将调用同一个类的另一个构造器。如:

public Employee(double s)

{

//calls Employee(String,double)

this(“Employee #” + nextId,s);

NextId++;

}

初始化块,两种初始化数据域的方法:在构造器中设置值、在声明中赋值。

实际上,java还有第三种机制,称为初始化块。在一个类的声明中,可以包含多个代码块。只要构造类的对象,这些块就会被执行。

对象析构与finalize方法,java有自动的垃圾回收器,不需要人工回收内存,所以java不支持析构建器。

包,java允许使用包(package)将类组织起来。借助于包可以方便的组织自己的代码,并将自已的代码与别人提供的代码库分开管理。使用包的主要原因是确保类名的唯一性。包之间没有任何关系,每一个都拥有独立的类集合。

类的导入,可以使用import语句导入一个特定的类或者整个包。import语句应该位于源文件的顶部(但位于package语句的后面)。

静态导入,如:import static java.lang.System.*;

那么就可以使用System类的静态方法和静态域,而不心加类名前缀:

out.println(“Goodbye,world!”);//i.e.,System.out

exit(0);//i.e.,System.exit

另外还可以导入特定的方法或域:

Import static java.lang.System.out;

导入静态方法和导入静态域有两个实际的应用。

1)算术函数:如果对Math类使用静态导入,就可以采用更加自然的方式使用算术函数。如sqrt(pow(x,2)+pow(y,2))

看起来比Math.sqrt(Math.pow(x,2)+Math.pow(y,3))清晰得多。

2)笨重的常量:如果需要使用大量带有冗长名字的常量,就应该使用静态导入。例如:if(d.get(DAY_OF_WEEK) == MONDAY)看起来比

if(d.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY)容易得多。

将类放入包中

要想将一个类放入包中,就必须将包的名字放在源文件的开头,包中定义的类代码之前。如:

package com.horstmann.corejava;

import java.util.*;

public class Employee

{

...

}

 

生成文档注释,java提供了生成文档的注释方式,注释格式如前所说的写在

/**

注释内容

*/

之间,通过javadoc 编译可以生成文档以html格式的api文档,非常方便。

类设计的几点技巧:

1)     一定将数据设计为私有。最重要的是绝对不要破坏封装性。

2)     一定要对数据初始化。java不对局部变量进行初始化,但是会对对象的实例域进行初始化。最好不要依赖于系统的默认值,而应该显式的初始化所有的数据。具体的方式可以是提供默认值,或者是在所有构造器中设置默认值。

3)     不要在类中使用过多的基本数据类型。

4)     不是所有的域都需要独立的域访问和域更改器。

5)     使用标准格式进行类的定义。

一定采用下面的顺序书写类的内容:

公有访问特殊部分

包作用域访问特殊部分

私有访问特殊部分

在每一部分中,应该按照下列顺序出:

实例方法

静态方法

实例域

静态域

6)将职责过多的类进行分解。

7)类名和方法名要能够体现它们的职责。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息