Java 包(什么是包?)
包
- 概念
- 导入包中的类
- 静态导入
- 将类放到包中
- 基本规则
- 操作步骤
- 包的访问权限控制
- 常见的系统包
概念
包(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中不是公共的; 无法从外部程序包中对其进行访问
常见的系统包
- java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
- java.lang.reflect:java 反射编程包;
- java.net:进行网络编程开发包。
- java.sql:进行数据库开发的支持包。
- java.util:是java提供的工具程序包。(集合类等) 非常重要
- java.io:I/O编程开发包
Java 包(什么是包?)相关推荐
- java jar 和 war 包的区别
一. jar 包 JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.JavaSE程序可以打包成Jar包(J其实可以理解为Java了). ...
- java学习笔记(八)----包,jar文件
包 //建立包后同一个文件中的类都属于这个包,所有的类都必须按包名所对应的目录,在硬盘中存放.同一个包中的类在相互调用时,是不用指定包名的. ---在编译时对于下面这个类,用这样的方法 ja ...
- java学习笔记(一) ----java下常用的包功能
***java下常用的包*** java.lang----包含一些java语言的核心类,如String,Math,Integer,System,Thread,提供常用的功能. java.awt---- ...
- java jar包和war包_java中jar包和war包之间有什么区别
原标题:java中jar包和war包之间有什么区别 jar包 简单地说,JAR(Java Archive)是一种包文件格式.JAR文件具有.jar扩展名,可以包含库.资源和元数据文件. 本质上,它是一 ...
- java 内部类 返回值_Java基础第10天+形式参数和返回值的问题、包、导包、权限修饰符、常见的修饰符、内部类(局部内部类,成员内部类,匿名内部类)...
1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该类的对象 抽象类名:返回的 ...
- java编译错误 程序包javax.servlet不存在javax.servlet.*
java编译错误 程序包javax.servlet不存在javax.servlet.* 编译:javac Servlet.java 出现 软件包 javax.servlet 不存在 软件包javax. ...
- Java中的Atomic包
Atomic包的作用 方便程序员在多线程环境下,无锁的进行原子操作 Atomic包核心 Atomic包里的类基本都是使用Unsafe实现的包装类,核心操作是CAS原子操作: 关于CAS compare ...
- Java中的Atomic包使用指南
转载自 http://ifeve.com/java-atomic/ 本文首发于并发网,作者:方腾飞 引言 Java从JDK1.5开始提供了java.util.concurrent.atomic包,方便 ...
- java项目打jar包
http://www.cnblogs.com/tianguook/archive/2012/03/14/2396335.html java项目打jar包分为2种情况: 一.java项目没有导入第三方j ...
- linux 运行java jar_linux运行jar包、查看jar包进程、停止jar包
要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行.而打包成jar包可以直接使用java命令执行.在linux系统中运行jar包 ...
最新文章
- Django Python:完整的BUNDLE + Django真实项目2021
- 新站优化远比老站难的多!
- Java虚拟机详解----JVM常见问题总结
- 【Linux】一步一步学Linux——bzip2recover命令(70)
- 在CRM呼叫中心的搜索结果点击Edit按钮后的处理逻辑
- 前端读取文件图片信息流;js读取图片不同信息流;js读取图片;前端就js读取二进制数据;前端js读取文件流使用FileReader对象的readAsDataURL方法来读取图像文件;
- 2019聊大考研计算机调剂,2019年聊城大学硕士研究生预调剂工作说明
- 1.8编程基础之多维数组 03 计算矩阵边缘元素之和 python
- js 数组 去重 算法(转载)
- 探索pytest的fixture(上)
- 中国节能吊扇行业市场供需与战略研究报告
- 计算机维护宝典,超齐全的维修宝典之电脑维修实例大全
- ruby学习笔记(7)
- 树莓派4b vnc黑屏显示Cannot currently show the desktop解决办法
- JAVA程序员必备网站
- 抠图应用程序设计(二)——磁性套索工具Livewire算法的实现
- php array =%3e变,https ipcrs.pbccrc.org.cn php的json和数组转换
- Elasticsearch搜索引擎一些参数含义和用法
- Go语言处理Windows系统的图标ICO文件(中)
- 【Linux】工具(3)——gcc/g++