[英]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.