java中的包可以分为两种:内置包、用户自己定义的包。这里介绍的是用户自定义的包。

一、包的使用

1、创建PackageTest.java

package com.packtest;

public class PackageTest {
    public void getTest() {
        System.out.println("my method is getTest of package one");
    }
    public static void main(String []args) {
        System.out.println("welcome to package one");
    }
}

2、运行包

执行下面命令(-d:表示文件路径。点:表示当前路径)

javac -d . PackageTest.java

然后就会在当前路径生成我们创建的包:com.packtest(一个包可以创建多个类,这里是PackageTest类),以及在包中的类:PackageTest.class。

执行下面命令来运行这个类:

java com.packtest.PackageTest

结果:

 二、通过import访问包

1、创建PackageTestTwo.java

package com.packtesttwo;
import com.packtest.*;

public class PackageTestTwo {
    public static void main(String []args) {
        PackageTest test = new PackageTest();
        test.getTest();
        System.out.println("welcome to package two");                                                                                                                                                        

    }
}

import com.packtest.*也可以换成import com.packtest.PackageTest(PackageTest为某个具体类名。)

2、运行包

这里我们调用了第一个程序“PackageTest.java”中的类”PackageTest“中的方法”getTest()“。

javac -d . PackageTestTwo.java
java com.packtesttwo.PackageTestTwo

结果如下:

可以看到成功执行PackageTest.java中的方法”getTest()“。

三、通过完全限定名访问包

1、创建PackageTestThree.java

package com.packtestthree;

public class PackageTestThree {
    public static void main(String []args) {
        com.packtest.PackageTest test = new com.packtest.PackageTest();
        test.getTest();
        System.out.println("welcome to package three");

    }
}

可以看到通过com.packtest.PackageTest来限定名,直接定位到PackageTest类。所以只对当前类有效。

2、运行包

javac -d . PackageTestThree.java
java com.packtesttwo.PackageTestThree

结果如下:

可以看到成功执行PackageTest.java中的方法”getTest()“。

 四、不同目录包的使用

通过下面命令将包和类放到了当前路径下的dir文件夹。

javac -d dir PackageTest.java

我们执行下面命令就行直接找到我们需要的包与类。

java -classpath dir/ com.packtest.PackageTest

这里的-classpath表示指向dir文件夹的路径。

最后结果:

 五、总结

包与import的使用类似于c语言中的头文件、源文件的使用。

Java 包的理解与使用的更多相关文章

  1. Java基础之理解Annotation(与@有关,即是注释)

    Java基础之理解Annotation 一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata) ...

  2. Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包

    Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...

  3. 谈谈你对 Java 平台的理解

    声明 本篇所涉及的提问,正文的知识点,全都来自于杨晓峰的<Java核心技术36讲>,当然,我并不会全文照搬过来,毕竟这是付费的课程,应该会涉及到侵权之类的问题. 所以,本篇正文中的知识点, ...

  4. java提高篇-----理解java的三大特性之封装

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  5. 夯实Java基础系列5:Java文件和Java包结构

    目录 Java中的包概念 包的作用 package 的目录结构 设置 CLASSPATH 系统变量 常用jar包 java软件包的类型 dt.jar rt.jar *.java文件的奥秘 *.Java ...

  6. Java包package之间调用问题-cmd运行窗口编译运行

    问题:在使用了java包机制(package)后,编译出现错误:找不到或无法加载主类 xxx 的错误提示信息(各种编译不通过) 先给演示结果: 编译:javac -d classes src/a/He ...

  7. Java学习笔记(2)--- 对象和类入门,java包,this 和 super区别

    1.对象和类(Object and class): 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 面对对象编程是java非常重要的一部分,作者本身之前学过c ...

  8. Java包的基本概述

    第七章 7.1 包的基本概述 起因: 在我们设计一个程序的时候(尤其是多人合作),会写一些类来实现功能,但是往往会有重名的现象发生,为了解决这个问题,则专门设计了包.(还有其他作用,下述) 简单理解: ...

  9. Java文件和Java包结构

    Java中的包概念 Java中的包是封装一组类,子包和接口的机制.软件包用于: 防止命名冲突.例如,可以有两个名称分别为Employee的类,college.staff.cse.Employee和co ...

随机推荐

  1. SDN与IXP

    IXP 互联网交换中心(IXP)在互联网生态系统中发挥着关键作用.在全球范围内,100多个国家/地区有超过400个IXP,其中最大的IXP具有接近10 Tbps的峰值数据速率并连接数百个网络.IXP提 ...

  2. Lucene4.2源码解析之fdt和fdx文件的读写——fdx文件存储一个个的Block,每个Block管理着一批Chunk,通过docID读取到document需要完成Segment、Block、Chunk、document四级查询,引入了LZ4算法对fdt的chunk docs进行了实时压缩/解压

    前言 通常在搜索打分完毕后,IndexSearcher会返回一个docID序列,但是仅仅有docID我们是无法看到存储在索引中的document,这时候就需要通过docID来得到完整Document信 ...

  3. [Andorid] 通过JNI实现kernel与app进行spi通讯

    CPU:RK3399 系统:Android 7.1 人脸识别的要求越来越高,因此主板增加了 SE 加密芯片,加密芯片通过 spi 接口与 CPU 通讯. 对于 kernel 层的代码,Linux 原始 ...

  4. Go 语言入门(三)并发

    写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(三 ...

  5. 一个hin秀的小学三年级奥数题 [hin秀]

    ~~~~~~不知为何总会被小学的题虐哭QAQ,真的秀啊,毒害广大小朋友~~~~~~ 一个hin秀的小学三年级奥数题    [hin秀] 题目: 给出一个无限大的棋盘  n×n  (n>0 , 是 ...

  6. 腾讯基于 Flink 的实时流计算平台演进之路

    https://mp.weixin.qq.com/s/MGnG_Mpf6CUQWLJHvmWqLA

  7. Flutter布局基本情况总结:

    1.一行内容,发布两边: 效果: Flex( direction: Axis.horizontal, children: <Widget>[ Expanded( flex: , child ...

  8. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_14-认证接口开发-需求分析

    4 认证接口开发 4.1 需求分析 用户登录的流程图如下: 执行流程: 1.用户登录,请求认证服务 2.认证服务认证通过,生成jwt令牌,将jwt令牌及相关信息写入Redis,并且将身份令牌写入coo ...

  9. thymeleaf动态拼接class

    场景:站内消息,一些已读的要区别与未读的. <table class="layui-table"> <thead> <tr> <th la ...

  10. LeetCode_108. Convert Sorted Array to Binary Search Tree

    108. Convert Sorted Array to Binary Search Tree Easy Given an array where elements are sorted in asc ...