下面程序执行会出现错误吗?如果有错是什么错误?
public class Qus9 {
public static void main(String[] args) {
String i = "123", s;
s = getStr(i);
System.out.println(s);
}
public String getStr(String s) {
StringBuffer sb = new StringBuffer();
for (int i = s.length() - 1; i >= 0; i--) {
sb.append(s.charAt(i));
}
return sb.toString();
}
}
解析:java 程序类是在 static (静态)修饰基础上的,而函数 getStr并不是一个 static 函数,所以编译不通过。如下图所示:
正确的写法:
第一种,将方法换成静态方法(类方法);
public class Qus9 {
public static void main(String[] args) {
String i = "123", s;
s = getStr(i);
System.out.println(s);
}
//将方法变成类方法,就是静态方法,就可以直接调用
public static String getStr(String s) {
StringBuffer sb = new StringBuffer();
for (int i = s.length() - 1; i >= 0; i--) {
sb.append(s.charAt(i));
}
return sb.toString();
}
}
第二种,通过创建实例,调用方法,如下图所示:
public class Qus9 {
public static void main(String[] args) {
String i = "123", s;
//通过创建实例进行调用
s = new Qus9().getStr(i);
System.out.println(s);
}
public String getStr(String s) {
StringBuffer sb = new StringBuffer();
for (int i = s.length() - 1; i >= 0; i--) {
sb.append(s.charAt(i));
}
return sb.toString();
}
}