• 概念
  • 导入包中的类
  • 静态导入
  • 将类放到包中
    • 基本规则
    • 操作步骤
  • 包的访问权限控制
  • 常见的系统包

概念

包(package) 是组织类的一种方式.
使用包的主要目的是保证类的唯一性.
例如:你在代码中写了一个 Test 类. 然后你的舍友也可能写一个 Test 类. 如果出现两个同名的类, 就会冲突, 导致代码不能编译通过。

导入包中的类

Java 中已经提供了很多现成的类供我们使用.当我们在idea中通过.操作符访问时会自动弹出很多包

public class Text {public static void main(String[] args) {java.util.Date date = new java.util.Date();//得到一个毫秒级别的时间戳System.out.println(date.getTime());}}

可以使用== java.util.Date== 这种方式引入 java.util 这个包中的== Date== 类。
但是这种写法比较麻烦一些, 可以使用 import 语句导入包。

import java.util.Date;//导入包
public class Test {public static void main(String[] args) {Date date = new Date();// 得到一个毫秒级别的时间戳System.out.println(date.getTime());}
}

再比如经常见到的Scanne与Arrays

import java.util.Arrays;
import java.util.Scanner;
public class Text {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//需要导入包int n = sc.nextInt();int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = sc.nextInt();}System.out.println(Arrays.toString(arr));//需要导入包}}


如果需要使用 java.util 中的其他类, 可以使用 import java.util.*

//本来是这样
import java.util.Date;
import java.util.Scanner;
public class Text {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Date date = new Date();}
}//然后是这样
import java.util.*;
public class Text {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Date date = new Date();//还可以写new util中的更多类}
}

但是我们更建议显式的指定要导入的类名. 否则还是容易出现冲突的情况。

import java.util.*;
import java.sql.*;
public class Test {public static void main(String[] args) {// util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译出错Date date = new Date();System.out.println(date.getTime());}
}
// 编译出错
Error:(5, 9) java: 对Date的引用不明确
java.sql 中的类 java.sql.Date 和 java.util 中的类 java.util.Date 都匹配//处理
import java.util.*;
import java.sql.*;
public class Test {public static void main(String[] args) {//这样就相当于点名道姓了java.util.Date date = new java.util.Date();System.out.println(date.getTime());}
}

静态导入

使用 import static 可以导入包中的静态的方法和字段.

import static java.lang.System.*;
public class Test {public static void main(String[] args) {out.println("hello");//打印不用写System了}
}//这样写代码有时候也方便
import static java.lang.Math.*;
public class Test {public static void main(String[] args) {double x = 30;double y = 40;// 静态导入的方式写起来更方便一些.// double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));double result = sqrt(pow(x, 2) + pow(y, 2));System.out.println(result);}
}

将类放到包中

基本规则

在文件的最上方加上一个 package 语句指定该代码在哪个包中
包名需要尽量指定成唯一的名字, 通常会用域名的颠倒形式(例如 com.bit.demo1 ).
包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径 com/bit/demo1 来存储代码.
如果一个类没有 package 语句, 则该类被放到一个默认包中

操作步骤

在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包

在弹出的对话框中输入包名

在包中创建类, 右键包名 -> 新建 -> 类, 然后输入类名即可

在新创建的 Test.java 文件的最上方, 就出现了一个 package 语句

包的访问权限控制

我们已经了解了类中的 public 和 private. private 中的成员只能被类的内部使用。
如果某个成员不包含 public 和 private 关键字, 此时这个成员可以在包内部的其他类使用, 但是不能在包外部的类使用。


package com.baidu.www;
public class Text {int a = 10;
}package com.baidu.www;
public class Text1 {public static void main(String[] args) {Text t = new Text();System.out.println(t.a);}
}
//执行结果
10

不可以在包的外部。

import com.bit.demo.Demo1;
public class Test {public static void main(String[] args) {Demo1 demo = new Demo1();System.out.println(demo.value);}
}
// 编译出错
Error:(6, 32) java: value在com.bit.demo.Demo1中不是公共的; 无法从外部程序包中对其进行访问

常见的系统包

  1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
  2. java.lang.reflect:java 反射编程包;
  3. java.net:进行网络编程开发包。
  4. java.sql:进行数据库开发的支持包。
  5. java.util:是java提供的工具程序包。(集合类等) 非常重要
  6. java.io:I/O编程开发包

Java 包(什么是包?)相关推荐

  1. java jar 和 war 包的区别

    一. jar 包 JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.JavaSE程序可以打包成Jar包(J其实可以理解为Java了). ...

  2. java学习笔记(八)----包,jar文件

    包  //建立包后同一个文件中的类都属于这个包,所有的类都必须按包名所对应的目录,在硬盘中存放.同一个包中的类在相互调用时,是不用指定包名的.    ---在编译时对于下面这个类,用这样的方法  ja ...

  3. java学习笔记(一) ----java下常用的包功能

    ***java下常用的包*** java.lang----包含一些java语言的核心类,如String,Math,Integer,System,Thread,提供常用的功能. java.awt---- ...

  4. java jar包和war包_java中jar包和war包之间有什么区别

    原标题:java中jar包和war包之间有什么区别 jar包 简单地说,JAR(Java Archive)是一种包文件格式.JAR文件具有.jar扩展名,可以包含库.资源和元数据文件. 本质上,它是一 ...

  5. java 内部类 返回值_Java基础第10天+形式参数和返回值的问题、包、导包、权限修饰符、常见的修饰符、内部类(局部内部类,成员内部类,匿名内部类)...

    1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该类的对象 抽象类名:返回的 ...

  6. java编译错误 程序包javax.servlet不存在javax.servlet.*

    java编译错误 程序包javax.servlet不存在javax.servlet.* 编译:javac Servlet.java 出现 软件包 javax.servlet 不存在 软件包javax. ...

  7. Java中的Atomic包

    Atomic包的作用 方便程序员在多线程环境下,无锁的进行原子操作 Atomic包核心 Atomic包里的类基本都是使用Unsafe实现的包装类,核心操作是CAS原子操作: 关于CAS compare ...

  8. Java中的Atomic包使用指南

    转载自 http://ifeve.com/java-atomic/ 本文首发于并发网,作者:方腾飞 引言 Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便 ...

  9. java项目打jar包

    http://www.cnblogs.com/tianguook/archive/2012/03/14/2396335.html java项目打jar包分为2种情况: 一.java项目没有导入第三方j ...

  10. linux 运行java jar_linux运行jar包、查看jar包进程、停止jar包

    要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行.而打包成jar包可以直接使用java命令执行.在linux系统中运行jar包 ...

最新文章

  1. Django Python:完整的BUNDLE + Django真实项目2021
  2. 新站优化远比老站难的多!
  3. Java虚拟机详解----JVM常见问题总结
  4. 【Linux】一步一步学Linux——bzip2recover命令(70)
  5. 在CRM呼叫中心的搜索结果点击Edit按钮后的处理逻辑
  6. 前端读取文件图片信息流;js读取图片不同信息流;js读取图片;前端就js读取二进制数据;前端js读取文件流使用FileReader对象的readAsDataURL方法来读取图像文件;
  7. 2019聊大考研计算机调剂,2019年聊城大学硕士研究生预调剂工作说明
  8. 1.8编程基础之多维数组 03 计算矩阵边缘元素之和 python
  9. js 数组 去重 算法(转载)
  10. 探索pytest的fixture(上)
  11. 中国节能吊扇行业市场供需与战略研究报告
  12. 计算机维护宝典,超齐全的维修宝典之电脑维修实例大全
  13. ruby学习笔记(7)
  14. 树莓派4b vnc黑屏显示Cannot currently show the desktop解决办法
  15. JAVA程序员必备网站
  16. 抠图应用程序设计(二)——磁性套索工具Livewire算法的实现
  17. php array =%3e变,https ipcrs.pbccrc.org.cn php的json和数组转换
  18. Elasticsearch搜索引擎一些参数含义和用法
  19. Go语言处理Windows系统的图标ICO文件(中)
  20. 【Linux】工具(3)——gcc/g++

热门文章

  1. 通达信最新交易接口系统开发源码有哪些?
  2. 使用MediaPlayer播放音频
  3. 微信小程序数据填充新闻详情页面
  4. 自动驾驶中车辆3Dbox检测相关论文
  5. cassandra nodetool 指令
  6. C语言实现求复数的模,开启面向对象编程之路
  7. 计算机提示msvcp140.dll丢失该如何修复?
  8. 我喜欢你是寂静的--聂鲁达
  9. R语言多项逻辑回归-因变量是无序多分类
  10. matlab中怎么灰色关联度,五种灰色关联度分析matlab代码