首页 > 试题广场 >

关于以下程序代码的说明正确的是?

[单选题]
关于以下程序代码的说明正确的是?
1.   public class HasStatic{
2.     private static int x=100;
3.     public static void main(String args[]){
4.          HasStatic hs1=new HasStatic();
5.          hs1.x++;
6.          HasStatic  hs2=new HasStatic();
7.          hs2.x++;
8.          hs1=new HasStatic();
9.          hs1.x++;
10.        HasStatic.x--;
11.        System.out.println("x="+x);
12.     }
13.   } 

  • 程序通过编译,输出结果为:x=103
  • 10行不能通过编译,因为x是私有静态变量
  • 5行不能通过编译,因为引用了私有静态变量
  • 程序通过编译,输出结果为:x=102
推荐
此题选择D。
首先要了解static的意思。

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

static变量在第一次使用的时候初始化,但只会有一份成员对象。


所以这里不仅可以调用,而且每一次调用都确实修改了x的值,也就是变化情况是这样的:
x=101
x=102
x=103
x=102

编辑于 2015-01-02 11:24:08 回复(18)
我看成10了
发表于 2017-12-03 14:15:24 回复(0)
我的天,这题的换行不科学啊,眼花了
发表于 2016-10-26 01:54:01 回复(0)
编译能通过。可能有人会问 HasStatic.x--;因为main方法位于 HasStatic类中,所以可以调用,在private
的允许使用范围中。    HasStatic.x是类常量,说白了就是大家共享一个。
发表于 2015-11-03 22:11:07 回复(1)
因为x是定义在方法外部的,成员变量,每次调用都会使其值发生改变,并且,改成员变量用static修饰,可以直接用类名调用,所以100+1+1+1-1=102
发表于 2017-08-30 23:38:49 回复(0)
为什么我运行完是103呢?
发表于 2015-09-15 15:52:23 回复(14)
main是HasStatic的静态方法,在其内部可直接访问静态变量,不存在因为私有变量不能通过编译的问题;如果在其他类中,包括HasStatic的派生类中,均不能访问其私有静态变量
发表于 2015-07-08 16:20:40 回复(10)

要注意2点,首先此处静态变量说明可以使用类/对象.变量来使用,同时也是共享的。其次就是private可在类内访问,恰好此处main方法中对静态变量的访问在类内,符合权限

发表于 2019-03-24 14:26:27 回复(0)
这题能选D的原因,还是因为Main方法在HasStatic里,如果在其他类方法中实例化HasStatic,是不能访问其私有变量的
发表于 2019-01-10 11:52:13 回复(0)
这道题的纠结点应该是是私有静态变量。 1.首先是静态变量,所以可以通过类名和对象名.变量名来使用 2.静态变量是类的一部分,属于该类所有对象共享的成员。 3.这里不要给私有变量困扰了。虽然是私有,但题目中的测试,该变量是在所属类里面的方法使用的,而不是在别的类使用,所以符合private的特性,so不会报错。
发表于 2018-05-27 23:27:47 回复(1)
个人认为,因为是静态变量,它是类级别的,private根本就不起作用,不必受其干扰,D
发表于 2015-08-22 18:04:34 回复(2)
当static作用于某个字段时,肯定会改变数据创建的方式(因为一个static字段对每个类来说都只有一份储存空间,而非static字段则是对每个对象有一个储存空间);
所以无论是HasStatic类的对象hs1,hs2,或是直接通过类名修改static作用的字段,都是一个,因此选择D
发表于 2015-09-18 12:19:29 回复(9)
static属性是属于类的,所以对象共同拥有。所以既可以通过类名.变量名进行操作,也可用对象.变量名进行操作。
发表于 2015-07-06 16:48:11 回复(0)

静态变量(类变量)存在于方法区中,方法区在JVM中也是一个非常重要的区域,它与堆一样,是被线程共享的区域。

发表于 2019-04-15 14:53:21 回复(1)
java 在解析类中属性和方法的时候,static 修饰的静态变量声明一次并在以后new对象中不再次声明,可被多个对象调用
发表于 2018-03-30 15:57:57 回复(0)
选D
考察了两个点:
1. static变量属于类本身而不是某一个实例,
2. 私有变量只能在本类中使用。
发表于 2018-08-08 15:55:21 回复(0)
感觉遇到的问题应该都是私有静态变量,注意题目是在同一个类下的私有静态变量,如果其他类引用就不行了。
发表于 2018-02-05 10:15:03 回复(1)
长见识了,类的变量,可以用类的实例来引用,为什么不直接严格一点只能通过类来引用。用类的实例来引用有什么意义吗。
发表于 2022-03-08 08:50:12 回复(0)
静态变量不管创建多少个对象,都只会有一份
发表于 2021-09-07 16:09:07 回复(0)
1、类内部可以访问类的私有成员,类外部的类对象和类的派生类内部均不可访问类的私有成员。
2、静态成员变量,可以通过类名直接访问,也可以通过类对象访问。
发表于 2021-06-13 18:04:22 回复(0)
用堆栈图来解释;
堆:放新new出来的对象/实例变量
栈:局部变量/方法的参数
方法区:.class字节码文件/方法,静态变量


发表于 2020-08-02 10:07:51 回复(0)