首页 > 试题广场 >

关于下列程序段的输出结果,说法正确的是?

[单选题]

关于下列程序段的输出结果,说法正确的是:( )

public class MyClass{
    static int i;
    public static void main(String argv[]){
        System.out.println(i);
    }
}

  • 有错误,变量i没有初始化。
  • null
  • 1
  • 0
类变量在不设置初始值时,会进行默认值赋值,而局部方法中声明的变量则必须进行初始化,他不会进行默认值赋值。
发表于 2017-02-02 16:23:45 回复(19)
d
发表于 2016-12-19 17:47:26 回复(0)
成员变量和局部变量的区别
1、成员变量是独立于方法外的变量,局部变量是类的方法中的变量
1)、成员变量:包括实例变量类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用。
2)、局部变量:包括形参,方法局部变量,代码块局部变量,存在于方法的参数列表和方法定义中以及代码块中。
2、成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及 static修饰;两者都可以定义成final型。
3、成员变量存储在堆,局部变量存储在栈。局部变量的作用域仅限于定义它的方法,在该方法的外部无法访问它。成员变量的作用域在整个类内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用成员变量。
4、局部变量的生存周期与方法的执行期相同。当方法执行到定义局部变量的语句时,局部变量被创建;执行到它所在的作用域的最后一条语句时,局部变量被销毁。类的成员变量,如果是实例成员变量,它和对象的生存期相同。而静态成员变量的生存期是整个程序运行期。
5、成员变量在累加载或实例被创建时,系统自动分配内存空间,并在分配空间后自动为成员变量指定初始化值,初始化值为默认值,基本类型的默认值为0,复合类型的默认值为null。(被final修饰且没有static的必须显式赋值),局部变量在定义后必须经过显式初始化后才能使用,系统不会为局部变量执行初始化。
6、局部变量可以和成员变量 同名,且在使用时,局部变量具有更高的优先级,直接使用同名访问,访问的是局部变量,如需要访问成员变量可以用this.变量名访问
本例中i为成员变量,有默认的初始值,如果定义在方法内部,就没有初始值
编辑于 2017-11-27 17:56:35 回复(12)
静态变量会默认赋初值,局部变量和final声明的变量必须手动赋初值
发表于 2017-03-09 21:52:26 回复(9)
Java中基本数据类型默认值为:   short: 0   int: 0   long:0   float: 0.0   double: 0.0   char:0   String:null   Java中对象引用默认值为null
发表于 2017-02-01 16:04:56 回复(4)
发表于 2017-01-21 17:45:00 回复(2)
局部变量没有默认初始化值,必须先赋值后使用,否则通不过编译;
成员变量(类的属性)有默认初始化值,在创建对象时被初始化
static修饰属性就成为了类变量,在类加载时被创建,并进行初始化
发表于 2017-07-20 12:59:15 回复(0)

Java静态变量初始化遵循以下规则:

  • 静态变量会按照声明的顺序先依次声明并设置为该类型的默认值,但不赋值为初始化的值。
  • 声明完毕后,再按声明的顺序依次设置为初始化的值,如果没有初始化的值就跳过。
发表于 2016-12-22 16:31:38 回复(1)
倒不如说是 非final 实例变量和 类变量 会 付初始值  ,final 声明 的 和 方法中的 局部变量 需要 手动 付赋初值
发表于 2017-06-03 21:09:06 回复(0)
本题考查的是变量初始化相关知识。
int   0 ;  // int类型默认初始化值为0;

在jvm编译java文件的[语义解析]步骤中,会进行"检查任何类型变量在使用前是否已经初始化"操作。故未初始化的变量在编译阶段已经‘被’初始化。[参考书籍:Java虚拟机精讲]
与此相近还会进行"添加缺省无参构造方法","将String常量进行合并","解析Java语法糖"等操作。
[附:基本类型默认初始值]

boolean     false
char           '/uoooo'(null)
byte           (byte)0
short          (short)0
int              0
long           0L
float           0.0f
double       0.0d



编辑于 2019-03-13 22:18:30 回复(0)
类加载的过程分为加载,验证,准备,解析,初始化,使用卸载七个阶段,其中准备阶段是正式为类变量(即静态变量)分配内存并设置类变量的初始值的阶段。准备阶段过后static int i的值为0;如果有static int i = 123,在准备阶段过后的值仍为0,把 i 赋值为123的动作要到类的初始化阶段才会被执行。
发表于 2021-01-21 10:45:00 回复(0)
静态变量会默认赋值,局部变量和final声明的变量必须手动赋值 默认值:short/byte/int/long:0 char:\u0000 String:null boolean:false
发表于 2022-04-02 16:58:14 回复(0)
成员变量如果没有显式指定初始值,则会进行默认赋值;
发表于 2020-08-20 08:03:48 回复(0)
局部变量和final必须赋予初始值
发表于 2020-04-16 12:08:06 回复(0)
选D
成员变量和类变量存在默认值
发表于 2018-06-29 19:28:27 回复(0)
类变量在不设置初始值时,会进行默认赋值,而局部变量(方法中的变量)必须进行初始化,不会进行默认的赋值,Java中基本数据类型默认值为:   short: 0   int: 0   long:0   float: 0.0   double: 0.0   char:0   String:null   Java中对象引用默认值为null
发表于 2017-08-15 09:44:58 回复(0)
上述静态变量没有初始化,会有默认值 int 为0,String为null,float为0.0 。。。以此类推 诸位可以去试试
发表于 2023-08-11 14:03:45 回复(0)
题目出错 main方法参数args 希望可以纠正。
发表于 2020-01-07 09:26:55 回复(1)
静态变量会默认赋初值,局部变量和final声明的变量必须手动赋初值
发表于 2018-09-27 10:11:37 回复(0)
这里默认是0
发表于 2017-04-10 10:02:24 回复(0)