- 浏览: 313557 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
opalescent_:
学习了。。
java笔试题的整理和解答扩展(String专题) -
yixiao258964:
谢谢,找了好久Reverse Enginee,都说在datab ...
PowerDesigner Reverse Engineer from database-mysql -
javaAlpha:
介绍的真全啊
Java编程那些事儿86——文件操作之File类使用
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编程那些事儿37—for语句语法
2008-06-17 11:53 731Java编程那些事儿37—for语句语法 郑州游戏学院 陈跃 ... -
Java编程那些事儿38—break和continue语句
2008-06-18 15:01 781Java编程那些事儿38—break和continue语句 ... -
Java编程那些事儿39—流程控制综合示例1
2008-06-19 12:30 795Java编程那些事儿39—流程控制综合示例1 郑州游戏学院陈 ... -
Java编程那些事儿40—流程控制综合示例2
2008-06-19 20:23 891Java编程那些事儿40—流程控制综合示例2 郑州游戏学院陈 ... -
Java编程那些事儿41—流程控制综合示例3
2008-06-20 18:06 702<meta http-equiv="Conte ... -
Java编程那些事儿42—流程控制综合练习
2008-06-20 22:13 809Java编程那些事儿42—流程控制综合练习 郑州游戏学院 陈 ... -
Java编程那些事儿57—面向对象基础
2008-07-28 14:15 776Java编程那些事儿57—面向对象基础 郑州游戏学院 陈跃峰 ... -
Java编程那些事儿58—类(一)
2008-07-29 11:05 712Java编程那些事儿58—类(一) 郑州游戏学院 陈跃峰 ... -
Java编程那些事儿59——类(二)
2008-08-04 23:36 696Java编程那些事儿59——类(二) 郑州游戏学院 陈跃峰 ... -
Java编程那些事儿60——对象
2008-08-18 23:49 632Java编程那些事儿60—— ... -
Java编程那些事儿61—面向对象设计方法和面向对象特性(一)
2008-08-29 21:42 755Java编程那些事儿61—面向对象设计方法 郑州游戏学院 陈 ... -
Java编程那些事儿62——继承(二)
2008-09-08 12:11 820Java编程那些事儿62——继承(二) 郑州游戏学院 ... -
Java编程那些事儿63—多态性
2008-09-27 10:31 752Java编程那些事儿63—多态性 郑州游戏学院 陈跃峰 出 ... -
Java编程那些事儿64——访问控制符、修饰符和其它关键字
2008-10-14 14:12 797<meta http-equiv="Conte ... -
Java编程那些事儿65——static修饰符
2008-10-23 15:46 824Java编程那些事儿65——static修饰符 郑州游戏学院 ... -
Java编程那些事儿66——final修饰符
2008-11-11 17:19 729Java编程那些事儿66——f ... -
Java编程那些事儿67——this和super
2008-11-12 12:25 968Java编程那些事儿67——this和super 陈跃峰 ... -
Java编程那些事儿68——抽象类和接口(一)
2008-12-22 11:31 756Java编程那些事儿68—— ... -
Java编程那些事儿69——抽象类和接口(二)
2008-12-27 16:25 980Java编程那些事儿69——抽象类和接口(二) 陈跃峰 ... -
Java编程那些事儿70——抽象类和接口(三)
2009-01-05 14:20 1191Java编程那些事儿70—— ...
相关推荐
`java.lang.UnsupportedOperationException`是Java中的一个运行时异常,它属于`RuntimeException`的子类。这个异常通常在尝试调用一个不支持的操作时抛出。在Java编程中,某些方法可能在特定对象或特定条件下不支持...
Java编程语言的基础构建块之一是`java.lang`包,它被自动导入到每个Java程序中,无需显式导入。这个包包含了许多核心类和接口,是编写任何Java应用程序不可或缺的部分。`java.lang`包中最基本的类是`Object`,它是...
commons-lang3.3.1.jar、Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE....
在标签中提到了"commons.lang jar包",这表明了这个资源包的核心是`commons-lang.jar`,在更现代的版本中,它演变成了`commons-lang3.jar`,如文件名称列表所示的`commons-lang3-3.7`。这个版本号表示这是Apache ...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
【JAVA】笔记(8)--- java.lang.String 精讲(csdn)————程序
"Java.lang.OutOfMemoryError: Java heap space 解决方法" Java.lang.OutOfMemoryError: Java heap space 是 Java 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...
Java程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: Java heap space"是一个常见的问题,通常发生在程序试图分配超过堆内存限制的空间时。这个错误表明Java虚拟机(JVM...
标题 "java.lang.Exception: java.lang.IllegalArgumentException: firstMovedIndex, lastMove" 描述了一个Java编程中的异常情况。这个异常通常发生在尝试执行一个不合法的操作时,例如数组或集合操作超出了其边界。...
Java异常是一个对象,继承自`java.lang.Throwable`类。例如,`ArithmeticException`、`NullPointerException`和`IOException`等都是异常类的实例。异常处理通过使用`try-catch-finally`结构来实现。`try`块包含可能...
标题中的问题“scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetException”是用户在尝试使用Scrcpy时遇到的一个常见错误。这个错误通常意味着在执行某个方法时,Java运行时环境遇到了未预期的情况。...
maven-resources-production java.lang.NegativeArraySizeException java.lang.NegativeArraySizeException 问题解决
了解 java.lang 包 掌握包装类 掌握String 和 StringBuffer 类 运用以下类的方法: Math Class Object
java.lang.NoSuchFieldError: Companion 问题的解决方案
org.apache.commons.lang jar包
在Java编程中,`java.lang.StackOverflowError` 是一个常见的运行时异常,它通常发生在程序执行过程中,当Java虚拟机(JVM)的调用栈溢出时。调用栈是每个线程用来存储方法调用信息的数据结构,当递归调用过深或者...
1. **降级JDK版本**:你可以将JDK版本回退到Java 8或更低,这样JAXB API就会作为Java SE的一部分默认包含在内。但这种方法可能会限制你的项目对新特性和性能优化的利用。 2. **手动添加依赖**:在Java 9及以上版本...
在Java编程环境中,有时我们可能会遇到“java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Around”的错误,这通常意味着运行时环境无法找到特定的类,即`org.aspectj.lang.annotation.Around`。...
Java中的`java.lang.UnsatisfiedLinkError`是一个常见的运行时异常,通常出现在Java试图加载本地(C或C++)库但找不到相应的库文件时。这个错误可能是由于多种原因引起的,如库路径设置不正确、库文件不存在或者版本...