将对象转化为字符串

红太狼 2022-09-19 10:56 397阅读 0赞

将对象转化为字符串

System.out.println()方法我们很熟悉,用来控制台输出,比如System.out.println(“abc”),会输出字符串”abc”。但是当System.out.println()传递的参数为对象会是什么情况呢?下面来看一个简单的例子:

  1. package test;
  2. class A{
  3. int a;
  4. int b;
  5. public int getA() {
  6. return a;
  7. }
  8. public void setA(int a) {
  9. this.a = a;
  10. }
  11. public int getB() {
  12. return b;
  13. }
  14. public void setB(int b) {
  15. this.b = b;
  16. }
  17. }
  18. public class Test {
  19. public static void main(String args[]){
  20. A a = new A();
  21. a.setA(8);
  22. a.setB(9);
  23. System.out.println("a.a:"+a.a);
  24. System.out.println("a.b:"+a.b);
  25. System.out.println(a);
  26. }
  27. }

运行结果为:

  1. a.a:8
  2. a.b:9
  3. test.A@15093f1

可以看到,本来我是想输出a和b的值,但是结果的第三行却不是我们想要的结果。为什么呢?

Object中有一个toString()的方法,但不幸的是我们需要重写这个方法才能按照我们自己的意愿输出,将上面的程序稍作修改,即添加改写toString函数的代码:

  1. package test;
  2. class A{
  3. int a;
  4. int b;
  5. public int getA() {
  6. return a;
  7. }
  8. public void setA(int a) {
  9. this.a = a;
  10. }
  11. public int getB() {
  12. return b;
  13. }
  14. public void setB(int b) {
  15. this.b = b;
  16. }
  17. public String toString(){
  18. return "A.a:"+a+";A.b:"+b;
  19. }
  20. }
  21. public class Test {
  22. public static void main(String args[]){
  23. A a = new A();
  24. a.setA(8);
  25. a.setB(9);
  26. System.out.println("a.a:"+a.a);
  27. System.out.println("a.b:"+a.b);
  28. System.out.println(a);
  29. }
  30. }

运行的结果为:

  1. a.a:8
  2. a.b:9
  3. A.a:8;A.b:9

可以看到修改后就可以输出我们想要的结果了。

发表评论

表情:
评论列表 (有 0 条评论,397人围观)

还没有评论,来说两句吧...

相关阅读