博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Object/System/RunTime类
阅读量:2387 次
发布时间:2019-05-10

本文共 3762 字,大约阅读时间需要 12 分钟。

Object类

(1)Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。

(2)Object类的构造方法有一个,并且是无参构造

    这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是无参构造

(3)要掌握的方法:

   A:toString()

        返回对象的字符串表示,默认是由类的全路径+'@'+哈希值的十六进制表示。

        这个表示其实是没有意义的,一般子类都会重写该方法。

        如何重写呢?过程我也讲解过了,基本上就是要求信息简单明了。

        但是最终还是自动生成。

    B:equals()

        比较两个对象是否相同。默认情况下,比较的是地址值是否相同。

        而比较地址值是没有意义的,所以,一般子类也会重写该方法。

        重写过程,我也详细的讲解和分析了。

        但是最终还是自动生成。

(4)要了解的方法:

    A:hashCode() 返回对象的哈希值。不是实际地址值,可以理解为地址值。

    B:getClass() 返回对象的字节码文件对象,反射中我们会详细讲解    

    C:finalize() 用于垃圾回收,在不确定的时间

    D:clone() 可以实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。

(5)两个注意问题;

    A:直接输出一个对象名称,其实默认调用了该对象的toString()方法。

    B:面试题

        ==和equals()的区别?

        A:==

            基本类型:比较的是值是否相同

            引用类型:比较的是地址值是否相同

        B:equals()

            只能比较引用类型。默认情况下,比较的是地址值是否相同。

            但是,我们可以根据自己的需要重写该方法

Object类是所有类的父类,getClass() notify() notifyAll() wait()不能被重写,是final类型的

工具类

Arrays类(sort(int [] a)对整型数组进行升序排序  toString(double [] a)返回数组的字符串表示形式)

ArrayList Vector类(set(int index,E element) get(int index) size()元素个数 remove(int index)删除 indexOf(Object o)搜索)

Date类(日期的“逻辑值”,而不是日期显示的样子,样子可以通过其他的类来控制,year() month() day()过时了,不要用了getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数

java.text类 控制输出SimpleDateFormat 对时间日期进行格式化处理,DecimalFormat 对浮点数的显示进行格式化处理

System类

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包

由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。

1、成员变量

System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。

例如:System.out.println(“Test”);

该行代码的作用是将字符串”Test”输出到系统的标准输出设备上,也就是显示在屏幕上。

后续在学习完IO相关的知识以后,可以使用System类中的成员方法改变标准输入流等对应的设备,例如可以将标准输出流输出的信息输出到文件内部,从而形成日志文件等

 

2、成员方法

System类中提供了一些系统级的操作方法,这些方法实现的功能分别如下:

a、arraycopy方法

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

该方法的作用是数组拷贝,也就是将一个数组中的内容复制到另外一个数组中的指定位置,由于该方法是native方法,所以性能上比使用循环高效。

使用示例:

int[] a = {1,2,3,4};

int[] b = new int[5];

System.arraycopy(a,1,b,3,2);

该代码的作用是将数组a中,从下标为1开始,复制到数组b从下标3开始的位置,总共复制2个。也就是将a[1]复制给b[3],将a[2]复制给b[4],这样经过复制以后数组a中的值不发生变化,而数组b中的值将变成{0,0,0,2,3}。

b、currentTimeMillis方法

public static long currentTimeMillis()

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。例如:

long l = System. currentTimeMillis();

则获得的将是一个长整型的数字,该数字就是以差值表达的当前时间。

使用该方法获得的时间不够直观,但是却很方便时间的计算。例如,计算程序运行需要的时间则可以使用如下的代码:

long start = System. currentTimeMillis();

for(int i = 0;i < 100000000;i++){

int a = 0;

}

long end = System. currentTimeMillis();

long  time = end – start;

则这里变量time的值就代表该代码中间的for循环执行需要的毫秒数,使用这种方式可以测试不同算法的程序的执行效率高低,也可以用于后期线程控制时的精确延时实现。

c、exit方法

public static void exit(int status)

该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

d、gc方法

public static void gc()

该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。

e、getProperty方法

public static String getProperty(String key)

该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示。

 

属性名列表

属性名

属性说明

java.version

Java 运行时环境版本

java.home

Java 安装目录

os.name

操作系统的名称

os.version

操作系统的版本

user.name

用户的账户名称

user.home

用户的主目录

user.dir

用户的当前工作目录

String osName = System.getProperty(“os.name”);

String user = System.getProperty(“user.name”);

System.out.println(“当前操作系统是:” + osName);

System.out.println(“当前用户是:” + user);

使用该方法可以获得很多系统级的参数以及对应的值。

 

System类代笔当前java程序的运行平台,程序不能创建System类的对象

System.identityHashCode(Object x)方法可以获得特定对象的 identityHashCode值,这特殊的值可以唯一标识该对象,因为identityHashCode值是根据对象的的地址得到的(默认和Object的hashCode()相同),所以任何两个对象的identityHashCode的值总是不相等的

 

Runtime类代表java程序运行时的环境,每个java程序都有一个与之对应的Runtime实例。

程序同样不能创建Runtime实例,但可以通过getRuntime()获得与之关联的Runtime对象。我们也可以通过Runtime对象来执行操作系统的命令,如

Runtime rt=Runtime.getRuntime();  

rt.exec("notepad.exe");  //打开notepad记事本  

RunTime类

该类类主要代表了应用程序运行的环境。

getRuntime() 返回当前应用程序的运行环境对象。

exec(String command) 根据指定的路径执行对应的可执行文件。

freeMemory() 返回 Java 虚拟机中的空闲内存量。。 以字节为单位

maxMemory() 返回 Java 虚拟机试图使用的最大内存量。

totalMemory() 返回 Java 虚拟机中的内存总量

参考地址

http://blog.csdn.net/M983373615/article/details/75570748?locationNum=5&fps=1

你可能感兴趣的文章
Using the 'nasl' Nessus Command Line Tool
查看>>
开源工具
查看>>
FCKeditor无test上传页的另类二次上传
查看>>
sharepoint exploit
查看>>
Flash应用安全规范
查看>>
SQL Injection Part 5 – Bypassing WAF
查看>>
cookie注入原理
查看>>
浅谈绕过WAF的数种方法
查看>>
google-gruyere web2.0漏洞学习平台 =w=~
查看>>
Preventing Cross-site Scripting Attacks
查看>>
WASC Distributed Web Honeypots Project Update
查看>>
安装pydev到eclipse
查看>>
[WAF]apache和modsecurity的安装
查看>>
写给换工作和找工作的同学
查看>>
Island Hopping the SpiderLabs Way
查看>>
Top Ten Web Protection Techniques of 2011
查看>>
Faster Blind MySQL Injection Using Bit Shifting
查看>>
Safely Dumping Hashes from Live Domain Controllers
查看>>
OWASP Top 10 penetration testing software
查看>>
java集成的构造方法
查看>>