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

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

Object类 & System类

1.1 Object类

1.1.1 概述

Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。

Object类众多方法中,我们先学习equals方法与toString方法,其他方法后面课程中会陆续学到。

1.1.2 toString()方法

由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

package com.itheima_01;/* * String toString()  : 返回该对象的字符串表示 * 		 return getClass().getName() + "@" + Integer.toHexString(hashCode()); * 		 getClass():返回一个字节码对象 * 		 Integer.toHexString():返回指定参数的十六进制字符串形式 * 		 hashCode():返回该对象的哈希码值(内部地址) *  * 	 *  * boolean equals(Object obj)   *  */public class ObjectDemo {	public static void main(String[] args) {		Student s = new Student();		s.name = "zhangsan";		s.age = 18;		System.out.println(s.toString());//com.itheima_01.Student@737951b0		System.out.println(s);//说明我们输出一个对象就是默认输出这个对象的toString()方法	}}class Student extends Object {	String name;	int age;	/*	public String toString() {		return name + "@" + age;	}	*/		@Override	public String toString() {		return "Student [name=" + name + ", age=" + age + "]";	}		}

1.1.3 equals()方法

equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。

在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。

package com.itheima_01;import java.util.ArrayList;/* * boolean equals(Object obj)   * 		使用==来比较两个对象是否相等,则比较地址值是否相等 */public class ObjectDemo2 {	public static void main(String[] args) {		Person p = new Person("zhangsan",18);		Person p2 = new Person("zhangsan",19);				//boolean flag = p.equals(p2);				boolean flag = p.equals(new ArrayList());		System.out.println(flag);	}}class Person {	String name;	int age;		public Person(String name,int age) {		this.name = name;		this.age = age;	}	@Override	public boolean equals(Object obj) {		//提高效率		if (this == obj)			return true;				if (obj == null)			return false;		//提高健壮性		if (getClass() != obj.getClass())			return false;				//向下转型		Person other = (Person) obj;				if (age != other.age)			return false;		if (name == null) {			if (other.name != null)				return false;		} else if (!name.equals(other.name))			return false;		return true;	}			/*@Override	public boolean equals(Object o) {		//提高效率 当前对象和传递进来的对象地址值一样,则不用比较成员		if(this == o) {			return true;		}				//提高代码的健壮性		if(this.getClass() != o.getClass()) {			return false;		}				//向下转型		Person other = (Person) o;				if(!this.name.equals(other.name)) {			return false;		}				if(this.age != other.age) {			return false;		}				return true;	}*/}

1.2 System

System 类包含一些有用的类字段和方法。它不能被实例化。

1.2.1 成员方法

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

     src源数组的srcPos索引开始,复制length个元素

从destPost位置开始将这些元素放至dest数组中

  static long currentTimeMillis()

      返回以毫秒为单位的当前时间

  static void exit(int status)

      终止当前正在运行的 Java 虚拟机

  static void gc()  

运行垃圾回收器

1.2.2 案例代码三:

package com.itheima_02;/* * System:包含一些有用的类字段和方法。它不能被实例化 * static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)   * static long currentTimeMillis()   * static void exit(int status)    static void gc()   *  */public class SystemDemo {	public static void main(String[] args) {		//method();		//method2();		//method3();				//static void gc()  		//Demo d = new Demo();		new Demo();		System.gc();	}	private static void method3() {		//static void exit(int status) :终止虚拟机				for (int i = 0; i < 100000; i++) {			System.out.println(i);			if(i == 100) {				System.exit(0);			}		}	}	private static void method2() {		/*		 *  static long currentTimeMillis() :以毫秒值返回当前系统时间		 *  这个毫秒的时间是相对时间,相对于1970-1-1 00:00:00 : 0		 *  1970-1-1 00:00:01 : 1000		 *  1970-1-1 00:01:00: 1000 * 60		 *  1970-1-1 01:00:00: 1000 * 60 * 60		 *  1000毫秒 = 1秒		 *  		 */		//System.out.println(System.currentTimeMillis());						long start = System.currentTimeMillis();		for (int i = 0; i < 100000; i++) {			System.out.println(i);		}		long end = System.currentTimeMillis();		System.out.println(end - start);	}	private static void method() {		/*		 * static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)  		 * 复制数组		 * 参数1:源数组		 * 参数2:源数组的起始索引位置		 * 参数3:目标数组		 * 参数4:目标数组的起始索引位置		 * 参数5:指定接受的元素个数		 */		int[] src = {1,2,3,4,5};		int[] dest = new int[5];		System.arraycopy(src, 2, dest, 4, 3);				for (int i = 0; i < dest.length; i++) {			System.out.print(dest[i]);		}	}}class Demo {	@Override	protected void finalize() throws Throwable {		System.out.println("我被回收了");	}}

转载地址:http://vjjqb.baihongyu.com/

你可能感兴趣的文章
shell中常用的工具(转)
查看>>
使用MySQL内建复制功能来最佳化可用性(转)
查看>>
一个比较vista的vista主题for rf5.0fb(转)
查看>>
推荐一款 Linux 上比较漂亮的字体(转)
查看>>
在Linux中添加新的系统调用(转)
查看>>
Fedora Core 5.0 安装教程{下载}(转)
查看>>
把ACCESS的数据导入到Mysql中(转)
查看>>
shell里边子函数与主函数的实例(转)
查看>>
Linux中MAXIMA符号运算软件的简介(转)
查看>>
银行选择Linux 则无法回避高成本(转)
查看>>
上网聊天需要防范的几大威胁(转)
查看>>
[分享]后门清除完全篇(转)
查看>>
用php在linux下连接mssql2000(转)
查看>>
让你的Linux支持WEB修改密码(转)
查看>>
MYSQL的master/slave数据同步配置(转)
查看>>
一个完整的ftp远程批量shell(转)
查看>>
Vsftpd匿名无法上传,配置如下,帮忙找下原因,谢谢~!(转)
查看>>
crontab命令简介(转)
查看>>
C++中的静态联编和动态联编介绍(转)
查看>>
带有农历的日历(QT版本1752-2100)(转)
查看>>