面试题中的坑点

现在是面试的黄金时期,诸多同道中人,和刚毕业的大学生,亦或是(....),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调用本类中的非静态方法.
这样大家会不会很清晰的分析整个程序呢!


你可能感兴趣的:(面试)