java局部变量改成员变量,javaSE面试题-成员变量与局部变量

问题描述:写成以下代码的运行结果

public class Exam5 {

static int s;

int i;

int j;

{

int i = 1;

i++;

j++;

s++;

}

public void test(int j){

j++;

i++;

s++;

}

public static void main(String[] args) {

Exam5 obj1 = new Exam5();

Exam5 obj2 = new Exam5();

obj1.test(10);

obj1.test(20);

obj2.test(30);

System.out.println(obj1.i + "," + obj1.j + "," + obj1.s);

System.out.println(obj2.i + "," + obj2.j + "," + obj2.s);

}

}

分析:

考点:

1.就近原则

2.变量的分类

成员变量:类变量、实例变量

局部变量

3.非静态代码块的执行,每次创建实例对象时都会执行

4.方法的调用规则:调用一次执行一次

java局部变量改成员变量,javaSE面试题-成员变量与局部变量_第1张图片

java局部变量改成员变量,javaSE面试题-成员变量与局部变量_第2张图片

静态代码块在栈中开辟空间,因为其属于类加载中的()方法

答案:

2,1,5

1,1,5

拓展题:

如果上题中的类改为

public class Exam5 {

static int s;

int i;

int j;

{

int i = 1;

this.i++;

j++;

s++;

}

public void test(int j){

this.j++;

i++;

s++;

}

答案又是多少呢?

要学会举一反三哟,有兴趣的小伙伴自己测试一下吧,或在下方评论留言。

觉得不错的小伙伴可以右上角点个赞或关注哟!

有问题请随时在下方留言,我会尽力一一解答。

标签:obj1,面试题,++,局部变量,int,Exam5,test,javaSE,public

来源: https://blog.csdn.net/fallwind_of_july/article/details/94438377

你可能感兴趣的:(java局部变量改成员变量)