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 核 ...
随机推荐
- 数据结构C语言实现----顺序查找
建立上图的一个txt文件: 1004 TOM 1001002 lily 951001 ann 931003 lucy 98 用一个c程序读入这个表一个结构体数组中: 结构体如下: //学生数据结构体 ...
- express,node.js实现获取本地文件夹下面的全部图片文件
http://www.luyixian.cn/javascript_show_169354.aspx 按照网上的教程试了多次,处理了各种结果后还有报错, 最后的报错是cant find module ...
- PHP strtr() 函数
实例 把字符串中的字符 "ia" 替换成 "eo":高佣联盟 www.cgewang.com <?php echo strtr("Hilla W ...
- luogu P5410 模板 扩展 KMP Z函数 模板
LINK:P5410 模板 扩展 KMP Z 函数 画了10min学习了一下. 不算很难 思想就是利用前面的最长匹配来更新后面的东西. 复杂度是线性的 如果不要求线性可能直接上SA更舒服一点? 不管了 ...
- 错误记录:MIME type may not contain reserved characters
最近遇到个问题,随手记录一下! 新做了一个项目,要通过HTTP请求发送ZIP文件到OSS平台,但上传过程中,总是出现下面错误提示: 初步判定,应该是包冲突原因!于是,分析MIME-TYPE获取源码发现 ...
- [转]HashMap详解
转自微信公众号 安琪拉的博客 1. HashMap的内部数据结构? JDK1.8版本的,内部使用数组 + 链表 / 红黑树:数据结构如下图: 2. HashMap的数据插入原理吗? 1.判断数组是否 ...
- SpringBoot 发送邮件和附件
作者:yizhiwaz 链接:www.jianshu.com/p/5eb000544dd7 源码:https://github.com/yizhiwazi/springboot-socks 其他文章: ...
- 微信小程序订阅消息调研
相关资料 背景:微信模板消息已正式下架,改为订阅消息,详情如下: 服务变更通知 订阅消息:订阅消息相关内容如下: 订阅消息 接口设计 获取接口访问凭证 :根据appId和secret获取接口访问凭证a ...
- Spring 自动装配机制
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...
- JS中的数组复制问题
JS中的数组复制问题 前言 首先提到复制,也就是拷贝问题,就必须要明确浅拷贝和深拷贝. 浅拷贝:B由A复制而来,改变B的内容,A也改变 深拷贝:B由A复制而来,改变B的内容,A的内容不会改变 总的来说 ...