繁体   English   中英

java:对象作为返回类型

[英]java: object as a return type

public class task1
{
  public static void main(String args[])
  {
     StringClass s3 = new StringClass("ANYTHING");
     System.out.println("Lower Case: " + s3.toLowerCase());
  }
}

public class StringClass
{
  private char[] data;

  public StringClass(){
  }

  public StringClass(char[] input)
  {
    this.data = new char[input.length];
    for(int i = 0; i < input.length; i++)
    {
      data[i] = input[i];
    }
  }

  public StringClass(String s)
  {
    this.data = s.toCharArray();
  }
  public StringClass toLowerCase()
  {
    int a;
    char ch;
    StringClass newStr = new StringClass();
    newStr.data = new char [data.length];
    newStr.data = this.data;

    for(int i = 0; i < data.length; i++)
    {

      if( data[i] >= 'a' && data[i] <= 'z')
      {
        newStr.data[i] = data[i];
      }
      else
      {
        a = (int) data[i] + 32;
        ch = (char) a;
        newStr.data[i] = ch;
      }
    }

    return newStr;
  }
}

所以当我在 main 方法中调用这个s3.toLowerCase()函数时,它返回一个引用内存位置。 虽然我想访问转换为小写的值。 我无法弄清楚的是如何从方法toLowerCase()返回的StringClass实例的转换后的字符数组中获取字符串表示形式。 另一个线程没有解释如何从toString()方法返回数组。

将先前链接为原始问题的信息与StringClass评论中链接的信息相结合:在StringClass类中添加以下方法覆盖:

  @Override
  public String toString() {
    return new String(data);
  }

通过此更改,您的task1类输出:

小写:任何

toString方法定义了应该打印什么,而不是像StringClass@5c647e05这样的东西。 new String(data)data数组中的字符形成一个新字符串。

StringClass@5c647e05是从Object.toString返回的字符串。 toString永远不会返回 char 数组,因为它在Object类(所有 Java 类的父类)中声明,它返回String 因此,正如汤姆所说,我们返回数组的字符串表示形式。

链接

我所需要的只是这个函数,在创建这个函数之后,我可以从函数调用返回对象,然后我会得到对象内部的字符串。

@Override
  public String toString()
  {
    String r = "";
    for(int i = 0; i < data.length; i++)
    {
      r += data[i];
    }
    return r;
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM