`
niqinwen
  • 浏览: 32602 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java.lang包 详解

 
阅读更多

这里说下在java.lang包下其他重要的类及其函数。

1. 封装类

对Java中8种基本数据类型进行了封装,这样使得Java的面向对象思想在基本数据类型上也得到了相应的体现。如:
Java代码 收藏代码
  1. packagecom.java.lang;
  2. publicclass_BasicType{
  3. publicstaticvoidmain(String[]args){
  4. Objecto=2;//Integertemp=newInteger(2);Objecto=temp;
  5. System.out.println(o);
  6. }
  7. }

这样使得基本数据类型方便的与其他对象一起进行一些处理操作。
2. 字符串操作
java工程师的面试中出现的频率很高,那就是String和StringBuffer的区别,在分别在什么时候使用?而从jdk1.5中出现StringBuilder这个类之后,这个问题就变成了:Java的String,StringBuffer,StringBuilder有什么区别?
网上的答案大都是:String是不可变类,每次在String对象上的操作都会生成一个新的对象;StringBuffer和StringBuilder则允许在原来对象上进行操作,而不用每次增加对象;StringBuffer是线程安全的,但效率较低,而StringBuilder则不是,效率最高。
通过阅读JDK文档,可以更加深入得理解,如下:
String和StringBuffer,StringBuilder都是用字符数组来表示的。但是在String中这个字符数组是这样定义的:
Java代码 收藏代码
  1. privatefinalcharvalue[];

而在StringBuffer和StringBuilder中,这个字符数组都是继承于java.lang.AbstractStringBuilder中。
Java代码 收藏代码
  1. charvalue[];

这样答案就很明显了,原因就在这个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. 其他类可能涉及到更高更复杂的概念或者思想,没有深入接触过,暂不做说明。
分享到:
评论

相关推荐

    java_lang包详解.pdf

    java_lang包详解.pdf

    Java.lang.reflect 包下常用的类及方法简介

    NULL 博文链接:https://inter12.iteye.com/blog/1288117

    java-lang包详解

    java-lang包详解,介绍Java开发过程中常用的class,非常方便

    详解java.lang.NumberFormatException错误及解决办法

    主要介绍了详解java.lang.NumberFormatException错误及解决办法,本文详解的介绍了错误的解决方法,感兴趣的可以一起来了解一下

    Java reflect 机制详解

    免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者

    java.lang.Void类的解析与使用详解

    主要介绍了java.lang.Void类的解析与使用详解,文中涉及到了java.lang.integer类的源码,分场景给大家介绍的非常详细,给大家补充介绍java.lang.Void 与 void的比较及使用,需要的朋友可以参考下

    java.lang.Void类源码解析

    主要介绍了java.lang.Void类源码解析的相关内容,对源码中的部分内容进行解释,具有一定参考价值,需要的朋友可以了解下。

    引用包java.lang.ref中几种引用详解 2 -- 测试代码

    NULL 博文链接:https://jackyin5918.iteye.com/blog/1882071

    Java基础知识点总结.docx

    &lt; java.lang &gt;StringBuilder字符串缓冲区:★★★☆ 74 基本数据类型对象包装类★★★☆ 75 集合框架:★★★★★,用于存储数据的容器。 76 &lt; java.util &gt; Collection接口 77 &lt; java.util &gt;Iterator接口 78 &lt; java....

    详解java.lang.reflect.Modifier.isInterface()方法

    主要介绍了详解java.lang.reflect.Modifier.isInterface()方法的相关资料,这里提供实例帮助大家理解这个方法的使用,需要的朋友可以参考下

    java.lang.Runtime.exec&#40;&#41; Payload知识点详解

    在本篇文章里小编给大家整理的是一篇关于java.lang.Runtime.exec&#40;&#41; Payload知识点相关内容,有兴趣的朋友们学习下。

    java 实现websocket的两种方式实例详解

    主要介绍了java 实现websocket的两种方式实例详解,一种使用tomcat的websocket实现,一种使用spring的websocket,本文通过代码给大家介绍的非常详细,需要的朋友可以参考下

    详解Java中NullPointerException异常的原因详解以及解决方法

    主要介绍了详解Java中NullPointerException异常的原因详解以及解决方法。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java反射机制原理详解.docx

    java.lang.Class:是反射的源头 我们创建一个类,通过编译,生成对应的.calss文件,之后使用java.exe加载(jvm的类加载器)此.class文件,此.class文件加载到内存以后,就是一个运行时类,存在缓存区,那么这个运行时类...

    java静态代理和动态代理详解

    Java中提供了一个java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现动态代理。代理类在运行时会根据被代理接口自动生成,并且可以通过InvocationHandler接口对方法进行增强。

    ognl表达式java使用案例详解(测试通过)

    本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. Struts 2默认的表达式语言是OGNL...

    java反射详解1

    }然后继续运行上面的程序,会出现:java.lang.InstantiationException: Reflect.Person at java.lan

    java SE 类库查询手册

    这里提供了java.applet java.lang java.io java.awt常用接口及类的查询以及详解

    java异常详解

    java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如...

Global site tag (gtag.js) - Google Analytics