2.6到2.9小节主要介绍构建我们的完整的可以运行起来的Java程序的方法,以及我们的Java程序的结构和风格是如何的。主要还是将语法的问题,不是我们实践课的第一个hello world程序demo。
“2.6.1 名字可见性”主要讲的是如何给我们的Java类起名字,这里面有一个包的概念,即我的类属于哪个包名下面。包可以理解为文件目录,同一个文件目录下不能有相同的类名,这就保证了类以及类中的函数的使用冲突问题,计算另一个目录下有一样名字的类,使用起来也会标识清楚。比如a.b.c.User和a.b.d.User。当然名字要起的有意义,包名要体现组织架构和功能的含义,类名也要能有见名知意。这个在真实的项目实践或者产品开发中会有开发规范约束。
“2.6.2 运用其他构件”,就是使用其他的类,直接举例说明:
importjava.util.ArrayList;
可以翻译成中文就是引入java.util包下的ArrayList类。如果要使用java.util包下其他的类,一个个引进来比较麻烦,可以使用通配符import java.util.*;
“2.6.3 static关键字”主要介绍了static关键字的作用。在一个类中,被static关键字修饰的数据成员或者方法,该数据成员和方法不需要创建出对象就可以被使用。还有一种更好理解的描述是,被static关键字修饰的数据成员或者方法,它是不属于对象的,是属于类自身的。用两个术语来表达就是类成员和类方法。
classStaticTest { staticinti=47; }
直接通过StaticTest.i去使用i变量。而且StaticTest.i在存储区域里只存一份,哪怕new处理再多的对象,他们使用的i还是同一个i。比如:
StaticTestst1=newStaticTest(); StaticTestst2=newStaticTest();
st1.i 和st2.i 共享同一个i,他们的值时相同的,都是47。可以通过StaticTest.i++去改变i的值为48,st1.i 和st2.i也都变为了48。以后在业务开发中一些全局的常量或者字典值的属性有时候就是通过static修饰的,全局独家一份。
classIncrementable { staticvoidincrement() { StaticTest.i++; } } Incrementable.increment();
演示了一下被static修饰的方法的使用。当然也可以通过对象的方式去调用,如下:
Incrementablesf=newIncrementable(); sf.increment();
有了上面一些关键字的铺垫下面就进入到了我们的”2.7 你的第一个Java程序”。直接上代码:
// HelloDate.java importjava.util.*; publicclassHelloDate { publicstaticvoidmain(String[] args) { System.out.println("Hello, it’s: "); System.out.println(newDate()); } }
这个代码可以直接运行的,如何运行?安装jvm,找个集成开发工具比如idea,或者像我们当初通过javac命令行编译运行的方式,这些工具自己学习吧。
// HelloDate.java 代表单行注释
import java.util.*;代表导入要是有的类
public class HelloDate 定义一个类
public static void main(String[] args)代表这个类可以被直接执行,main方法是程序执行的主方法。
System.out.println("Hello, it’s: "); 就是打印输出一串字符串
System.out.println(new Date()); 把new Date()日期对象作为参数,就是打印输出当前日期。
下面直接进入到“2.8 注释和嵌入式文档”,刚刚也提到了//代表单行注释,那么多行注释呢?
/* This is a comment
* that continues
* across lines
*/
通过/**/即可实现多行注释。
Javadoc是java提供的根据注释来生成文档的工具,这个工具在输出一个库或者api给第三方开发者的时候很有帮助。几乎每个开源的框架或者库都通过javadoc输出了文档供开发者使用。这里面涉及到一些标签和HTML标签的使用,一方面是为了说明类或者函数的信息,一方面是为了美观我们的文档。
@author author-information 作者信息
@version version-information版本信息
@param parameter-name 参数信息
@return description 返回值信息
@throws fully-qualified-class-name description 异常信息
还有很多,可以参考这块专门的手册,需要使用哪个,按照规范使用即可。还可以使用如下HTML的写法美化我们的文档:
/**
* You can <em>even</em> insert a list:
* <ol>
* <li> Item one
* <li> Item two
* <li> Item three
* </ol>
*/
下面给一个例子来说明注释的使用:
//: object/HelloDate.java importjava.util.*; /** The first Thinking in Java example program. * Displays a string and today’s date. * @author Bruce Eckel * @author www.MindView.net * @version 4.0 */publicclassHelloDate { /** Entry point to class & application. * @param args array of string arguments * @throws exceptions No exceptions thrown */publicstaticvoidmain(String[] args) { System.out.println("Hello, it’s: "); System.out.println(newDate()); } }
/* Output: (55% match)
Hello, it’s:
Wed Oct 05 14:39:36 MDT 2005
*/