• 理解Java中【包】的概念


    Java中用package关键字定义一个包,下面通过几个实验,理解Java中的包的概念和作用。

    实验1:先看一个无包的情形

    在G盘下新建一个Test.java,如图1:


    写下面这些代码

    <span style="font-size:24px;">public class PackageTest{
    
        public static void main(String args[]){
    
    	System.out.println("Hello World!");    
        
        }
    }</span>
    然后保存,然后打开控制台(win+R--输入cmd--回车即可),输入  G:--回车  进入G盘,输入  javac PackageTest.java  编译PackageTest.java,具体如下图:


    编译成功之后,会发现与PackageTest.java同目录下多了一个文---PackageTest.class,运行的时候执行的就是该文件,如下图:


    运行这个程序,在控制台输入 java PackageTest ,运行结果如下:


    这是没有包的情形,下面看看有包的情形。

    实验2:

    将实验1中的G盘下的PackageTest.class文件删除,打开PackageTest.java,在前面加上这些内容:

    <span style="font-size:24px;">package p1.p2.p3;
    </span>

    再在控制台输入javac PackageTest.java编译程序,如果没有其他提示证明编译成功,编译结果如下:


    同样可以查看G盘下又多了一个PackageTest.class文件,用同样的方法运行程序,在控制台输入java PackageTest,结果是这样的:


    意思就是找不到PackageTest这个类,为什么呢?因为在PackageTest.java中定义了包。如何解决这个问题呢?

    接下来,我们在G盘下新建一个文件夹p1,在p1下新建一个文件夹p2,在p2下新建一个文件p3,再把G盘下的PackageTest.class文件放到文件夹p3中,如下图:


    再在控制台运行这个程序,输入java PackageTest,结果如下:


    还是找不到这个类,为什么呢?因为这个类的名字不是PackageTest了,而是p1.p2.p3.PackageTest了,所以正确运行这个程序的方法是:

    在控制台输入 java p1.p2.p3.PackageTest 就能得到想要的结果了:


    从上面的实验可以看出:

    1.包对.java源文件没有作用,只对.class字节码文件起作用。

    2.包相当于一个字节码的相对路径。例如上例中PackageTest.class的绝对路径就是:

    G:p1p2p3

    引入包可以防止文件名之间的冲突(例如一个公司的网站域名为:www.abc.def.cn,则这个公司的程序员可以将所有的包设置为cn.def.abc)。

  • 相关阅读:
    pdf文件预览实现
    RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 问题解决
    Git、GitHub、GitLab三者之间的联系及区别(转)
    html中:befoer和:after用法(转)
    html中box-shadow用法(转)
    js/vue实现滑块验证(方法3)
    vue实现滑块验证(使用awsc实现)(方法1)
    js/vue实现滑块验证(组件形式,可重复调用)(方法2)
    js实现图片上传
    【英语】IT English (随时更新...)
  • 原文地址:https://www.cnblogs.com/tensory/p/6590791.html
Copyright © 2020-2023  润新知