首页编程java编程java 什么是无名包?在Java中 什么叫包包有什么用途如何创建包

java 什么是无名包?在Java中 什么叫包包有什么用途如何创建包

编程之家2023-10-11113次浏览

大家好,今天小编来为大家解答java 什么是无名包这个问题,在Java中 什么叫包包有什么用途如何创建包很多人还不知道,现在让我们一起来看看吧!

java 什么是无名包?在Java中 什么叫包包有什么用途如何创建包

Java引入上级目录中的包

1.那么包名和实际物理路径有什么关系?

答:包名必须出现在实际路径中的一部分,只是一段,不可能是绝对路径.而这个段的起点,就是包含了classpath目录的一个.

可以看到如下代码,是eclipse自动生成的.classpath文件,其中classpath就包含了testsrc, src,而这两个目录下都有个子目录 coolUnit,这个就是包名的开始.

java 什么是无名包?在Java中 什么叫包包有什么用途如何创建包

<?xml version="1.0" encoding="UTF-8"?>

<classpath>

<classpathentry kind="src" path="src"/>

java 什么是无名包?在Java中 什么叫包包有什么用途如何创建包

<classpathentry kind="src" path="testsrc"/>

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>

<classpathentry kind="output" path="bin"/>

</classpath>

2.相同包名如果可以存储在不同物理路径下, java编译器如何找到对应的类?

答:当然可以存储在不同的物理路径下,只不过这两个路径中,有一部分必须相同,即包名包括的部分.置于java编译器如何找到,简单,就是把从包名的起点的上层目录添加到classpath中了,这样就可以找到对应了类了.类似上边的testsrc, src,这两个目录都被添加进了classpath(当然这个工作是eclipse替我们完成的,如果是我们自己编译,不借助eclipse,就需要指定 javac–classpath把这两个目录加进去)

3.这里肯定跟classpath有关,不可能你随便写个java类, java编译器都能找到,那么如何引入自己写的类呢?

如何引用自己的类的,就是将自己的类的包名的起点的上层目录作为 javac–classpath参数传入,这样的目的是让java编译器找到你的类所在的位置.

综上:包名是抽象出来的类的空间,虽然在物理上存储需要文件夹配合层次,但是关键,这个层次不是绝对路径,只是路径中的一部分,所以,我们完全可以将代码放在不同路径下,只要路径中对应包名的部分相同就可以了.

为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包.

Java中的包一般均包含相关的类,例如,所有关于交通工具的类都可以放到名为Transportation的包中.

包语句格式:

package pkg1[.pkg2[.pkg3…]];

程序中如果有package语句,该语句一定是源文件中的第一条可执行语句,它的前面只能有注释或空行。另外,一个文件中最多只能有一条package语句.

包的名字有层次关系,各层之间以点分隔。包层次必须与Java开发系统的文件系统结构相同(并非绝对路径)。通常包名中全部用小写字母,这与类名以大写字母开头,且各字的首字母亦大写的命名约定有所不同。

当使用包说明时,程序中无需再引用(import)同一个包或该包的任何元素。import语句只用来将其他包中的类引入当前名字空间中。而当前包总是处于当前名字空间中.

如果文件声明如下:

package java.awt.image

则此文件必须存放在Windows的java\awt\image目录下或unix的java/awt/image目录下。

问题出现了:因为路径不可能是绝对的,即从根目录开始一直向下,所以目录的开始位置,只需要是classpath包含的位置就可以了.

这才是问题解决的关键.从这点说,包名是抽象的.

Java程序中,import的作用是什么

导入支持类(可以是JDK基础类或者自己编写的类),可以供本类调用方法和属性。

java中import用法单类型导入(single-type-import),例如import

java.io.File;按需类型导入(type-import-on-demand),例如

import

java.io.*;关于这两种导入类型大家各有所爱,众说纷纭。这里分析一下这两种导入类型的大致工作原理供大家参考。单类型导入比较好理解,仅仅导入一个public类或者接口。而对于按需类型导入,有人误解为导入一个包下的所有类,其实不然,看名字就知道,他只会按需导入,也就是说它并非导入整个包,而仅仅导入当前类需要使用的类。既然如此是不是就可以放心的使用按需类型导入呢?非也,非也。因为单类型导入和按需类型导入对类文件的定位算法是不一样的。java编译器会从启动目录(bootstrap),扩展目录(extension)和用户类路径下去定位需要导入的类,而这些目录进仅仅是给出了类的顶层目录。编译器的类文件定位方法大致可以理解为如下公式:顶层路径名

\

包名

\

文件名.class

=

绝对路径对于单类型导入很简单,因为包明和文件名都已经确定,所以可以一次性查找定位。对于按需类型导入则比较复杂,编译器会把包名和文件名进行排列组合,然后对所有的可能性进行类文件查找定位。例如:package

com;import

java.io.*;import

java.util.*;当你的类文件中用到了File类,那么可能出现File类的地方如下File

\\

File类属于无名包,就是说File类没有package语句,编译器会首先搜索无名包com.File

\\

File类属于当前包java.lang.File

\\编译器会自动导入java.lang包java.io.Filejava.util.File需要注意的地方就是,编译器找到java.io.File类之后并不会停止下一步的寻找,而要把所有的可能性都查找完以确定是否有类导入冲突。假设此时的顶层路径有三个,那么编译器就会进行3*5=15次查找。了解以上原理之后,我们可以得出这样的结论:按需类型导入是绝对不会降低Java代码的执行效率的,但会影响到Java代码的编译速度。查看JDK的源代码就知道SUN的软件工程师一般不会使用按需类型导入。因为使用单类型导入至少有以下两点好处:1。提高编译速度。2。避免命名冲突。(例如:当你import

java.awt.*;import

java.util.*后,使用List的时候编译器将会出编译错误)当然,使用单类型导入会使用你的import语句看起来很长。

java如何导入包

1、首先在项目下创建一个新的文件夹,用来保存jar包。在项目名上点击鼠标右键,按顺序点击【New】→【Floder】,打开新建文件夹的窗口

2、输入文件夹名称【lib】,点击【ok】。通常在lib文件夹中存放从外部引入的jar包

3、找到要引入的jar包,鼠标选中需要用的jar包,然后按住鼠标左键不放,把jar包拖动到lib文件夹中。又或者是先复制jar包,接着在lib文件夹上右击,选择复制。打开选择框,在弹出的选择框中选择默认的【copy files】,点击【OK】关闭。接着就可以在lib文件夹下看到复制成功的jar包。

4、这时,只是把jar包复制到项目中,还不能够使用。需要再在项目名上点击鼠标右键,按顺序选择

【Build Path】→【Configure Build Path...】。

5、在打开的窗口中,选中【Libraries】页,从右边一栏的按钮中点击【add JARs...】

6、在打开的窗口中,按照顺序展开本项目和lib文件夹,然后选中刚刚复制到项目中的jar包,点击【OK】关闭窗口

7、在刚刚打开的【Libraries】页面中,可以看到刚刚引入的jar包名称。点击【OK】确认。

8、这个时候,在【Eclipse】中,就可以找到并且开始使用这个jar包了。

在Java中 什么叫包包有什么用途如何创建包

1.什么叫包?

为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,例如,所有关于交通工具的类都可以放到名为Transportation的包中。

2.包有什么用途?

如上所述,更好的组织类,防止在一个空间下出现类重名啊这些情况;表明类之间的层次关系。

3.如何创建包?

不使用IDE工具的话,创建包既为创建文件夹,新建类后在类开端加上包名即可;

使用IDE工具的话,会更加方便new Package,指定包名即可。

关于java 什么是无名包,在Java中 什么叫包包有什么用途如何创建包的介绍到此结束,希望对大家有所帮助。

盘发(盘发发型简单又好看)javavoid是什么意思 在JAVA中 void表示什么意思