一道jAvA静态的面试题想到的
2016-03-18 20:20
405 查看
(博客就从这里出发吧!) 静态变量是一个很不好搞懂的问题,如下图程序题,今天做的时候晕晕乎乎的,看到网上好多讲解也不太满意。所以自己只好愚笨地写写。 先看看所学对比静态与非静态的区别。 static,非private修饰 **Pk** 非static,非private修饰 属性:类属性,类变量 实例属性。实例变量 方法:类方法 实例方法 调用方式:类名. 或通过对象. 对象. 归属:类 单个对象
package cn.staticdemo; public class Test{ private static Test tester = new Test(); //step 1 private static int count1; //step 2 private static int count2 = 2; //step 3 public Test(){ //step 4 count1++; count2++; System.out.println("" + count1 + count2); } public static Test getTester(){ //step 5 return tester; } public static void main(String[] args){ Test.getTester(); System.out.println( "Test.count1=" +Test.count1+" "+ "Test.count2="+Test.count2); } } 结果:11 Test.count1=1 Test.count2=2 注意 Test()构造方法中是 +count1+count2 是拼接 注意 Test.getTester(); 观察程序执行顺序 先到了静态方法//step 1 那里。再执行//step 4 接着就是按顺序执行2,3,5。 不难发现 14235为执行顺序 **修改代码**
public static void main(String[] args){
System.out.println( “Test.count1=” +Test.count1+” “+ “Test.count2=”+Test.count2);
Test.getTester();
System.out.println( “Test.count1=” +Test.count1+” “+ “Test.count2=”+Test.count2);
}
只要记住Test.getTester();先执行,那么答案就很直观 答案:11 Test.count1=1 Test.count2=2 Test.count1=1 Test.count2=2 **再次修改代码**
Test t=new Test();
System.out.println( “Test.count1=” +Test.count1+” “+ “Test.count2=”+Test.count2);
答案为: 11 23 Test.count1=2 Test.count2=3 这时就是正常的逻辑。先执行静态变量,再到构造方法。 **明白上述道理候,再次修改代码**
Test.getTester();
Test t=new Test();
System.out.println( “Test.count1=” +Test.count1+” “+ “Test.count2=”+Test.count2);
“`
答案和上面的也一样。
Java小白,有错还望您指出。谢谢!
相关文章推荐
- 腾讯、百度、阿里以及各小公司面试经历
- 面试会问到的一些知识
- 程序员之路漫漫兮,吾将上下而求索2008-8-25 12:50阅读(1)
- 面试题目记录
- 群友(淡泊、明志)总结java面试题
- 群友(淡泊、明志)总结android面试题
- Java初级工程师面试题精选2
- 五个海盗如何分100个金币呢?
- 常见面试sql
- 程序员也需要这种魄力
- 面试感悟
- 哪些规则很重要,但却是99%职场人都不知道的?
- 项目经理面试中常被问到的12问题
- 程序员必须知道的10大基础实用算法及其讲解
- java工程师最新面试题(java语言基础)
- .Net WEB 程序员需要掌握的技能
- java工程师最新面试题(java语言基础)
- 阿里面试重点总结
- 不会用ant打包、部署项目的工程师,不是一个好程序员(测试)
- mac-程序员必备工具(2)-iTerm2