Java的Object几个重写的方法
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几个重写的方法的更多相关文章
- Effective Java 第三版——10. 重写equals方法时遵守通用约定
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)
java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...
- java中Object相关的几个方法
protected Object clone()创建并返回此对象的一个副本. String toString()返回该对象的字符串表示. boolean equals(Object obj)指 ...
- Effective Java 第三版——11. 重写equals方法时同时也要重写hashcode方法
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- 【java基础】java中Object对象中的Hashcode方法的作用
以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode ...
- java实体类如果不重写toString方法,会如何?
先认识一下Object Object 类的 toString 方法 返回一个字符串,该字符串由类名(对象是该类的一个实例).at 标记符“@”和此对象哈希码的无符号十六进制表示组成.换句话说,该方法返 ...
- java父类调用被子类重写的方法
[转][原文] 1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上调用的是子类覆盖的方法(你需要了解jav ...
- java开发----自定义对象,重写equals方法
javaweb开发中,用到了好多自定义对象,这时候如果不重写equals方法,很多时候都会返回false, 因此我们必须习惯重写这个方法. 重点: 1.equals比较俩对象时比较的是对象引用是否指向 ...
- 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 ...
随机推荐
- Cisco Packet Tracer基本操作
IOS主要模式模式 描述 提示符用户执行模式 路由器受限检查,远程访问 Router>特权执行模式 路由器的详细检查:调试和测试,文件处理,远程访问 Router#全局配置模式 全局配置命令 R ...
- Android中国官网资源网站
现在android开发者官网在中国有中文版已经不是太大的新闻,为了平时查询资料和学习方便,记录如下. PS:建议用Google浏览器浏览,你懂的!! https://developers.google ...
- java切分查询数据库表
在实际应用中,我经常用到遇到根据单号查询,单号又是批量如1000个单号,直接1000个in子查询是不行的,子查询是用上限的.如果表中数据达到上百万以上.即使有单号字段有索引查询也是很慢.这时可以用切分 ...
- HTML中margin与padding的区别!(转)
我们以DIV为一个盒子为例,既然和现实生活中的盒子一样,那我们想一下,生活中的盒子内部是不是空的好用来存放东西,而里面存放东西的区域我们给他起个名字叫“content(内容)”,而盒子的纸壁给他起个名 ...
- Spark SQL实战
一.程序 package sparklearning import org.apache.log4j.Logger import org.apache.spark.SparkConf import o ...
- c#Cache的用法
public class Cache { /// <summary> /// 获取数据缓存 /// </summary> /// <param name="ca ...
- ExcelVBA 操作putty
Private Sub login(ip As String, userName As String, password As String) Dim TaskID As Long '设置进程id p ...
- 《剑指offer》面试题9 斐波那契数列 Java版
书中方法一:递归,这种方法效率不高,因为可能会有很多重复计算. public long calculate(int n){ if(n<=0){ return 0; } if(n == 1){ r ...
- stl(set和pair)
D - 4 Gym - 100989D In this cafeteria, the N tables are all ordered in one line, where table number ...
- luoguP1312 Mayan游戏 题解(NOIP2011)
luoguP1312 Mayan游戏 题目 #include<bits/stdc++.h> #define ll long long #define rg register #define ...