一、
终极结论:
1、package和import
1.1、package
第一: package 出现在java源文件第一行 。
第二:带有包名怎么编译? javac -d . xxx.java
第三:怎么运行?
java完整类名|
1.2、 import
import什么时候不需要?
java. lang不需要
同包下不帶要。
其它一律都需要。
怎么用?
import完整类名;
import包名.*;
1、为什么要使用package?
package是java中包机制。包机制的作用是为了方便程序的管理。
不同功能的类分别存放在不同的包下。(按照功能划分的,不同的
软件包具有不同的功能。)2、package怎么用?
package是一个关键字,后面加包名。例如:
package com.bjpowernode.javase.chapter17;
注意: package语句只允许出现在java源代码的第一行3、包名有没有命名规范?有
一般都采用公司域名倒序的方式(因为公司域名具有全球唯一性)
包名命名规范:
公司域名倒序+项目名+模块名+功能名4、对于带有package的java程序怎么编译?怎么运行?
采用之前的编译和运行不行了。
类名不再是: HelloWorld了 。
类名是: com.bjpowernode.javase.chapter17.HelloWorld
编译:
javac -d . HelloWorld.java
解释一下:
javac负责编译的命令
-d 带包编译
. 代表编译之后生成的东西放到当前目录下(点代表当前目录)
HelloWorld.java 代表被编译的java文件名。
运行:
java com.bjpowernode.javase.chapter17.HelloWorld
对于带有package的java程序的编译和运行在原始EditPlus工具里面已经和原始的javac HelloWorld.java 有所不同了:
在此目录下编写带有package程序代码:
package com.bjpowernode.javase.chapter16;
public class HelloWorld
{
public static void main(String[] args){
System.out.println("hello world");
}
}
能够用原来的编译方法进行编译:
但是运行的时候就出来了错误:
那么应该怎么编译和运行呢?
包路径如下所示:
HelloWorld完整类名: com.bjpowernode.javase.chapter17.HelloWorld
二、
在idea工具里面打包的方法如下:
输入包名即可:
三、两个程序在同一个包当中的时候,可以不用import导包机制进行调用
类中的代码如下所示:
package com.bjpowernode.javase.chapter16; // 和HelloWorld同一个包
public class Test01
{
public static void main(String[] args){
// 创建HelloWorld对象
// HelloWorld完整类名:com.bjpowernode.javase.chapter16.HelloWorld
com.bjpowernode.javase.chapter16.HelloWorld hw =new com.bjpowernode.javase.chapter16.HelloWorld();
System.out.println(hw);
// 思考:包名可以省略吗?
// 可以 因为HelloWorld和Test01在同一个package下
HelloWorld hw1 =new HelloWorld();
System.out.println(hw1);
}
}
运行结果如下:
四、关于import机制的使用
5、import什么时候使用?
A类中使用B类。
A和B类都在同一个包下。不需要import.
A和B类不在同一个包下。需要使用import.import怎么用?
import语句只能出现在package语句之下,class声明语句之上。
import语句还可以采用星号的方式
当Test02类和HelloWorld类不在同一个包下的时候不能进行相互调用:
package com; // 当不在同一个包下的时候
// import com.bjpowernode.javase.chapter16.HelloWorld; // 导HelloWorld
import com.bjpowernode.javase.chapter16.*; // *代表所有 即可以把这个包名下的所有类
public class Test02
{
public static void main(String[] args){
/*
// 报错: 找不到符号
// 不在同一个包下不能省略包名
HelloWorld hw =new HelloWorld();
System.out.println(hw);
*/
/*
// 去 com.bjpowernode.javase.chapter16包里面找到HelloWorld才能进行调用
// 显然这样写的话代码太过于冗余
// 因此我们可以把HelloWorld所在的包import导入进来直接进行HelloWorld调用
com.bjpowernode.javase.chapter16.HelloWorld hw1 =new com.bjpowernode.javase.chapter16.HelloWorld();
System.out.println(hw1);//com.bjpowernode.javase.chapter16.HelloWorld@15db9742
com.bjpowernode.javase.chapter16.HelloWorld hw2 =new com.bjpowernode.javase.chapter16.HelloWorld();
System.out.println(hw2);//com.bjpowernode.javase.chapter16.HelloWorld@6d06d69c
com.bjpowernode.javase.chapter16.HelloWorld hw3 =new com.bjpowernode.javase.chapter16.HelloWorld();
System.out.println(hw3);com.bjpowernode.javase.chapter16.HelloWorld@7852e922
*/
HelloWorld hw =new HelloWorld();
System.out.println(hw); //com.bjpowernode.javase.chapter16.HelloWorld@15db9742
}
}
五、解释Scanner
package com.bjpowernode.javase.chapter16;
import java.util.Scanner; // 导入Scanner类的包 import java.util.*;
public class Test03
{
public static void main(String[] args){
/*
// 为什么要这样写?
// Test03类和Scanner类[SUN公司编写的]不在同一个包下
// java.util 就是Scanner类的包名
java.util.Scanner s =new java.util.Scanner(System.in);
String str =s.next();
System.out.println("你输入的字符串是:"+str);
*/
// 还可以这样写
Scanner s =new Scanner(System.in);
String str =s.next();
System.out.println("字符串:"+str);
}
}