第一次的面试题

问题一、 该方法的返回值,执行步骤:
public static String testString(){
    String value=""; ---------------------- 1
    try {
        value="test1";---------------------- 2
        return value;---------------------- 3
    } catch (Exception e) {
        e.printStackTrace();---------------------- 4
    }finally {
        value="test2";---------------------- 5
    }
    return  value;---------------------- 6
}

  答案:
    返回值: “test1”、 执行顺序为: 1,2,3,5
      解析:
      毫无疑问finally是肯定会运行的,你想想释放资源不都是放在finally中的吗? 接下来就是运行finally的时机了, 那么他该是return之前运行呢?还是return之后运行呢?(思考几秒)



      答案都不是,他是在执行了return的中间运行。 当方法已经调用return方法将返回值压入方法内存了,但是程序没有返回 而是去执行finally。 并且finally调用完毕之后还会默认的调用 return ; 表示finally运行完毕,main方法可以执行其他方法了。

      所以返回值是 “test1”,但是如果finally方法中也有return XXX;的话,没毛病,返回值肯定是最后执行的return;

问题二、下面的程序是否有错
public class Problem {

	public Problem(){
    	//报递归错误。        在调用构造函数之前对象已经创建了,因为this指针。构造函数只是为了初始化值。
    	this();
	}

    String a="1234";
    char b[]={'a','b','c'};
    public static void main(String[] args) {
        Problem problem=new Problem();
        problem.show(problem.a,problem.b);
    }

    public void show(String a,char[] b){
        a="123456";
        b[0]='v';
        System.out.println("我被运行了。"+a+ Arrays.toString(b));
    }
   }

  答案:  main方法是Java程序的入口方法。所有方法的执行都必须在main方法内部。 那么也就是说当main方法运行的时候,也就是程序运行的时候了。那是不是调用main方法的类已经创建成功了呢?    程序都在运行了,类却没有创建成功是不是很扯淡。

  类都创建成功了,当然就可以创建对象,当然就可以调用对象方法了。

问题衍生: 为什么对象还没有创建好,就能在构造函数中使用this指针了?
  Java对象建立其实在构造函数之前,构造函数只是将对象的属性初始化。 他会在构造函数的第一行代码前,默认的执行 this() 。这不就创建对象了? 想想this指针是什么? this指针不就是当前对象的引用吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值