java的Object类的学习
来源:互联网 发布:数据建模培训班 编辑:程序博客网 时间:2024/06/08 19:37
object
所有类的公共父类,一旦一个类没有显示地继承一个类则其直接父类一定是Object。
equals方法
当引用类型调用equals方法时,如果没有重写equals方法,则比较的是内存地址,如果重写了equals方法则比较的是值的大小,但是String,Date等重写了equals方法,所以比较时不需要重写equals方法,比较的是值的大小。
public class TestEquals{ public static void main (String args[]){ Cat cat1 = new Cat(1,2,3); Cat cat2 = new Cat(1,2,3); System.out.println(cat1 == cat2); //false System.out.println(cat1.equals(cat2 )); //true String s1 = new String("hello"); String s2 = new String("hello"); System.out.println(s1 == s2); //false System.out.println(s1.equals(s2)); //true }}class Cat{ int color; int height,weight; Cat(int color , int height , int weight){ this.color= color; this.height = height; this.weight = weight; } public boolean equals(Object obj){ if(obj == null) return false; else{ if( obj instanceof Cat){ Cat c = (Cat)obj; if(c.color == this.color && c.height == this.height && c.weight == this.weight){ return true; } } } return false; }}equals和==的区别
对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
对于equals方法,注意:equals方法不能作用于基本数据类型的变量
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
/** * 字符串的拼接实际上是又new出了一个新的对象 * */public class StringTest {public static void main(String[] args) {char[] c = {'a','b','c'};String string = new String(c);//创建对象System.out.println(string.hashCode());String string2 = new String(c);System.out.println(string2.hashCode());String string3 = "abc";//常量池创建System.out.println(string2.hashCode());String string4 = "abc";//访问常量池存在的对象System.out.println(string2.hashCode());System.out.println(string == string2); //fSystem.out.println(string2 == string3); //fSystem.out.println(string3 == string4); //tSystem.out.println(string == string4); //f}}toString方法
toString方法可以返回一个字符串类型的关于该类的描述信息,我们通常会重写为我们需要的该对象的描述信息,比如对象各属性。
在某些情况下,虽然我们并没有显示的调用toString方法,但是程序依旧会调用toString方法
直接打印输出对象时,会调用该对象的toString()方法。//可以不写出来
打印对象的时候,实际调用的对象实际指向的类的自我描述;
public class Student { private String name; private int age; private char sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public void eat(){ } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", sex=" + sex + "]"; }}
0 0
- java的Object类的学习
- java中object类的学习
- java的Object类
- java的Object类
- Java的Object类
- java的Object类
- Java的Object类
- Java的Object类
- java学习笔记6--类的继承、Object类
- JAVA学习脚印7 : Object类的四个关键方法
- JAVA学习之Object类-equals方法的覆写
- Java源码学习-Object类的hashCode和equals方法
- java Object类的wait和notify学习
- java学习日记_51:Object类的hashCode()方法
- java学习日记_52:Object类的getClass()方法
- java学习日记_53:Object类的toString()方法
- Object类的方法学习
- Java的Object类详解
- Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
- 三目运算
- java:读取文件
- Butter Knife
- 全栈工程师之路-中级篇之小程序开发-第一章第一节注册小程序
- java的Object类的学习
- jq 与原生js 方法互相转换
- C++ explicit关键字详解
- 关于HTTP协议,一篇就够了
- psql命令参考
- java读取properties文件工具类
- matlab图像的读取和保存
- 欢迎使用CSDN-markdown编辑器
- 3.7 JS定时器