《Java核心技术卷Ⅰ》读书笔记——4.7 包

为了保证包名的绝对唯一性,Sun公司建议将公司的因特网域名以逆序的形式作为包名,例如:com.xxxx

从编译器的角度看,嵌套的包之间没有任何关系,例如,java.util包与java.util.jar包毫无关系,每一个包都拥有独立的类集合。

4.7.1类的导入

一个类可以使用所属包中的所有类,以及其他包中的公用类。我们可以采用两种方式访问另一个包中的公有类。

第一种:java.time.LocalDate today = java.time.LocalDate.new();

第二种:import java.time.*; 或者import java.time.LocalDate;

java.time.*的语法比较简单,对代码的大小也又没有任何负面影响。当然,如果能够明确地指出所导入的类,代码可读性更高。

当导入的两个包中有类重名时(例如java.util和java.sql包中都有Date类)。可以增加一个特定的import语句:

import java.util.*;
import java.sql.*;
import java.util.Date;

如果两个包中的Date类都需要使用,则只能在每个类名前加上完整的包名了。

4.7.2 静态导入

import语句还可以导入静态方法和静态域。

例如,import  static java.lang.System.*;

就可以直接使用System类的静态方法和静态域,而不需要加上类名前缀:

out.println("Hello World!");

exit(0);

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

import static java.lang.System.out;

实际上,这种简写形式不利于代码的清晰度。不过,

sqrt(pow(x, 2), pow(y, 2));

就看起来比

Math.sqrt(Math.pow(x, 2), Math.pow(y, 2));

清晰很多。

4.7.3 将类放入包中

如果源文件开头没有放置package语句,这个源文件中的类就被放置在一个默认包(default package)中。默认包是一个没有名字的包。

将包中的文件放到与完整的的包名匹配的子目录中。例如,com.horstmann.corejava包中的所有源文件应该被放置在子目录com\horstmann\corejava(windows)中。编译器将类文件也放在相同的目录结构中。

程序清单4-6与4-7的程序分别放在两个包中:PackageTest类放置在默认包中;Employee类放在com.horstmann.corejava包中。文件目录结构如下:

要想编译这个程序,只需改变基目录,并运行命令

javac PackageTest.java

编译器会自动查找文件com\horstmann\corejava\Employee.java并进行编译。

下面看一个更加实际的例子。

在这种情况下,仍然要从基目录(包名的上一级目录)编译和运行类,即包含com目录:

javac com\mycompany\PayrollApp.java

java com.mycompany.PayrollApp

需要注意,编译器对文件(带有文件分隔符和扩展名.java的文件)进行操作,而java解释器加载类(带有.分隔符)。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值