【转载】JAVA基础复习与总结<三> Object类的常用方法
Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承于某个类,那么它默认继承Object类。这里主要总结Object类中的三个常用方法:toString()、equals()、hashCode()。
1.取得对象信息的方法:toString()
该方法在打印对象时被调用,将对象信息变为字符串返回,默认输出对象地址。
1 class Student
2 {
3 String name = "Mary";
4 int age = 21;
5 }
6
7 public class Text{
8 public static void main(String[] args)
9 {
10 Student s = new Student();
11 System.out.println("姓名:"+s.name+",年龄:"+s.age);//输出对象属性
12 System.out.println(s);//直接输出对象信息
13 System.out.println(s.toString());//调用父类方法输出对象信息
14 }
15 }
输出结果:
姓名:Mary,年龄:21
ClassNotes.Student@15db9742
ClassNotes.Student@15db9742
上述结果看出编译器默认调用toString()方法输出对象,但输出的是对象的地址,我们并不能看懂它的意思。那么就要通过重写Object类的toString()方法来输出对象属性信息。
1 class Student
2 {
3 String name = "Mary";
4 int age = 21;
5 public String toString()
6 {
7 return "姓名:"+name+",年龄:"+age;
8 }
9 }
输出结果:姓名:Mary,年龄:21。这样对象信息就更加清晰了。
2.对象相等判断方法:equals()
该方法用于比较对象是否相等,而且此方法必须被重写。
1 class Student
2 {
3 String name;
4 int age;
5 public Student(String name,int age)
6 {
7 this.name=name;
8 this.age=age;
9 }
10 }
11
12 public class Text{
13 public static void main(String[] args)
14 {
15 Student s1 = new Student("Mary",21);
16 Student s2 = new Student("Mary",21);
17 System.out.println(s1.equals(s2));//输出一个boolean值
18 System.out.println(s1.equals(s2)?"s1和s2是同一个人":"s1和s2不是同一个人");//?:条件运算符
19 }
20 }
输出结果:s1和s2不是同一个人。
很明显输出的结果是错误的,因为equals()方法比较的是两个对象的地址,所以必须重写方法才能到达目的。
1 //重写父类(Object类)中的equals方法
2 public boolean equals(Object o)
3 {
4 boolean temp = true;
5 Student s1 = this;
6 if(o instanceof Object)
7 {
8 Student s2 = (Student)o;
9 if(!(s1.name.equals(s2.name)&&s1.age==s2.age))
10 {
11 temp = false;
12 }
13 }
14 else
15 {
16 temp = false;
17 }
18 return temp;//返回一个布尔值
19 }
上面的是书上的例子,不太好理解,我自己编了一个equals()方法,简单但不知道对不对:
***在Eclipse偶然发现一个快捷键,按住ctrl+/会注释当前行
3.对象签名:hashCode()
该方法用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写,确保相等的两个对象拥有相等的.hashCode。
1 class Student
2 {
3 String name;
4 int age;
5 //重写父类(Object类)中的equals方法
6 public boolean equals()
7 {
8 boolean temp;
9 Student s1 = new Student();
10 s1.name="张三";s1.age=12;
11 Student s2 = new Student();
12 s2.name="张三";s2.age=12;
13 System.out.println("s1的哈希码:"+s1.hashCode());
14 System.out.println("s2的哈希码:"+s2.hashCode());
15 if((s1.name.equals(s2.name))&&(s1.age==s2.age))
16 {
17 temp = true;
18 }
19 else
20 {
21 temp = false;
22 }
23 return temp;
24 }
25 //重写hashCode()方法
26 public int hashCode()
27 {
28 return age*(name.hashCode());
29 }
30 }
31
32 public class Text{
33 public static void main(String[] args)
34 {
35 Student s3 = new Student();
36 System.out.println(s3.equals()?"s1和s2是同一人":"s1和s2不是同一人");
37 }
38 }
输出结果:
s1的哈希码:9298668
s2的哈希码:9298668
s1和s2是同一人
以上内容转载自: https://www.cnblogs.com/wxywxy/p/6740277.html
【转载】JAVA基础复习与总结<三> Object类的常用方法的更多相关文章
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- java基础18 String字符串和Object类(以及“equals” 和 “==”的解析)
一.String字符串 问:笔试题:new String("abc")创建了几个对象?答:两个对象,一个对象是 位于堆内存,一个对象位于字符串常量池 class Demo17 { ...
- Java基础知识强化27:Object类之toString()方法
1. Object类的toString()方法: public String toString():返回该对象的字符串表示 2. 案例演示: (1)Student类: package cn.itc ...
- Java基础知识强化26:Object类之hashCode()方法、getClass()方法
1. Object类的hashCode()方法,如下: public int hashCode():返回该对象的哈希码值,这个值和地址值有关,但是不是实际地址值(哈希码值是根据实际地址值转化过来的 ...
- JAVA基础复习与总结<五> String类_File类_Date类
String类 .Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicoe字符组成. .Java没有内置的字符串类型,而是在标准java类库中提供了一个预定义的类String, ...
- Java基础复习笔记系列 三
前几节都是基础中的基础,从第三讲的笔记开始,每次笔记针对Java的一个知识块儿. Java异常处理 1.什么是异常? 异常是指运行期出的错误.比如说:除以一个0:数组越界:读取的文件不存在. 异常处 ...
- JAVA基础复习与总结<七> File类_基本的IO概念_输入输出
File类 1.操作目录 mkdir() 创建目录,必须确保父目录存在,如果不存在,创建失败 mkdirs() list() 文件:目录字符串形式 ,只返回目录和文件的名称 listFiles() ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- 《Java基础复习》-控制执行流程
最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...
随机推荐
- jq常用事件(on,blur,focus,change),js/jq等待图片(页面)加载完毕事件,js读取文件
jq常用事件(on,blur,focus,change) // 方法一(推荐) $('.box').on( "click",function() {} ) $('.box').on ...
- H5_0006:JS判断PC,平板,手机平台的方法
<script type="text/javascript"> //平台.设备和操作系统var system = { win: false, mac: false, x ...
- python学习07
函数中的模块及包管理1)1.模块查找的顺序:运行代码时当前目录 -> PYTHONPATH ->系统环境变量PATH设置的路径2.导入模块的书写规范:内置模块-------第三方模块--- ...
- 一个老鸟发的公司内部整理的 Android 学习路线图
基础工具部分: 中文手册,我猜测是Maven中文手册,可是我并没有找到这样的资源,欢迎知道的朋友告诉我: Android部分有 『第三方库集合』,我没能找到资源地址: 书籍我大多是给的豆瓣链接,如果觉 ...
- jmeter分布式测试教程和远程的代理机无法连接网络的问题解决方法
一.Jmeter分布式执行原理: 1.Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent). 2.执行时,Controller会把脚本发送到每台A ...
- npm 如何安装npm包
1.每个插件或者组件都会在官方网站有教程. 以https://v4.bootcss.com 为例 2.vuetify的 3.moment 的库
- TV TimeShift和PVR的区别
Timeshift是在PVR菜单下,PVR菜单下一般有两个功能一个是刻录功能,一个是Timeshift功能,这两个功能都需要u盘或者内存卡的支持,刻录时把当前的节目刻录进优盘想看的时候还可以打开看,T ...
- 微信公众号替换title
说明:项目使用 vue 开发 方法一: 单页应用里整个页面只会在第一次完全刷新,后面只会局部刷新(一般不包括head及里面的title),所以无法在服务器端控制title,只能在页面刷新的时候通过js ...
- python基础--numpy.dot
# *_*coding:utf-8 *_* # athor:auto import numpy dot = numpy.dot([0.100, 0.200],2.) print(dot) #[ 0.2 ...
- java - day006 - 构造方法
构造方法 新建对象是,执行的一个特殊方法 new 类名(); 这个小括号就是构造方法 Java 类中,必须有构造方法,如果自己不定义, 编译器会自动生成默认构造方法 new 关键字是新建对象用的, ...