小议Java的源文件的声明规则以及编程风格

Java源文件的声明规则
当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则:
一个源文件中只能有一个public类。
一个源文件可以有多个非public类。
源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
如果一个类定义在某个包中,那么package语句应该在源文件的首行。
如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在后续章节介绍。
除了上面提到的几种类型,Java还有一些特殊的类,如内部类、匿名类。
一个简单的例子

在该例子中,我们创建两个类 Employee 和 EmployeeTest,分别放在包 p1 和 p2 中。

Employee类有四个成员变量,分别是 name、age、designation和salary。该类显式声明了一个构造方法,该方法只有一个参数。

在Eclipse中,创建一个包,命名为 p1,在该包中创建一个类,命名为 Employee,将下面的代码复制到源文件中:

package p1;
public class Employee{
 String name;
 int age;
 String designation;
 double salary;
 // Employee 类的构造方法
 public Employee(String name){
  this.name = name;
 }
 // 设置age的值
 public void empAge(int empAge){
  age = empAge;
 }
 // 设置designation的值
 public void empDesignation(String empDesig){
  designation = empDesig;
 }
 // 设置salary的值
 public void empSalary(double empSalary){
  salary = empSalary;
 }
 // 输出信息
 public void printEmployee(){
  System.out.println("Name:"+ name );
  System.out.println("Age:" + age );
  System.out.println("Designation:" + designation );
  System.out.println("Salary:" + salary);
 }
}

程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个对象。

下面给出EmployeeTest类,该类创建两个Employee对象,并调用方法设置变量的值。

在Eclipse中再创建一个包,命名为 p2,在该包中创建一个类,命名为 EmployeeTest,将下面的代码复制到源文件中:

package p2;
import p1.*;
public class EmployeeTest{
 public static void main(String args[]){
  // 创建两个对象
  Employee empOne = new Employee("James Smith");
  Employee empTwo = new Employee("Mary Anne");
  // 调用这两个对象的成员方法
  empOne.empAge(26);
  empOne.empDesignation("Senior Software Engineer");
  empOne.empSalary(1000);
  empOne.printEmployee();
  empTwo.empAge(21);
  empTwo.empDesignation("Software Engineer");
  empTwo.empSalary(500);
  empTwo.printEmployee();
 }
}

编译并运行 EmployeeTest 类,可以看到如下的输出结果:

Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

强调一下编程风格
代码风格虽然不影响程序的运行,但对程序的可读性却非常重要。自己编写的程序要让别人看懂,首先在排版方面要非常注意。

其实每个人的编程风格、每个软件开发公司的编程风格都不一样。一个人编写的程序代码,就应该能让别人看懂,甚至是过了很长时间,自己也要看的懂,否则这个程序就成了一个死程序。

编程风格是指编程时的格式,让程序看上去就很有层次感。下面通过一些例子,说明编程风格的重要性:

public class math{
 public static void main(String[] args){
  int x=12;
  double y=12.3d;
  void print(){
   char a='a';
   System.out.println(a);
  }
  System.out.println(x+y);
 }
}

上面程序段的整个排版看起来是否很舒服,并且层次感很强?是否一眼看上去就知道整个程序架构?这里的关键在于缩进,缩进也可以称为跳格。

上面的代码采用的缩进:"public class math" 是顶格的,接着 mian() 方法缩进 4 个空格,在 mian() 方法里面的代码一律缩进 8 个空格,而 print() 方法的主体代码又多缩进 4 个空格。这样整个程序的所属关系就很明显了。mian() 方法属于 math 类,其余的都属于main() 方法,而在 print() 方法内的代码段又属于此方法。规律就是空格多的代码从属于空格少的代码。

我推荐大家使用 tab 键缩进,大部分编辑器(如Eclipse)都支持自定义 tab 键的空格数,一般为 4 个空格。

除了缩进,空行也是必要的,先看下列程序代码:

public class math{
 public static void main(String[] args){
  int x=12;
  int y=23;
  void print(){
   // .................
  }
  void view(){
   // ....................
  }
 }
}

上面的程序段,在 print() 方法与 view() 方法之间有空行,用来区分不同的模块。print() 方法与 view() 方法所完成的功能不一样,所以使用空行将它们分开,这样更增加了程序的可读性。

另外,需要注意的是方法或属性的命名。这些名字应该有含义,最好有规律,不要只使用"a"、"b"这种通用变量,适当可以根据变量或函数的功能为其命名。上面的"print",其他程序员一看就知道这个方法,是有关打印或输出的函数。再如:变量名"name",一看就知道是有关名字的变量。所以,一定要命名的有意义,否则程序的可读性不强。

还有一点是有关注释的。在每个方法的方法名旁边,应该添加一些注释,同时在一段程序完成之后,也要对程序的功能及如何操作,做个简单的描述。

只要做到以上几点,这个程序他人来读就很容易。即使自己在很长时间后,再来读程序也会一目了然。

(0)

相关推荐

  • 使用Java读取Word文件的简单例子分享

    java读取word文档时,虽然网上介绍了很多插件poi.java2Word.jacob.itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用):java2Word.jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄:itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法.经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,

  • Java对文件的随机读写以及压缩处理操作

    Java中文件的随机读写 Java.io 包提供了 RandomAccessFile 类用于随机文件的创建和访问.使用这个类,可以跳转到文件的任意位置读写数据.程序可以在随机文件中插入数据,而不会破坏该文件的其他数据.此外,程序也可以更新或删除先前存储的数据,而不用重写整个文件. RandomAccessFile类是Object类的直接子类,包含两个主要的构造方法用来创 建RandomAccessFile 的对象,如表所示. 需要注意的是,mode 表示所创建的随机读写文件的操作状态,其取值包括

  • Java基于IO流读取文件的方法

    本文实例讲述了Java基于IO流读取文件的方法.分享给大家供大家参考,具体如下: public static void readFile(){ String pathString = TEST.class.getResource("/simu").getFile(); try { pathString = URLDecoder.decode(pathString, "utf-8"); } catch (UnsupportedEncodingException e1)

  • JavaWeb实现文件上传下载功能实例解析

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

  • Java常用的一些多媒体文件基本操作方法简介

    播放幻灯片和动画 用实例说明播放幻灯片和动画的方法. [例]小应用程序先将幻灯片读入数组在存储,单击鼠标变换幻灯片,逐张显示. import java.applet.*import java.awt.*; import java.awt.event.*; public class Example7_7 extends Applet implements MouseListener{ final int number = 50; //假定幻灯片有50张 int count = 0; Image[]

  • 详解Java的文件与目录管理以及输入输出相关操作

    Java中文件与目录管理 目录是管理文件的特殊机制,同类文件保存在同一个目录下不仅可以简化文件管理,而且还可以提高工作效率.Java 语言在 java.io 包中定义了一个 File 类专门用来管理磁盘文件和目录. 每个 File 类对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相关信息.通过调用 File 类提供的各种方法,能够创建.删除.重名名文件.判断文件的读写权限以及是否存在,设置和查询文件的最近修改时间等.不同操作系统具有不同的文件系统组织方式,通过使用 File 类对象,

  • java使用Jdom实现xml文件写入操作实例

    本文实例讲述了java使用Jdom实现xml文件写入操作的方法.分享给大家供大家参考,具体如下: package com.yanek.demo.xml.test; import java.io.File; import java.io.FileWriter; import org.jdom.Attribute; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import o

  • Java使用utf8格式保存文本文件的方法

    本文实例讲述了Java使用utf8格式保存文本文件的方法.分享给大家供大家参考,具体如下: FileOutputStream fos = null; OutputStreamWriter writer = null; try { File file = new File(filepath); fos = new FileOutputStream(file); writer = new OutputStreamWriter(fos,"utf-8"); writer.write(makeL

  • Java读取、写入文件如何解决乱码问题

    读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码.ANSI编码等等.二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码.) 因此可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8).而二进制文件可看成是变长编码的,因为是值编码嘛,多少

  • Java编程实现判断网上邻居文件是否存在的方法

    本文实例讲述了Java编程实现判断网上邻居文件是否存在的方法.分享给大家供大家参考,具体如下: 由于java不支持通过//192.168.19.168/fz/OK/张立辰-国画/jpg/ZLC-鱼1-X.jpg这种路径 需要将路径映射为本地盘,则可 package test; import java.io.File; public class FileCheck { /** * @param args */ public static void main(String[] args) { Str

随机推荐