
- 博主简介:努力学习的预备程序媛一枚~
- 博主主页: @是瑶瑶子啦
- 所属专栏: Java岛冒险记【从小白到大佬之路】

一个例子–管理学校学生:
在一个学校中,学生根据专业、年级、班级来划分。如果一个学校的学生不分年级、班级,一起上课,这当然是不合理的。因为不易于管理。还有一点,学校中的学生难免会有重名,所以在涉及到某个具体学生的时候,一定是说明:哪个专业,哪个年级,哪个班级(eg:计科221瑶瑶子),这样才能防止不必要的误会—防止重名。
类比:
一个Java程序/项目,有若干类组成。我们该如何管理这些类,和操作这些类呢?思路和上面的管理一个学校是完全一致的。
由上可知道,包其实就是一份空间用来存储类文件,这个包其实就是文件夹!


详解:java这个大包包中存放了若干小包,其中util包中(就是util文件夹中)存在各种工具类(工具类文件)。

【命名规则】
数字,字母,下划线,小圆点,不可以包含关键字,保留字. 关于小圆点:
/.

com.公司名.项目名.业务模块名
通过part2我们知道了,通过加上包名前缀来指定某个类,可以防止命名冲突,更好的来使用类。像下面这样:
package com.yaoyaoclass Demo {java.util.Scanner scanner = new Scanner(System.in);
}
but:这样不会累嘛!?是的,为了不让我们程序员这么累,于是一个一个关键字出现了----import
有了这个关键字,上面代码可以这些写:
package com.yayao;import java.util.Scanner;public class Demo {Scanner scanner = new Scanner(System.in);
}
【代码详解】:
package com.yaoyao:其实就是声明当前这个类在哪个目录下(路径下),说白了,就是一个人,不可能同时在两个地方!(就是用高级语言告诉计算机,它在哪,不然计算机都不知道!)。
import java.util.Scanner;:告诉计算机,接下来用到的Scanner类,是java.util包里面的。在编译的时候,会给下面的类的名称根据import来补全!(在编译的时候还是让类带上了全名,但是这就是计算机来做的了,我们程序员只要一句import就行,帮我们省力~)
import java.util.Scanner
import java.util.*
【细节】:建议使用到哪个类,就import 包名.类名。因为这样更具有可读性!虽然import 包名.*并不影响运行速度(因为不像C中的include会在把文件直接导进来),import声明只是方便编译器在编译时自动给下面类名补全,不需要我们程序员费力!
补充一些不用import 包名.*的理由:
1.编译速度:在一个很大的项目中,它们会极大的影响编译速度.但在小型项目中使用在编译时间上可以忽略不计。
2.命名冲突:解决避免命名冲突问题的答案就是使用全名。而按需导入恰恰就是使用导入声明初衷的否定。
3.说明问题:毕竟高级语言的代码是给人看的,按需导入看不出使用到的具体类型。
4.无名包问题:如果在编译单元的顶部没有包声明,Java编译器首选会从无名包中搜索一个类型,然后才是按需类型声明。如果有命名冲突就会产生问题。
【注意】:
package声明要放在类的最上面,且一个类中只能有一条packge 语句(一个人不可能在两个地方)import语句放在:package声明之后,类定义之前,可以有多条,没有顺序要求。java.lang:系统提供基本包,默认引入(不需要import)java.util:系统提供工具包,其中为工具类(如Scanner类)java.net:网络包(涉及网络开发)java.awt:做Java界面开发(GUI)参考文章:link
下期预告–详细讲解Java–访问修饰符
专栏系列文章:
- 【Java】还不懂this关键字?一分钟彻底弄懂this关键字
- 【JavaSE】一文看懂构造器/构造方法(Cunstructor)
- 【JavaSE】保姆级教程|1万字+10张图学会类与对象–建议收藏
原创不易,如果对你有所帮助,还请三连+关注!我是瑶瑶子,持续输出优质文章!
