Java中如何在控制台输出声明的对象名称,以及重写equals()方法判断对象是不是相同?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中如何在控制台输出声明的对象名称,以及重写equals()方法判断对象是不是相同?相关的知识,希望对你有一定的参考价值。

例如,用Student类声明三个对象
Student stu1 = new Student("张三",20,"男");
Student stu2 = new Student("李四",21,"男");
Student stu3 = new Student("张三",20,"男");
在控制台输出三个声明的对象名称和具体内容,如下:

同时用equals方法判断对象的内容是否相同?
首先是控制台如何输出声明的三个对象,stu1,stu2,stu3,我不知道这三个对象是以什么方式存储的,无法通过某种方法获得

参考技术A ......有可能是集合
import java.util.*;
public class Test
public static void main(String[] args)
Student stu1= new Student("dongfang",21);
Student stu2= new Student("pangzi",22);
List l = new ArrayList();
l.add(stu1);
l.add(stu2);
Iterator i = l.iterator();
while(i.hasNext())
Student stu = (Student)i.next();
System.out.println(stu.getName()+stu.getAge()+stu.getSex());



Student类里应该有获得姓名,年龄,性别的方法吧?
难道是用反射得到的?
参考技术B public boolean equals(Student stu)
if(name==null||age==null||sex=null)
return false;
else(name.equals(stu.getName())&&age.equals(stu.getAge())&&sex.equals(stu.getSex()))
return true;

追问

else那句有错误,提示赋值的左边必须是变量,其实我不知道该把这个方法放到什么地方,是放到Student类中,然后在main方法中调用吗?Student声明了三个对象,您这个stu是哪个对象呢?

追答

放到Student类中,在main方法中的调用是stu1.equals(stu2);

追问

修改了下,这样通过编译了,我没有设置set,get方法
public boolean equals(Student stu)
if(name==null||age==0||sex==null)
return false;
else if(name.equals(stu.name)&& age==(stu.age)&&sex.equals(stu.sex))
return true;
else
return false;

谢谢了,创建的对象名的问题您有方法解决吗?Student stu1 = new Student();如何输出“stu1”?

参考技术C 重写Student这个类的equals方法.具体就判断他们的3个属性是否一样就OK了

java中如何输出字符变量的Unicode编码值

通过程序求“?”的Unicode编码值

java中可以使用char类提供的charAt()方法来获得字符的unicode的编码值,示例如下:

扩展资料:

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

参考资料:百度百科-java

参考技术A

java中可以使用char类提供的charAt()方法来获得字符的unicode的编码值,示例如下:

public static String getUnicode(String source)
 String returnUniCode=null;
 String uniCodeTemp=null;
 for(int i=0;i<source.length();i++)
  uniCodeTemp = "\\\\u"+Integer.toHexString((int)source.charAt(i));//使用char类的charAt()的方法
  returnUniCode=returnUniCode==null?uniCodeTemp:returnUniCode+uniCodeTemp;
 
 System.out.print(source +" 's unicode = "+returnUniCode);
 return returnUniCode;//返回一个字符的unicode的编码值

参考技术B

char类型的话,直接强转为int,即为对应的unicode值。

char c = '例';
int cUnicode = (int)c;
System.out.println("\\\\u"+cUnicode);

参考技术C public class Demo03CharSet
public static void main(String[] args)
String s = "字符变s";

System.out.println(getUnicode(s)); // \u5b57\u7b26\u53d8\u0073


/**
* @return
* @MethodName
* @Author lwx
* @Description 获取字符串的Unicode编码
* @Date 下午10:26 2021/8/24
* @Param
*/

public static String getUnicode(String str)
String strTemp = "";
if (str != null)
for (char c : str.toCharArray())
if (c > 255)
strTemp += "\\u" + Integer.toHexString((int)c);
else
strTemp += "\\u00" + Integer.toHexString((int)c);


// System.out.println(strTemp);

return strTemp;

参考技术D package com.teachjs.test;

public class TeachjsTest 

    public static void main(String[] args) 
        String s = "字符变量";
        String ss = stringToUnicode(s);
        System.out.println(ss);
    

    public static String stringToUnicode(String s) 
        String str = "";
        for (int i = 0; i < s.length(); i++) 
            int ch = (int) s.charAt(i);
            if (ch > 255)
                str += s.charAt(i) + ": " + "\\\\u" + Integer.toHexString(ch)
                        + "\\n";
            else
                str += s.charAt(i) + ": " + "\\\\u00" + Integer.toHexString(ch)
                        + "\\n";
        
        return str;
    

结果:

字: \\u5b57
符: \\u7b26
变: \\u53d8
量: \\u91cf

以上是关于Java中如何在控制台输出声明的对象名称,以及重写equals()方法判断对象是不是相同?的主要内容,如果未能解决你的问题,请参考以下文章

24. java面向对象 - 方法重写

java--面向对象重点

java面向对象中的方法重载与方法重写的区别

为啥要重写toString方法和hashcode方法

java重写toString方法

java中如何输出字符变量的Unicode编码值