现在是面试的黄金时期,诸多同道中人,和刚毕业的大学生,亦或是(....),hehe 大家懂的! 会面临一些面试时的坑,今天就跟大家分享一位同学所遇到的坑。
下面是一位同学在面试的时候遇到的问题,代码如下:
/**
* 面试题
*
* @author Liang
*
*/
public class Something {
public String doSomething() { //①
return "Do something...";
}
public static void main(String[] args) {
Something s = new Something();
System.out.println("s.doSomething() return"+doSomething()); //②
}
}
大家觉得会输出什么呢?
有的人说:
s.doSomething() return Do something...
又有的人说:
编译错误
根据回答的颜色,想必大家都已经知道了正确答案了吧。
对,编译错误!
为什么呢? 来给大家分析下!
本身上面代码在编译的时候就会显示错误,大家看在main方法中的②步,doSomething()大家不感觉有点不对劲吗?什么方法能直接被调用?(对,静态方法)但是我们看①步中的方法是什么方法?对非静态方法。所以呢?当然是不能通过编译了!
找到问题之后,你应该怎么解决?
正常的来说,有点java基础的我们可以有这两种方法:
i.将调用的方法声明为静态方法
ii.用实例变量s调用本类中的非静态方法.
这样大家会不会很清晰的分析整个程序呢!