Java编程那些事儿74——java.lang包先容
当前位置:以往代写 > JAVA 教程 >Java编程那些事儿74——java.lang包先容
2019-06-14

Java编程那些事儿74——java.lang包先容

Java编程那些事儿74——java.lang包先容

副标题#e#

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要领。


#p#副标题#e#

下面以一个简朴的类为示例,编写一个简朴的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。

假如范例切合要求,然后就可以依次较量工具中每个属性的值是否沟通了,假如有一个属性的值不沟通则不相等。

#p#副标题#e#

2、finalize要领

finalize要领的浸染和前面先容的结构要领的观念恰好相反,结构要领的浸染是初始化一个工具,而finalize要领的浸染是释放一个工具占用的内存空间时,会被JVM自动挪用的要领。

说明:finalize要领的浸染和C++中析构函数的浸染一样。

假如在工具被释放时,需要执行一些操纵的话,则可以在该类中包围finalize要领,然后在要领内部书写需要执行的代码即可。

3、hashcode要领

hashcode要领的浸染是得到一个数值,该数值一般被称作散列码,利用这个数值可以快速判定两个工具是否不沟通,主要应用于荟萃框架中类的快速判定。

两个内容沟通的工具,其hashcode要领的返回值必需沟通,而两个不沟通的工具其hashcode的值大概沟通。

假如本身编写的类需要存储到荟萃类中,则包围该要领可以提高荟萃类的执行效率。

4、toString要领

#p#分页标题#e#

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文档。

    关键字:

在线提交作业