Java进阶——包机制概述

关于java语言的中的package和import机制:

  • 为什么要使用package?

    package是java 中包机制。包机制的作用是为了方便程序的管理。
    不同功能的类分别存放在不同的包下。(按照功能划分的,不同的软件包具有不同的功能。)

  • package怎么用?

    package是一个关键字,后面加包名。例如:
    package com.bjpowernode.javase.chapter17;
    注意:package语句只允许出现在java源代码的第一行。

  • 包名有没有命名规范?有

    一般都采用公司域名倒序的方式(因为公司域名具有全球唯一性)
    包命名规范:
    公司域名倒序 + 项目名 + 模块名 + 功能名

  • 对带有package的Java 程序怎么编译?怎么运行?
    采用之前的编译和运行不行了。
    类名不再是:HelloWorld了。
    类名是:com.bjpowernode.javase.chapter17.HelloWorld

      	编译:
      		javac -d . HelloWorld.java
      		解释一下:
      			javac 负责编译的命令
      			-d		带包编译
      			.		代表编译之后生成的东西放到当前目录下(点代表当前目录)
      			HelloWorld.java  被编译的java文件名。
      		
      	运行:
      		java com.bjpowernode.javase.chapter17.HelloWorld
    
  • 关于import的使用。

     	import什么时候使用?
     		A类中使用B类。
     		A和B类都在同一个包下。不需要import。
     		A和B类不在同一个包下。需要使用import。
     		java.lang.*;这个包下的类不需要使用import导入。
    
     	import怎么用?
     		import语句只能出现在package语句之下,class声明语句之上。
     		import语句还可以采用星号的方式。
    
package com.bjpowernode.javase.chapter17;

public class HelloWorld{
	public static void main(String[] args){
		System.out.println("Hello World!");
	}
}

package com.bjpowernode.javase.chapter17;

public class Test01{
	public static void main(String[] args){

		// 创建HelloWorld对象
		// HelloWorld的完整类名:com.bjpowernode.javase.chapter17.HelloWorld
		com.bjpowernode.javase.chapter17.HelloWorld hw = new com.bjpowernode.javase.chapter17.HelloWorld();

		System.out.println(hw); //com.bjpowernode.javase.chapter17.HelloWorld@28a418fc

		// 包名可以省略吗?
		// 思考:这里的包名之所以可以省略,是因为HelloWorld和Test01在同一个package下。
		HelloWorld hw2 = new HelloWorld();
		System.out.println(hw2); //com.bjpowernode.javase.chapter17.HelloWorld@5305068a
	}
}
package com;

// 将需要的类导入。
//import com.bjpowernode.javase.chapter17.HelloWorld;
import com.bjpowernode.javase.chapter17.*;

public class Test02{
	public static void main(String[] args){
		/*
			Test02在com包下。
			HelloWorld在com.bjpowernode.javase.chapter17下。
			不在同一个package下,包名可以省略吗?
				不能省略。
		*/
		//错误: 找不到符号
		/*
		HelloWorld hw = new HelloWorld();
		System.out.println(hw);
		*/

		/*
		com.bjpowernode.javase.chapter17.HelloWorld hw = new com.bjpowernode.javase.chapter17.HelloWorld();
		System.out.println(hw);

		com.bjpowernode.javase.chapter17.HelloWorld hw2 = new com.bjpowernode.javase.chapter17.HelloWorld();
		System.out.println(hw2);

		com.bjpowernode.javase.chapter17.HelloWorld hw3 = new com.bjpowernode.javase.chapter17.HelloWorld();
		System.out.println(hw3);
		*/

		HelloWorld hw1 = new HelloWorld();
		System.out.println(hw1);

		HelloWorld hw2 = new HelloWorld();
		System.out.println(hw2);
	}
}

package com.bjpowernode.javase.chapter17;

//import java.util.Scanner;
import java.util.*;

public class Test03{
	public static void main(String[] args){

		// 为什么要这样写?
		// Test03类和Scanner类不在同一个包下。
		// java.util就是Scanner类的包名。
		//java.util.Scanner s = new java.util.Scanner(System.in);	

		Scanner s = new Scanner(System.in);
		String str = s.next();
		System.out.println("您输入的字符串是--->" + str);

		java.lang.String name = "zhangsan";
		System.out.println("名字是:" + name);

		String username = "lisi";
		System.out.println("用户名是:" + username);
	}
}

package和import总结

1、package
	第一:package出现在java源文件第一行。
	第二:带有包名怎么编译?javac -d . xxx.java
	第三:怎么运行?java 完整类名

	补充:以后说类名的时候,如果带着包名描述,表示完整类名。
	如果没有带包,描述的话,表示简类名。
		java.util.Scanner 完整类名。
		Scanner 简类名

2、import

	import什么时候不需要?
		java.lang不需要。
		同包下不需要。 
		其它一律都需要。

	怎么用?
		import 完整类名;
		import 包名.*;

		import java.util.Scanner; // 完整类名。

		// 有疑问:这样是不是效率比较低。
		// 这个效率不低,因为编译器在编译的时候,会自动把*变成具体的类名。
		import java.util.*;

		// 想省懒劲你不能太省了。
		import java.*; 这是不允许的,因为在java语言中规定,这里的*只代表某些类的名字。

访问控制权限

1.1、访问控制权限都有哪些?
	4个。
	private	私有
	public 公开

	protected	受保护
	默认

1.2、以上的4个访问控制权限:控制的范围是什么?
	private 表示私有的,只能在本类中访问
	public 表示公开的,在任何位置都可以访问
	“默认”表示只能在本类,以及同包下访问。
	protected表示只能在本类、同包、子类中访问。

	访问控制修饰符			本类			同包			子类			任意位置
	---------------------------------------------------------------------------
	public					可以			可以			可以			可以
	protected				可以			可以			可以			不行
	默认					    可以			可以			不行			不行
	private					可以			不行			不行			不行

	这个不要死记硬背,自己下去之后编写代码自己测试。

	范围从大到小排序:public > protected > 默认 > private

1.3、访问控制权限修饰符可以修饰什么?
	属性(4个都能用)
	方法(4个都能用)
	类(public和默认能用,其它不行。)
	接口(public和默认能用,其它不行。)
	.....

下一篇:Object类的toString()方法、equals方法、finalize()方法、hashCode方法

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值