首页 > 试题广场 >

有以下一段代码,请选择其运行结果?

[单选题]
有以下一段代码,请选择其运行结果。( )
public class Spike
{
    public static void main(String[] args)
    {
        Counter a = new Counter();
        System.out.println(a.increment());
        System.out.println(a.anotherIncrement());
        Counter b = new Counter();
        System.out.println(b.increment());
    }
}
class Counter
{
    private static int count = 0;
    public int increment()
    {
        return count++;
    }
    public int anotherIncrement()
    {
        return ++count;
    }
}


  • 1 1 1
  • 1 2 3
  • 0 2 2
  • 0 2 0
推荐
答案:C
解析:
count是静态变量,为所有对象所共享,因此不管a.increment()还是b.increment()都会使count持续增加。
increment()方法返回当前count值,然后count增加1
antoherIncrement()方法让count增加1,然后返回count值
第一次a.increment()返回值为0,此时count值为1
第二次a.anotherIncrement()先让count+1再返回,返回值为2
第三次b.increment()先返回count当前值2,然后count+1
编辑于 2015-01-27 10:29:56 回复(7)
1、先要注意,count是静态变量,被所有对象共享
2、接着要明白count++与++count的区别,前者是先赋值后相加,后者是先相加后赋值
3、第一次a.increment()里的count是先赋值后相加,所以会先返回0,接着后相加,此时静态变量count为1。
4、第二次a.anotherIncrement()里的count是先相加后赋值,所以相加后count为2,接着返回2,此时静态变量count为2。
5、第三次a.increment()里的count是先赋值后相加,所以会先返回2,接着后相加,此时静态变量count为3。
所以答案选C。
发表于 2017-05-10 15:53:08 回复(4)
猜中了开头和中间,却没有猜中结尾。我真傻真的,我单以为两个对象操纵的是对象不同的count,却没想到是一个static变量。
发表于 2016-04-24 15:53:48 回复(19)
C
System.out.println(a.increment());
a.increment为后++,返回0
System.out.println(a.anotherIncrement());
此时a=1,++操作以后变为2
System.out.println(b.increment());
执行后++操作,仍然返回++操作之前的值
发表于 2015-01-26 21:05:41 回复(1)
{int i=0;  int j=i++;}
{int i=0; int z=++i;}
运算过后,j=0;表明i++是指先把i赋值给j然后再自身加1;
运算过后,z=1;表明++i是指先自身加1后赋值给z;
总之记住++号在后面的意思是先赋值然后自身加1;++在前面的是先自身加1后赋值;
发表于 2017-03-22 09:43:08 回复(0)

static 表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态 static 代码块,但是 Java 语言中没有全局变量的概念。

static 修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享

只要这个类被加载, Java 虚拟机就能根据类名在运行时数据区的方法区内定找到他们 。因此, static 对象可以在它的任何对象创建之前访问,无需引用任何对象。

发表于 2017-01-19 10:07:42 回复(0)
1:注意static为静态变量就ok的
2:前++是先加再运算或者输出;
    后++是先输出运算再加
其他的大家都很稳很稳了
发表于 2018-03-10 17:52:22 回复(0)
此题关键:类变量只在类加载过程中创建一次,仅此一次;实例变量每new一次便创建一次
发表于 2017-06-24 00:13:13 回复(0)
1. count是静态变量,为所有对象所共享,因此不管a.increment()还是b.increment()都会使count持续增加,如果去掉static,将输出020。
2.第一次调用increment()方法返回当前count值0,然后count增加1,count=1。
3.第一次调用antoherIncrement()方法让count增加1,count=count+1=1+1=2,然后返回count值2。
4.新创建对象b,会共享a对象的静态变量count,即值也为2,但是如果count没有static,b对象将获得count的初始值0。
发表于 2019-09-11 21:43:37 回复(0)
注意静态变量,被对象共享,修改的时候修改的自然是一个内存去区的数据
发表于 2018-10-30 10:27:21 回复(0)
选C
说一下啊,++count返回的是自加后的值,count++返回的是自加之前的值。而count是一个static变量,所以count被所有实例共享。
发表于 2018-07-09 22:44:32 回复(0)
自己总结了一个记忆区分++a和a++的方法: 把对变量a操作理解成“用”,然后读出来, ++a,我们读,先加后用 a++,我们读,先用后加 所以,return ++a就是在用a这个变量前先加再return(用) return a++就是先把a的值return(用)后再加。
编辑于 2018-04-22 21:31:04 回复(0)
1、先要注意,count是静态变量,被所有对象共享 2、接着要明白count++与++count的区别,前者是先赋值后相加,后者是先相加后赋值 3、第一次a.increment()里的count是先赋值后相加,所以会先返回0,接着后相加,此时静态变量count为1。 4、第二次a.anotherIncrement()里的count是先相加后赋值,所以相加后count为2,接着返回2,此时静态变量count为2。 5、第三次a.increment()里的count是先赋值后相加,所以会先返回2,接着后相加,此时静态变量count为3。 所以答案选C。
发表于 2017-06-01 22:21:43 回复(0)

一切尽在不言中

private static int count = 0;

发表于 2017-03-08 15:14:07 回复(0)

静态变量为所有成员共享

发表于 2019-10-30 23:32:10 回复(0)
static 修饰的count要注意,否则很容易采坑

发表于 2019-10-29 11:23:16 回复(0)
count是静态的!
发表于 2019-07-26 21:39:27 回复(0)
类定义的私有变量,如果是静态的,就被所有类共享
发表于 2019-06-23 23:57:30 回复(0)
上了静态变量的当了 选的D😂
发表于 2019-06-21 14:42:41 回复(0)
Counter a = newCounter();
System.out.println(a.increment()); 先返回在运算 count=0,count = count+1=1
System.out.println(a.anotherIncrement()); 先运算再返回,count=count+1=2
Counter b = newCounter(); 静态变量只编译一次,属于类对象,全部对象实例共享
System.out.println(b.increment()); 同理 返回count = 2,在运算count=count+1=3
发表于 2019-06-01 15:56:54 回复(0)
所有同类对象共享一个静态变量
发表于 2019-04-25 23:08:46 回复(0)