java允许将一组功能相关的类放在同一个package下,从而组成逻辑上的类库单元。如果希望把一个类放在指定的包结构下,我应该在java源程序的第一个非注释行放置如下格式的代码:
package packagename;
一旦在java源文件中使用了这个package语句,就意味着该源文件里定义的所有类都属于这个包。位于包中的每个类的完整类名都应该是包名和类名的组合,如果其他人需要使用该包下的类,也应该使用包名加类名的组合。
javac -d . hello.java 与 javac hello.java 的区别? package lee;public class hello{ public static void main(string[] args) { system.out.println("hello world!"); } }
-d选项本来用于设置编译生成的class文件的保存位置,这里指定将生成的class文件放在当前路径下。使用该命令编译后,当前路径下生成一个名为lee的文件夹,该文件夹下则有一个hello.class文件。
如果直接使用javac hello.java命令编译,将会在当前路径下生成一个hello.class文件,而不会生成lee文件夹。
同一个包中的类必须位于同一个文件夹吗?
可以不在同一个文件夹。例如lee.person和lee.persontest两个类可一个在c盘一个在d盘,只要让classpath环境变量包含这两个路径即可。
包名如何起?
包名一般全是小写字母,由一个或多个有意义的单词连缀而成。为了在开发中避免包名和类名同时重复的情况,oracle建议使用公司internet域名倒写来作为包名,例如internet域名是crazyit.org,则该公司的所有类都放在org.crazyit包及其子包下。
域名倒写.项目名.模块名.组件名
同一个包下的类互相访问时可以不加包前缀吗?
可以。
父包和子包互相访问时可以不加包前缀吗?
不可以,必须加包前缀。
import关键字
正如上面看到的,如果需要使用不同包中的其他类时,总是需要使用该类的全名,这是一件繁琐的事情。为了简化编程,java引入了import关键字,import关键字可以向某个java文件只能给导入指定包层次下的某个类或全部类,import语句应该出现在package语句之后、类定义之前。一个java源文件只能包含一个package语句,但可以包含多个import语句,多个import语句用于导入多个包层次下的类。
导入单个类: import package.subpackage...classname; 导入全部类: import package.subpackage...*;
上面的(*)只能代表类,不能代表包。
java的常用包
java的核心类都放在java这个包及其子包下,java扩展的许多类都放在javax包及其子包之下。这些实用类也就是前面所说的api(应用程序接口),oracle按这些类的功能分别放在不同的包下。下面几个包是java中的常用包。
java.lang:这个包下包含了java语言的核心类,如sting、math、system、和tread类等,使用这个包下的类无需使用import语句导入,系统会自动导入这个包下的所有类。
java.util:这个包下包含了java的大量工具类/接口和集合框架类/接口,例如arrays和list、set等。
java.net:这个包下包含了一些java网络编程相关的类/接口。
java.io:这个包下包含了一些java输入/输出相关的类/接口。
java.text:这个包下包含了一些java格式化相关的类。
java.sql:这个包下包含了一些java进行jdbc数据库编程相关的类/接口。
java.awt:这个包下包含了抽象窗口工具集(abstract window toolkits)的相关类/接口,这些类主要用于构建图形用户界面(gui)程序。
java.swing:这个包下包含了swing图形用户界面编程的相关类/接口,这些类可用于构建平台无关的cui程序。
【相关推荐】
1. 必须掌握的java package命名规则
2. java软件工程师学php -15 php中的namespace 与java中的package
3. sublime text 2/3 中 package control 的安装与使用方法
4. 图解idea不能新建javaclass和package解决办法
以上就是深入了解java package实例教程的详细内容。
