java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解
public class Test {
public static void main(String[] args) {
int[] a = {1, 2, 4, 6};
int[] b = a;
int[] c = {1, 2, 4, 6};
//下面这个方法打印的是a数组的引用地址
System.out.println(a.toString());
//下面这个方法比较的是两个数组的引用是否相等
System.out.println("a.equals(b):"+a.equals(b));
//下面这个方法才是a数组真正的toString方法
System.out.println(Arrays.toString(a));
//下面这个方法才是数组真正的equals方法
System.out.println("Arrays.equals(a,c):"+Arrays.equals(a, c));
}
}
[I@33d063fd a.equals(b):true [1, 2, 4, 6] Arrays.equals(a,c):true
运行结果
总结:java 数组没有重写 toString 方法和 equals 方法,当我们直接调用一个 java 对象的这两个方法的时候,实际上调用的是 java.lang.Object类里的这两个方法。
要实现数组类自己的这两个操作必须要通过 java.util.Arrays 类的 toString() 方法和 equals(a , b) 这两个静态方法。
注意:java.lang.Object 这个类的 toString 方法打印出来的是对象的引用地址;equals()方法默认比较的是两个对象的引用。
JDK中很多类重写了equals()方法,包括Java.lang.String类和java.util.Arrays类。
java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解的更多相关文章
- Object、String、数组的 toString() 方法和 equals() 方法及java.util.Arrays
public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...
- JAVA笔记7-Object类之toString方法和equals方法
位于rt.jar\java\lang\Object.class Object类是所有Java类的根基类(Java中只有一个根基类,C++中有多个).如果在类声明中未使用extends关键字指明其基类, ...
- java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重
package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*训练知识点:HashSet 训练描述 双色 ...
- Java 重写hashCode 方法和equals方法
package Container; import java.util.HashSet; import java.util.Iterator; /* Set 元素是无序的(存入和取出的顺序不一定一致) ...
- Java连载56-toSting方法和equals方法
一.关于object中的toString方法: 1.SUN公司在Object类中设计toString方法的目的:返回java对象的字符串的表示形式. 2.在现实的开发过程中,Object里面的toS ...
- Java中Class.forName()用法和newInstance()方法详解
1.Class.forName()主要功能 Class.forName(xxx.xx.xx)返回的是一个类, Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就 ...
- java 之Thread线程相关yield()、sleep()、wait()、join()、run和start方法详解
1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据.注意该方 ...
- java的toString方法和sort方法
public class arrayTool { public static String toString(int arr[]){ String result = ""; for ...
- Java提高篇——equals()与hashCode()方法详解
java.lang.Object类中有两个非常重要的方法: 1 2 public boolean equals(Object obj) public int hashCode() Object类是类继 ...
随机推荐
- uml视频系列(二)——uml的概述
在与uml进行了第一次的接触后,就被uml的博学多才给迷住了,uml居然可以做这么多的东西.才思敏捷的uml是设计软件的好帮手. 你还在为自己的类图不会设计而感到无助吗?你还在为你的对象不好确定而感到 ...
- Python脚本收集腾讯云CDN日志,并入ELK日志分析
负责搭建公司日志分析,一直想把CDN日志也放入到日志分析,前些日志终于达成所愿,现在贴出具体做法: 1.收集日志 腾讯云CDN日志一般一小时刷新一次,也就是说当前只能下载一小时之前的日志数据,但据本人 ...
- Angular.js之Router学习笔记
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- linux网卡配置
6.3网卡配置 DEVICE=eth0 TYPE=Ethernet BOOTPROTO=dhcp ONBOOT=yes NETMASK=255.255.255.0 GETWAY=192.168.1.2 ...
- sql decimal & float & celling 介绍
decimal 可以用在指定几个位数比如 123.456, decimal(3,3), 用这类型计算比较准确. 默认情况下,将数字转换为较低精度和小数位数的 decimal 或 numeric 值时, ...
- 规范 : Sql statusEnum
statusEnum 的诞生是为了在看Sql 表时,可以知道他是一个有特别的string的分类,在扩张或修改时,可以方便追踪到c#, e.g. 如果是“称呼”(column title),在sql没有 ...
- .net程序员必知必会
1.C#,.Net和ASP.Net的区别: C#(Csharp): .net平台下的一种语言:注:(其他语言也可以开发.Net程序) .net : ...
- Laravel使用Seeder自动填充数据
要查看代码,可以点击 或者转到链接:https://github.com/laravel/framework Laravel自动填充数据使用的是Seeder类 <?php use Illumin ...
- C#语言基础——语句
1·语句是指程序命令,都是按照顺序执行的.语句在程序中的执行顺序称为"控制流"或"执行流".根据程序对运行时所收到的输入的响应,在程序每次执行时控制流可能有所不 ...
- vuejs数据双向绑定原理(get & set)
前端的数据双向绑定指的是view(视图)和model(数据)两者之间的关系:view层是页面上展示给用户看的信息,model层一般是指通过http请求从后台返回的数据.view到model的绑定都是通 ...