Java编程那些事儿74——java.lang包介绍1

陈跃峰

出自:http://blog.csdn.net/mailbomb

9.4 JDK API包名综述

在整个JDK API中,大约包含1、200个包,总体来看,包名第一个名称主要有三种:java、javax和org。其中以java开头的包名是JDK的基础语言包,以javax开头的属于JDK扩展包(其中x是extend的简写),而以org开头的则是第三方组织提供的功能包(org是organization的简写)。而在JDK API中还包含了一些以com.sun开头的包名,这些是SUN公司提供的一些功能包,由于这些包中的类随着JDK版本的更改变化很大,不具备兼容性,所以未在标准的JDK API文档中进行公开。

在本章接下来的内容中,首先介绍常用的类的功能以及基本使用,这些介绍主要涵盖java.lang包和java.util包中的内容。

9.5 java.lang包

java.lang包是Java基础语言包(其中lang是language(语言)的简写),该包中包含Java语言所需要的基本的功能类、接口等信息,是进行Java语言编程的基础。

由于在进行Java语言编程时,该包的使用特别频繁,所以在Java语言中,该包是被默认引入的。

下面就介绍一下该包中常见类的功能以及相关使用。

9.5.1 Object

Object类Java语言的灵魂,因为所有的类(除了Object类),都是该类的子类,即使不书写继承,系统也会自动继承该类,所以Object是整个Java语言继承树的唯一一个根,这就是Java语言特色的单根继承体系。包括数组也实现了该类中的方法。

由于Java语言的这种单根继承体系,所以整个Java语言的结构中很方便的实现了很多复杂的特性,例如多线程等控制,也可以很方便的对于整个Java语言体系进行更新。

由于Object类是Java语言中所有类的父类,所以Object类中的方法将出现在每个类的内部,熟悉该类中的常见方法中的使用,是每个程序员学习的基础。

1、equals方法

equals方法实现的功能是判断两个对象的内容是否相同。Object类中该方法的实现很简单,Object类中equals方法实现的代码如下(说明:该代码可以从JDK安装目录下的src.zip中找到):

public boolean equals(Object obj) {

return (this == obj);

}

在Object类中方法的实现比较简单,如果真正需要在项目中进行比较时,这个equals方法的作用是无法达到实际的要求的。所以如果在项目中涉及的类需要比较该类型的对象时,则必须覆盖equals方法。

下面以一个简单的类为示例,编写一个简单的equals方法,源代码如下:

/**

* equals方法编写示例

*/

public class MyEquals {

/**对象成员变量*/

String name;

/**基本数据类型成员变量*/

int n;

/**

* 判断对象内容是否相同

* @param obj 需要比较的对象

*/

public boolean equals(Object obj){

//如果比较的内容是自身

if(obj == this){

return true;

}

//对象类型不同

if(!(obj instanceof MyEquals)){

return false;

}

//转换成当前类类型

MyEquals m = (MyEquals)obj;

/*依次比较对象中每个变量*/

//name属性不同

if(!name.equals(m.name)){

return false;

}

//n属性不同

if(!(n == m.n)){

return false;

}

//如果都相同,则返回true

return true;

}

}

在实际比较时,首先判断是否是自身,然后再判断对象的类型是否符合要求,可以使用instanceof关键字进行判断,该运算符的语法格式为:

对象名 instanceof 类名

如果对象名是后续类名类型的对象,则结果为true,否则为false。

如果类型符合要求,然后就可以依次比较对象中每个属性的值是否相同了,如果有一个属性的值不相同则不相等。

2、finalize方法

finalize方法的作用和前面介绍的构造方法的概念刚好相反,构造方法的作用是初始化一个对象,而finalize方法的作用是释放一个对象占用的内存空间时,会被JVM自动调用的方法。

说明:finalize方法的作用和C++中析构函数的作用一样。

如果在对象被释放时,需要执行一些操作的话,则可以在该类中覆盖finalize方法,然后在方法内部书写需要执行的代码即可。

3、hashcode方法

hashcode方法的作用是获得一个数值,该数值一般被称作散列码,使用这个数值可以快速判断两个对象是否不相同,主要应用于集合框架中类的快速判断。

两个内容相同的对象,其hashcode方法的返回值必须相同,而两个不相同的对象其hashcode的值可能相同。

如果自己编写的类需要存储到集合类中,则覆盖该方法可以提高集合类的执行效率。

4、toString方法

toString方法是显示对象内容时会被系统自动调用的方法,当输出一个对象的内容时,系统会自动调用该类的toString方法,例如输出Object类型的对象obj,则以下两组代码的功能是一样的:

System.out.println(obj);

System.out.println(obj.toString());

而Object类中的toString类实现比较简单,其源代码为:

public String toString() {

return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

如果需要自己的类的对象按照一定的格式进行输出,则可以在自己设计的类内部覆盖toString方法,然后设计需要的输出格式即可。

至于Object类中的其它方法,下面做一个基本的介绍:

l  clone方法:复制对象。也就是创建一个和该对象的内容完全一样的对象,新的对象拥有独立的内存空间。

l  getClass方法:主要获得对象的类型,该方法主要用于反射技术的实现。

另外的wait、notify和notifyAll等方法在是为了实现多线程的需要而实现的,将在后续的多线程技术中进行详细的介绍。

9.5.2 Math

Math类是一个数学工具类,在Java语言中,常用的数学常数和数学方法都在该类内部,而且无论是常数还是方法都是static类型的,方便程序员进行实际的使用。

下面示例代码是调用Math类中的abs方法实现求数字的绝对值的实现代码:

/**

* Math类基本使用

*/

public class MathDemo {

public static void main(String[] args) {

int m = -10;

int n = Math.abs(m);

System.out.println("绝对值是:" + n);

}

}

由于Math类的方法作用比较简单,这里就不一一举例了,具体的方法请参阅JDK API文档。

Java编程那些事儿74——java.lang包介绍1相关推荐

  1. Java编程那些事儿78——时间和日期处理

    Java编程那些事儿78--时间和日期处理 陈跃峰 出自:http://blog.csdn.net/mailbomb 9.6 java.util包 java.util包是Java语言提供的工具类包,该 ...

  2. Java编程那些事儿——文件操作之写文件

    Java编程那些事儿--文件操作之写文件 Java, Java培训, Java基础, Java学习, Java教程 11.3.1.4 写文件 如前所述,将程序内部的数据输出到程序外部的数据源,应该使用 ...

  3. Java编程那些事儿102——网络编程技术1

    Java编程那些事儿102--网络编程技术1 陈跃峰 出自:http://blog.csdn.net/mailbomb 13.2 网络编程技术 前面介绍了网络编程的相关基础知识,初步建立了网络编程的概 ...

  4. Java编程那些事儿103——网络编程技术2

    Java编程那些事儿103--网络编程技术2 陈跃峰 出自:http://blog.csdn.net/mailbomb 13.2.3 TCP编程 按照前面的介绍,网络通讯的方式有TCP和UDP两种,其 ...

  5. Java编程那些事儿70——抽象类和接口(三)

    Java编程那些事儿70--抽象类和接口(三) 陈跃峰 出自:http://blog.csdn.net/mailbomb 8.9.3 抽象类和接口的比较 抽象类和接口都是进行面向对象设计时专用的设计结 ...

  6. Java编程那些事儿69——抽象类和接口(二)

    Java编程那些事儿69--抽象类和接口(二) 陈跃峰 出自:http://blog.csdn.net/mailbomb 8.9.2 接口 接口(Interface)是一种复合数据类型. 至此,Jav ...

  7. Java编程那些事儿11——JDK的获得、安装和配置

    Java编程那些事儿11--JDK的安装.配置和使用 作者:陈跃峰 出自: http://blog.csdn.net/mailbomb 第二章 建立开发环境 "工欲善其事,必先利其器&quo ...

  8. Java编程那些事儿68——抽象类和接口(一)

    Java编程那些事儿68--抽象类和接口(一) 陈跃峰 出自:http://blog.csdn.net/mailbomb 8.9  抽象类和接口 在实际的项目中,整个项目的代码一般可以分为结构代码和逻 ...

  9. Java编程那些事儿104——网络编程技术3

    Java编程那些事儿104--网络编程技术3 陈跃峰 出自:http://blog.csdn.net/mailbomb 为了一步一步的掌握网络编程,下面再研究网络编程中的两个基本问题,通过解决这两个问 ...

最新文章

  1. pku 1486 求出二分匹配图中的必须边
  2. HEXA机器人荣获CES Asia2018 创新奖
  3. [Swift]扩展String类:实现find()查找子字符串在父字符串中的位置
  4. Qtcreator中经常使用快捷键总结
  5. IntelliJ IDEA15,PhpStorm10,WebStorm11激活破解
  6. 大数据在企业中起到什么作用
  7. qt下的跨目录多工程编译
  8. 陕西省咸阳市谷歌高清卫星地图下载
  9. 码住!Elsevier-最全清样/校样(Proof)处理流程
  10. CVPR 2021 目标检测论文大盘点(65篇论文)
  11. 零基础转行软件测试有前途吗?为什么说软件测试是极具发展前途的
  12. Android 自定义锁屏图案 View
  13. 再生龙linux多挂载点备份,利用Clonezilla(再生龙)对Linux系统备份与恢复
  14. 原生小程序转Taro开发
  15. 【3D游戏基础】蒙皮骨骼动画与骨架
  16. Win11系统管理应用程序将更便利,微软正在测试改进中
  17. 前端开发学习之【模块化】
  18. js实现百度换肤效果
  19. CAD文件版本怎么转换?如何将高版本转换成低版本?
  20. 怎样才能让网站建设效果更加出色

热门文章

  1. Matplotlib之Python可视化
  2. Visual C++ Redistributable 各版本的官方链接
  3. 端午节书法作品楷书内容_端午节毛笔字
  4. BCG与阿里研究院等联合揭秘中国互联网经济:成功的关键是什么?
  5. 从〇开始可微神经搜索DARTS分析第〇章:意义与基础结构
  6. 如何解决win10不能访问局域网其他电脑的问题
  7. swift for 循环
  8. 离散数学20_第1章_等价符号⇔的定义
  9. 从入门到精通之专家系统CLIPS(一)CLIPS初识与概述
  10. PS 十分钟教你做出文字穿插效果