1:toString();

只是简单的列出对象的状态(也就是重要的实例变量的当前值)。

package jicheng;
public class Animal {
public static void main(String[] args) {
Animal a=new Animal();
System.out.println(a);
}
}

输出结果:

重写

package jicheng;

public class Animal {
private String name;
private int age;
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 Animal(){}
public Animal(String name,int age){
this.name=name;
this.age=age;
System.out.println("name="+name+","+"age="+age);
}
@Override
public String toString() {
return "Animal [name=" + name + ", age=" + age + "]";
}
}
package jicheng;

public class Animatetable {
public static void main(String[] args) {
Animal a =new Animal("lu",13); System.out.println(a);
} }

小知识:this 关键字

  1):表示当前的类的成员变量,也叫 类的属性

package jicheng;

public class A{
private String name;//定义一个成员变量name public String getName() {//获得姓名
return name;
} public void setName(String name) {//设置姓名,定义一个形参name
name = name;//将局部变量的值传递给成员变量
}
public static void main(String[] args) {
A a=new A();
a.setName("lu");
System.out.println(a.getName());
}
}

由运行结果可以看出,通过name=name并没有正确的将内容赋给属性,为什么呢?因为此时操作的name实际上是方法中的,跟类中的属性完全不沾边。

另外,这个程序代码中,有一个成员变量name,同时在方法中有个形式参数,参数名也是name。然后在方法中将形式参数name的值传递给成员变量name。虽然我们可以看明白这个代码的含义,但是作
为Java编译器它是怎么判断使用哪个变量的呢?到底是将形式参数name的值传递给成员变量name,还是反过来讲成员变量name的值传递给形式参数name呢?

此时this这个关键字就起到作用了,这种情
况下使用this这个关键字代表的就是类中的成员变量,又叫做类的属性。所以此时,为了明确的表示出哪一个是类中的属性,就要加上“this.属性名称”的操作。

2):引用构造函数。

package jicheng;

public class A{ 
    public static String name;//定义一个成员变量name
    
    public String getName() {
        return name;
    }     public void setName(String name) {
        this.name = name;
    }
    public A(){  //定义一个无参的构造函数
        this(name);//调用有参的构造函数
        System.out.println("testA");
        
    }
    public A(String name){//定义一个有参的构造函数
        System.out.println("TestA");
    }
}
public class Test {
public static void main(String[] args) {
A a=new A();
}
}

输出

创建了一个A对象。 然后a引用A()对象。调用 public A()构造函数。但是无参构造函数中有this("TestB");表示调用有参的构造函数。所以也打印出来了。

3):this表示当前对象。

package jicheng;

public class A{
public String getInfo(){
System.out.println("Student类--->"+this);
return null;
}
public static void main(String[] args) {
A a=new A();
a.getInfo();
System.out.println(a.toString());
System.out.println(a);
}
}

return this  返回当前对象。

public A getInfo(){
System.out.println("Student类--->"+this);
return this;
}

二):equals()

  比较两个引用是否完全相同时。用==来比较。 要知道对象本身是否相同时。用equals()方法。

  假如两辆车A和B。都是同一批生产的。==来比较的话是两个引用都指向这辆车。

Java的Object几个重写的方法的更多相关文章

  1. Effective Java 第三版——10. 重写equals方法时遵守通用约定

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  2. 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  3. java中Object相关的几个方法

    protected Object clone()创建并返回此对象的一个副本. String     toString()返回该对象的字符串表示. boolean equals(Object obj)指 ...

  4. Effective Java 第三版——11. 重写equals方法时同时也要重写hashcode方法

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  5. 【java基础】java中Object对象中的Hashcode方法的作用

    以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode  ...

  6. java实体类如果不重写toString方法,会如何?

    先认识一下Object Object 类的 toString 方法 返回一个字符串,该字符串由类名(对象是该类的一个实例).at 标记符“@”和此对象哈希码的无符号十六进制表示组成.换句话说,该方法返 ...

  7. java父类调用被子类重写的方法

    [转][原文]  1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上调用的是子类覆盖的方法(你需要了解jav ...

  8. java开发----自定义对象,重写equals方法

    javaweb开发中,用到了好多自定义对象,这时候如果不重写equals方法,很多时候都会返回false, 因此我们必须习惯重写这个方法. 重点: 1.equals比较俩对象时比较的是对象引用是否指向 ...

  9. 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; in ...

随机推荐

  1. CDN:BootCDN 项目列表-摘录-20180405

    ylbtech-CDN:BootCDN 项目列表-20180405 1.返回顶部 1.   2. 2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1. http://www.boo ...

  2. Node.js - 使用 Express 和 http-proxy 进行反向代理

    安装 Express 和 http-proxy npm install --save express http-proxy 反向代理代码 proxy.js var express = require( ...

  3. 138、Tensorflow serving 实现模型的部署

    将Tensorflow模型部署成Restful接口 下面是实现过程,整个操作都是在Linux上面实现的,因为Tensorflow Serving 目前还只支持Linux 这个意义真的是革命性的,因为从 ...

  4. 慎用create table as select,一定要注意默认值的问题

    再做一些数据迁移时候,很多人会使用create table  as select * from table where id=-1的方式来年建立一摸一样的表,但是这样做有个很大的弊端,不能将原表中的d ...

  5. mysql 开放远程连接权限连不上

    1.my.cof配置了:bind-address=addr  或   skip-networking,需要注释 2.防火墙限制3306端口: iptables -L -n --line-numbers ...

  6. Vagrant 手册之 Vagrantfile - SSH 设置 config.ssh

    原文地址 配置的命名空间:config.ssh config.ssh 中的设置与配置 Vagrant 如何通过 SSH 访问您的计算机相关. 大多数 Vagrant 设置一样,一般使用默认设置即可,但 ...

  7. 舔狗【2019河北省大学生程序设计竞赛 J题】

    题目描述 > “舔狗舔狗,> 舔到最后,> 一无所有.” 有 n 只舔狗,每只舔狗的心中都有自己朝思暮想的一位. 每个人虽然受到了一万次拒绝,还毅然第一万零一次鼓起勇气. 作为一个不 ...

  8. linux + eclipse + cdt 报错undefined reference......好麻烦的,这位大牛给出的方法可行,特此MARK!!!!

    http://bbs.csdn.net/topics/390239632 kerosun kerosun 等级: 结帖率:96.92% 楼主 发表于: 2012-10-11 12:00:51   比如 ...

  9. vmware内部错误

    今天不知道怎么回事 wmware workstation重启的时候总是报内部错误 差点重装了 幸亏找到了这个 原来只要以管理员的身份运行vwware就ok了 http://www.xiaoluobok ...

  10. 09 (H5*) JS第7天 原型

    目录 1:创建对象的3中方式 2:工厂模式创建实例对象 3:  实例对象和构造函数的关系 4:构造函数创建对象带来的问题--原型 5:原型中创建方法 6:构造函数.原型对象.实例对象的关系 7:原型对 ...