Java类库以及它的基本组织结构
Java 类库概念: Java 的应用程序编程接口 (API (Application Programming Interface) )以包的形式来组织,每个包提供了大量的相关类、接口和异常处理类,这些包的集合就是 Java 的类库
例如我编写了一个类,可以获取计算机的各种硬件信息,它很强大很稳定,如果你的项目也需要这样一个功能,那么你就无需再自己编写代码,将我的类拿来直接用就可以。但是,我的类代码很复杂,让你读完这些代码不太现实,而且我也不希望你看到我的代码(你也没必要也不希望读懂这些晦涩的代码),我要保护我的版权,怎么办呢?
我可以先将我的类编译,并附带一个文档,告诉你我的类怎么使用,有哪些方法和属性,你只需要按照文档的说明来调用就完全没问题,既节省了你阅读代码的时间,也保护了我的版权。
例如,获取CPU信息的方法:getCpuInfo(int cpuType);这就是一个API。也就是说,该文档中描述的类的使用方法,就叫做API。
我也可以开发一个软件,用来清理计算机中的垃圾文件,我比较有公益心,希望让更多的开发人员使用我的软件,我就会在发布软件的同时附带一个说明文档,告诉你怎样在自己的程序中调用,这也叫做API。
看API方式
- 先看包名
- 再看类(j继承关系,类声明)
- 看类中方法(方法名,参数,返回类型,修饰符)
目录结构
Java类库中有很多包:
·以 java.* 开头的是Java的核心包,所有程序都会使用这些包中的类;
·以javax.* 开头的是扩展包,x 是 extension 的意思,也就是扩展。虽然 javax.* 是对java.* 的优化和扩展,但是由于 javax.* 使用的越来越多,很多程序都依赖于 javax.*,所以 javax.* 也是核心的一部分了,也随JDK 一起发布。
·以 org.* 开头的是各个机构或组织发布的包,因为这些组织很有影响力,它们的代码质量很高,所以也将它们开发的部分常用的类随JDK一起发布。
在包的命名方面,为了防止重名,有一个惯例:大家都以自己域名的倒写形式作为开头来为自己开发的包命名,例如百度发布的包会以com.baidu.* 开头,w3c组织发布的包会以org.w3c.* 开头,微学苑发布的包会以 net.weixueyuan.* 开头……
组织机构的域名后缀一般为org,公司的域名后缀一般为 com,可以认为org.* 开头的包为非盈利组织机构发布的包,它们一般是开源的,可以免费使用在自己的产品中,不用考虑侵权问题,而以com.* 开头的包往往由盈利性的公司发布,可能会有版权问题,使用时要注意。
java中常用的几个包介绍:
包名 | 说明 |
java.lang | 该包提供了Java编程的基础类,例如Object、Math、String、StringBuffer、System、Thread等,不使用该包就很难编写Java代码了。 |
java.applet | Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。 |
java.util | 该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 |
java.io | 该包通过文件系统、数据流和序列化提供系统的输入与输出。 |
java.net | 该包提供实现网络应用与开发的类。 |
java.sql | 该包提供了使用Java语言访问并处理存储在数据源(通常是一个关系型数据库)中的数据API。 |
java.awt | 这两个包提供了GUI设计与开发的类。java.awt包提供了创建界面和绘制图形图像的所有类,而javax.swing包提供了一组“轻量级”的组件,尽量让这些组件在所有平台上的工作方式相同。 |
javax.swing | |
java.text | 提供了与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 |
其他还有
10. java.beans 开发 Java Beans 需要的所有类
11. java.math 简明的整数算术以及十进制算术的基本函数
12. java.rmi 与远程方法调用相关的所有类
13. java.security 设计网络安全方案需要的一些类
常用的 Java 扩展包 (Java Extension Package)
1. javax.accessibility 定义了用户界面组件之间相互访问的一种机制
2. javax.naming.* 为命名服务提供了一系列类和接口
3. javax.swing.* 提供了一系列轻量级的用户界面组件,是目前 Java 用户界面常用的包
注 1:在使用 Java 时,除了 java.lang 外,其他的包都需要 import 语句引入之后才能使用。
重点讲解内容:java.lang和java.util。
java.lang 包
这个包称为 java 语言包,是由编译器自动引入的。程序中不必用 import 语句就可以使用。它所包含的类和接口对所有实际的 Java 程序都是必要的。
1. object 类
2. 数学类 (Math)
3. 数据类型类
4. 线程类
5. 字符串类 (String 类和 StringBuffer 类 )
6. 系统及运行类 (System 类和 Runtime 类 )
7. 错误和异常处理类 (Throwable 、 Exception 、 Error)
8. 过程类 (process)
java.util 包
1. 日期类、日历类( Data 、 Calendar 、 GregorianCalendar )
2. 随机数类( Random )
3. 位运算类( BitSet )
4. 矢量类( Vector )
5. 数据结构类( Stack )
6. 散列表类( Hashtable )
7. StringTokenizer类
下面简单说明一下java.lang包下的Object类和Math类。
Object类:
类 Object
是类层次结构的根类。每个类都使用 Object
作为超类。所有对象(包括数组)都实现这个类的方法。
下面说明Object类的几种常用方法:
示例1:
toString
public String toString()
- 返回:
- 该对象的字符串表示形式。
equals
- public boolean equals(Object obj)
返回:
- 指示其他某个对象是否与此对象“相等”(内容)。
package com.company; public class test {
/**
* 类库练习
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1,str2,str3,str4;
str1 = new String("ABC");
str2 = new String("ABC");
str3 = "ABC";
str4 = "ABC";
System.out.println(str1.toString());//用于返回该对象的信息
System.out.println(str1.equals(str2));
//判断内容是不是相等
System.out.println(str1.equals(str3));
System.out.println("+++++++++++++++++");
System.out.println(str1==str2);
//判断是不是相同
System.out.println(str1==str3);
System.out.println(str4==str3); } }
运行结果
ABC
true
true
+++++++++++++++++
false
false
true
Math类:
Math类中包含多种对数字数据处理的工具方法。
1.sqrt
public static double sqrt(double a)
返回正确舍入的 double
值的正平方根。
2.cbrt
public static double cbrt(double a)
返回 double
值的立方根。
3.pow
public static double pow(double a,double b)
返回第一个参数的第二个参数次幂的值。
4.round
public static long round(double a)
- 返回最接近参数的
long
。结果将舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为long
类型。换句话说,结果等于以下表达式的值:(long)Math.floor(a + 0.5d)
示例2:
package com.company; public class test01 { /**
* 类库练习
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//有一三角形土地,有两边本别长为400,500米,夹角70度,求土地面积。
//利用公式S=1/2*a*b*sinAB
double a = 400,b = 500;
double c=Math.PI*70/180; //用弧度制表示
System.out.println(a*b*(Math.sin(c))/2);
System.out.println("+++++++++++++++++");
//求平方根,立方根,n次幂,四舍五入,绝对值
System.out.println("10的平方根:"+Math.sqrt(10));
System.out.println("10的立方根:"+Math.cbrt(10));
System.out.println("25的4次方:"+Math.pow(25,4));
System.out.println("对3.5四舍五入:"+Math.round(3.5));
System.out.println("对-3.5四舍五入:"+Math.round(-3.5));
System.out.println("求两数-12和34的差"+Math.abs((-12)-34));
System.out.println("+++++++++++++++++");
//求两个数之中的大数、小数
double inter1,inter2;
inter1 = -123.45;
inter2 = 67.89;
System.out.println(Math.min(inter1, inter2));
System.out.println(Math.max(inter1, inter2));
System.out.println("+++++++++++++++++");
//随机数,每次运行产生的数是不一样的
int i,sum=0;
int array[] = new int [10];
for(i=0;i<=9;i++)
{
array[i]=(int)(Math.random()*900+100);
sum+=array[i];
}
System.out.println("随机数的平均值是:"+sum/10.0);
System.out.println("随机数分别是:");
for(i=0;i<=9;i++)
{
System.out.println(array[i]);
}
} }
运行结果
93969.26207859084
+++++++++++++++++
10的平方根:3.1622776601683795
10的立方根:2.154434690031884
25的4次方:390625.0
对3.5四舍五入:4
对-3.5四舍五入:-3
求两数-12和34的差46
+++++++++++++++++
-123.45
67.89
+++++++++++++++++
随机数的平均值是:564.5
随机数分别是:
578
301
546
713
745
256
199
638
716
953 Process finished with exit code 0
Java类库以及它的基本组织结构的更多相关文章
- Java 类库和常用类库
Java 类库概念: Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量的相关类.接口和异常处理类,这些包的集合就是 Java 的类库 包名以 Java 开始的包是 Java 核 ...
- [Liferay6.2]启动Tomcat提示APR不能在java类库路径中被找到的解决办法
问题描述 启动liferay之后,在控制台中打印出会打印出以下信息: 信息: The APR based Apache Tomcat Native library which allows optim ...
- 介绍4款json的java类库 及 其性能测试
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Lan ...
- 关于ECharts Java类库的一个jquery插件
在项目中开发图表功能时用到了Echars和一个关于Echars的java类库(http://git.oschina.net/free/ECharts).这个类库主要目的是方便在Java中构造EChar ...
- java类库
Java的应用程序接口(API)以包的形式来组织,每个包提供大量的相关类.接口和异常处理类,这些包的集合就是Java的类库. Java类库可以分为两种 包名以java开始的包是Java核心包(Java ...
- Effective Java 第三版——59. 熟悉并使用Java类库
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- 词典的实现(3)--使用JAVA类库ArrayList实现Map数据结构
1,在词典的实现(2)-借助顺序表(数组)实现词典文章中使用了自定义的数组代替ArrayList,并实现了Map数据结构的基本功能.而借助JAVA类库ArrayList类的一些方法可以更加容易地实现M ...
- 使用Java类库POI生成简易的Excel报表
使用Java类库POI生成简易的Excel报表 1.需求 1.数据库生成报表需要转义其中字段的信息.比如 1,有效 2.无效等 2.日期格式的自数据需要转义其格式. 3.标题的格式和数据的格式需要分别 ...
- Java类库和常用类库介绍
Java 类库概念: Java 的应用程序接口 (API) 以包的形式来组织,每个包提供了大量的相关类.接口和异常处理类,这些包的集合就是 Java 的类库 包名以 Java 开始的包是 Java 核 ...
随机推荐
- Servlet学习之Tomcat控制台中文乱码问题
Tomcat控制台中文乱码问题 在更新了IDEA2020.1版本后,可以安装官方的简体中文插件,方便我们日常使用,但是更新后再运行Tomcat时,控制台的输出日志出现中文乱码问题,接下来告诉大家如何修 ...
- Oracle数据库出现[23000][2291] ORA-02291: integrity constraint (SIMTH.SYS_C005306) violated异常
参考链接 这个异常发生在往中间表中插入数据时,这时出现异常是因为关联的某个表没有插入数据,所以给没有插入数据的关联表插入数据,再给中间表插入数据此时异常就会解决.
- turtle库常用函数
- PHP 循环 - While 循环
PHP 循环 - While 循环 循环执行代码块指定的次数,或者当指定的条件为真时循环执行代码块. PHP 循环 在您编写代码时,您经常需要让相同的代码块一次又一次地重复运行.我们可以在代码中使用循 ...
- luogu P5289 [十二省联考2019]皮配 背包
LINK:皮配 我承认是一道很难的题目. 不过对于这道题 部分分的提示显得尤为重要. 首先是 40分的暴力dp 很容易想 但是不容易写. 从40分可以发现我们只需要把蓝阵营和鸭派系的人数给存在起来就行 ...
- 5.5 省选模拟赛 B Permutation 构造 贪心
LINK:Permutation 对于这种构造神题 我自然是要补的.为啥就我没想出来哇. 30分还是很好写的 注意8!实际上很小 不需要爆搜 写bfs记录状态即可.至于判断状态是否出现与否 可以开ma ...
- python与pycharm的爱恨情仇
首先大家应该区别 这两者是什么? python 是一门语言 pycharm 是工具 还得交待的是 可以编译python的工具 不止这一款 比如说--eclipse idea ... eclipse中 ...
- Android 布局的一些控件的补充和布局的补充(今儿没课)
前面写的博客可能会有点乱: 1,是不太会排版. 2,就是我一边看书,一边听学长讲课,所以有的知识就融入进去了,我写的都是自己的意见和理解,大家取我精华,弃我糟粕哈. 今天是书上的内容,主要讲布局的,一 ...
- qt事件过滤器的使用(可以用于控制屏幕背光等)
在嵌入式qt项目中,有时并不需求屏幕一直亮着,需要一段时间不操作时,将屏幕背光关掉,以达到节能的目的: 在qt项目中,可以通过重写事件过滤器来实现屏幕操作的检测,加上定时器的时间控制,可以实现指定时间 ...
- jenkins集成spring boot持续化构建代码
我个人使用的是阿里云的云服务器,项目采用的是spring boot为框架,现在要做的功能就是将本地开发的代码提交到github中,通过jenkins自动化集成部署到云服务器.接下来开始步骤. 1 首先 ...