在前面分开的说了下Java.lang.Thread和Java.lang.ThreadGroup。这里说下在java.lang包下其他重要的类及其函数。
附件中是在lang包下的所有类的分类截图。下面就其中比较重要的类进行说明。
1. 封装类
对Java中8种基本数据类型进行了封装,这样使得Java的面向对象思想在基本数据类型上也得到了相应的体现。如:
package com.java.lang;
public class _BasicType {
public static void main(String[] args) {
Object o = 2;// Integer temp = new Integer(2); Object o = temp;
System.out.println(o);
}
}
这样使得基本数据类型方便的与其他对象一起进行一些处理操作。
2. 字符串操作
java工程师的面试中出现的频率很高,那就是String和StringBuffer的区别,在分别在什么时候使用?而从jdk1.5中出现StringBuilder这个类之后,这个问题就变成了:Java的String,StringBuffer,StringBuilder有什么区别?
网上的答案大都是:String是不可变类,每次在String对象上的操作都会生成一个新的对象;StringBuffer和StringBuilder则允许在原来对象上进行操作,而不用每次增加对象;StringBuffer是线程安全的,但效率较低,而StringBuilder则不是,效率最高。
通过阅读JDK文档,可以更加深入得理解,如下:
String和StringBuffer,StringBuilder都是用字符数组来表示的。但是在String中这个字符数组是这样定义的:
private final char value[];
而在StringBuffer和StringBuilder中,这个字符数组都是继承于java.lang.AbstractStringBuilder中。
char value[];
这样答案就很明显了,原因就在这个final关键字上。
而同时通过源代码可以发现StringBuffer的很多方法和属性都有synchronized关键字修饰,而StringBuilder则没有。
总结一下:
(1) 在编译阶段就能够确定的字符串常量,完全没有必要创建String或StringBuffer对象。直接使用字符串常量的"+"连接操作效率最高。
(2) StringBuffer对象的append效率要高于String对象的"+"连接操作。
(3) 不停的创建对象是程序低效的一个重要原因。那么相同的字符串值能否在堆中只创建一个String对象那。显然拘留字符串能够做到这一点,除了程序中的字符 串常量会被JVM自动创建拘留字符串之外,调用String的intern()方法也能做到这一点。当调用intern()时,如果常量池中已经有了当前 String的值,那么返回这个常量指向拘留对象的地址。如果没有,则将String值加入常量池中,并创建一个新的拘留字符串对象。
3. Object 和 Class类
Object类是所有其他类的基类,而Class是对于面向对象类的抽象表示,主要用于Java中的反射机制。
package com.java.lang;
public class _ClassTest{
public void _Class(){
Class<?> clazz = this.getClass();
clazz...//省略号表示里面有很多方法,具体参考JDK文档
}
}
4. 线程
关于线程的知识,可以参考我之前的博客:Java.lang.Thread 和 Java.lang.ThreadGroup
http://hanyuanbo.iteye.com/blog/730324
5. Math
Math类的重要作用在于它使得我们在想使用一些重要的基本的操作的时候,不用再使用自己写的一些函数或者其他属性,而直接使用Java强大的工程师们给我们挑选过的更高效更安全更准确的函数、算法,便于对一些常用方法的使用。
具体的函数以及使用请参考JDK.
6. Enum类
请参阅我之前的博客java5 新特性中的Enum部分。
http://hanyuanbo.iteye.com/blog/730324
7. System类
System中常用到的属性有:
static PrintStream err | “标准”错误输出流。 |
static InputStream in | “标准”输入流。 |
static PrintStream out | “标准”输出流。 |
System中常用到的方法有:
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 |
static long currentTimeMillis() | 返回以毫秒为单位的当前时间。 |
static void exit(int status) | 终止当前正在运行的 Java 虚拟机。 |
static void gc() | 运行垃圾回收器。 |
static Properties getProperties() | 确定当前的系统属性。 |
static String getProperty(String key) | 获取指定键指示的系统属性。 |
static String getProperty(String key, String def) | 获取用指定键描述的系统属性。 |
static long nanoTime() | 返回最准确的可用系统计时器的当前值,以毫微秒为单位。 |
static void setErr(PrintStream err) | 重新分配“标准”错误输出流。 |
static void setIn(InputStream in) | 重新分配“标准”输入流。 |
static void setOut(PrintStream out) | 重新分配“标准”输出流。 |
static void setProperties(Properties props) | 将系统属性设置为 Properties 参数。 |
static String setProperty(String key, String value) | 设置指定键指示的系统属性。 |
8. Runtime类
Runtime中常用到的方法有如下:
exec(String command) | 在单独的进程中执行指定的字符串命令。 |
Process exec(String[] cmdarray) | 在单独的进程中执行指定命令和变量。 |
Process exec(String[] cmdarray, String[] envp) | 在指定环境的独立进程中执行指定命令和变量。 |
Process exec(String[] cmdarray, String[] envp, File dir) | 在指定环境和工作目录的独立进程中执行指定的命令和变量。 |
Process exec(String command, String[] envp) | 在指定环境的单独进程中执行指定的字符串命令。 |
Process exec(String command, String[] envp, File dir) | 在有指定环境和工作目录的独立进程中执行指定的字符串命令。 |
void exit(int status) | 通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机。 |
long freeMemory() | 返回 Java 虚拟机中的空闲内存量。 |
void gc() | 运行垃圾回收器。 |
static Runtime getRuntime() | 返回与当前 Java 应用程序相关的运行时对象。 |
通过Runtime便可以执行相关的命令。具体的使用实例参考我之前的博客:Java 执行系统文件。
http://hanyuanbo.iteye.com/blog/775111
9. 其他类可能涉及到更高更复杂的概念或者思想,没有深入接触过,暂不做说明。
- 大小: 34.8 KB
分享到:
相关推荐
了解 java.lang 包 掌握包装类 掌握String 和 StringBuffer 类 运用以下类的方法: Math Class Object
Java编程语言的基础构建块之一是`java.lang`包,它被自动导入到每个Java程序中,无需显式导入。这个包包含了许多核心类和接口,是编写任何Java应用程序不可或缺的部分。`java.lang`包中最基本的类是`Object`,它是...
Java语言的核心库之一就是`java.lang`包,它是最基础且最重要的包,包含了所有Java程序都会用到的一些基本类。这个包中包含了如异常处理、基本数据类型的包装类、数学运算、类和对象操作等核心功能。 异常处理是...
《java_lang包详解》 Java语言的核心库之一就是java.lang包,它包含了Java程序中最基础、最核心的类和接口。由于这个包是自动导入到每个Java程序中的,所以理解和掌握其中的类和接口对于编写Java代码至关重要。下面...
在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...
标题 "java.lang.Exception: java.lang.IllegalArgumentException: firstMovedIndex, lastMove" 描述了一个Java编程中的异常情况。这个异常通常发生在尝试执行一个不合法的操作时,例如数组或集合操作超出了其边界。...
Java.lang包是Java编程语言的核心库之一,它包含了一些最基础和最重要的类,这些类为所有其他Java程序提供了基本服务。在"JBuider第六章:Java.lang包"的教程中,你可能会深入学习到以下几个关键知识点: 1. **基础...
Java中的`java.lang.UnsatisfiedLinkError`是一个常见的运行时异常,通常出现在Java试图加载本地(C或C++)库但找不到相应的库文件时。这个错误可能是由于多种原因引起的,如库路径设置不正确、库文件不存在或者版本...
### java.lang.UnsupportedClassVersionError问题解析与解决方案 在Java开发过程中,经常会在部署或运行时遇到`java.lang.UnsupportedClassVersionError`错误。该错误通常发生在类文件版本与JVM(Java虚拟机)版本...
解决 java.lang.RuntimeException: Could not generate DH keypair异常处理。 bcprov-ext-jdk15on-1.60、bcprov-jdk15on-1.60两个包放到jre下的$JAVA_HOME/jre/lib/ext的路径下,然后配置$JAVA_HOME/jre/lib/...
commons-lang3.3.1.jar、Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。为JRE5.0+的更好的版本所提供 Jar文件包含的类: META-INF/MANIFEST.MFMETA-INF/LICENSE....
【java.lang包】是Java标准库中最基础的包,它包含了一些核心的类,比如`Math`, `Class`, `Object`等,这些类是所有Java程序的基础。在学习这个包时,首先要理解的是,`java.lang`包是自动导入到每一个Java程序中的...
2. **手动添加依赖**:在Java 9及以上版本中,你需要单独引入JAXB API及相关库的JAR包。这包括`javax.activation-1.2.0.jar`,`jaxb-api-2.3.0.jar`,`jaxb-core-2.3.0.jar`和`jaxb-impl-2.3.0.jar`。你可以在Maven...
在Java编程中,`java.lang.RuntimeException` 是一个非检查异常(unchecked exception),它表示程序运行时出现的不正常情况。通常,这类异常是由于程序员的错误或代码逻辑的疏忽造成的,例如类型转换错误、空指针...
Java.lang.NullPointerException 是一种常见的错误,它可以通过配置 JAVA 环境、检查源码中的包、导入数据库文件、添加数据源、检查数据库源文件的系统类型、检查 JDBC 驱动文件和升级 SQL Server 来解决。
标题中的“解决axis2-CodegenWizardPluginBUG- java.lang.reflect.InvocationTargetException”指的是在使用Apache Axis2的CodegenWizardPlugin工具时遇到的一个错误。这个工具是Axis2框架的一部分,用于自动生成...
### java.lang.UnsupportedClassVersionError: Bad version number in .class file 异常的解决办法 #### 一、问题概述 在使用MyEclipse进行Java开发的过程中,可能会遇到`java.lang.UnsupportedClassVersionError:...
JavaMail的java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream错误 原因: MyEclipse6.5的javaee.jar中的mail包与JavaMail包有冲突。 解决: 在MyEclipse目录下(D:\Program Files\MyEclipse ...