chapter03.10_package和import_day11_2
1、关于Java语言的包机制
(1)包又称为package,Java中引入package这种机制主要是为了方便程序的管理,
不同功能的类被分门别类放到不同的软件包中,方便查找、管理、维护。
(2)如何定义package?
在Java源程序第一行编写package语句。
package只能编写一个语句
语法结构:
package 包名;
(3)包名的命名规范:
公司的域名倒序 + 项目名 oa + 模块名 user + 功能名 service
采用这种方式,重名的几率较低,因为公司域名具有全球唯一性
eg: com.bjpowernode.oa.user.service;
org.apache.tomcat.core;
(4)包名要求全部小写,包名也是标识符,必须遵守标识符的命名规则
(5)一个包将来对应的是一个目录
(6)使用了package机制之后,应该怎么编译呢?怎么运行呢?
使用了package机制之后,类名不再是Test01了,而是com.bjpowernode.javase.day11.Test01
编译:javac java源文件路径(在硬盘上生成一个class文件:Test01.class)
手动创建目录,将Test01.class字节码文件放到指定的目录下
运行:java com.bjpowernode.javase.day11.Test01
另一种方式(编译+运行):
编译:javac -d 编译之后存放路径 java源文件路径
eg:javac -d C: F:\HellloWorld.java
javac -d . *.java(将当前路径中*.java编译之后存放在当前目录下)
运行:JVM的加载器ClassLoader默认从当前目录下加载,
保证DOS命令窗口的路径先切换到com所在路径,执行:java com.bjpowernode.javase.day11.Test01
2、什么时候需要使用import?
(1)不是java.lang包下,并且不在同一个包下时,需要用import进行引入
myeclipse导入类的快捷键:Ctrl + Shift + O
package com.bjpowernode.javase.day11; //4个目录,目录之间使用 . 隔开
public class Test01
{
public static void main(String[] args){
System.out.println("Test01's main method execute!");
}
}
package com.bjpowernode;
public class Test03
{
public static void main(String[] args){
//创建test01对象
//以下代码编译错误,当省略包名后,会在当前包下找Test01,实际上是找com.bjpowernode.Test01(不存在)
// Test01 tt = new Test01();
// System.out.println(tt);
//修改以上错误,包名不可省略,添加包名
//结论:什么时候前面的包名可以省略? 本类(Test03)和创建对象的所属类(Test01)在同一包名下时
com.bjpowernode.javase.day11.Test01 t = new com.bjpowernode.javase.day11.Test01();
System.out.println(t);
}
}
package org.apache;
/**
* import语句用来完成导入其他类,但同一包下类无需导入
* 不再同一包下需要手动导入
* import语法格式:
* import 类名;
* import 包名.*;
* import语句需要编写在package语句之下,class语句之上
*/
// import com.bjpowernode.javase.day11.Test01;
import com.bjpowernode.javase.day11.*;
import java.util.Date;
//或者: import java.util.*;
public class Test04
{
public static void main(String[] args){
com.bjpowernode.javase.day11.Test01 t = new com.bjpowernode.javase.day11.Test01();
System.out.println(t);
com.bjpowernode.javase.day11.Test01 tt = new com.bjpowernode.javase.day11.Test01();
System.out.println(tt);
com.bjpowernode.javase.day11.Test01 ttt = new com.bjpowernode.javase.day11.Test01();
System.out.println(ttt);
//以上程序可以,但很麻烦
//以下程序利用了import
Test01 x = new Test01();
System.out.println(x); //com.bjpowernode.javase.day11.Test01
Test01 y = new Test01();
System.out.println(y); //com.bjpowernode.javase.day11.Test01
//java.lang.* 不需要手动导入,系统自动引入
//lang:language语言包,是java语言的核心类,不需要手动引入
String s = "abc";
System.out.println(s);
java.lang.String str = "def";
System.out.println(str);
//直接编写以下代码编译错误,因为Date类找不到
Date d = new Date();
System.out.println(d);
java.util.Date date = new java.util.Date();
System.out.println(date);
//使用import语句之后:import java.util.Date;
Date d1 = new Date();
System.out.println(d1);
}
}