Java基本数据类型(2)

2019-08-29 21:50

static int x;

public static void main(String[] args) {

int x ; int j = x;

}

}

会产生如下的编译错误:

Variable 'x' may be used before initialization

(变量尚未初始化就被使用)

在Java中,变量在使用之前必须要先赋初值。可以在变量定义的时候赋给它初始值。例如:

int foo = 3;

double dn = 3.1415926D

也可以在变量定义之后再对它赋值。例如: int value; …… value = 1;

3局部变量的作用域

作用域,是指一个标识符在程序中的有效范围。这里,我们只讲局部变量的作用域,即在块中定义的变量的作用域。块(block)是指用一对大括号{}括起来的一系列语句和变量声明。比如,每个方法体都是一个块,在方法体内,也可以用{}定义块。块可以嵌套。程序清单4-6说明了块的概念。

注意:这里所说的块仅指方法体和方法体中嵌套的块,不包括类体。

程序清单4-6 class Block { public static void main(String[] args) { int a = 3; System.out.println(a+”在方法体中”); { //此处定义了一个子块 int b = 4; System.out.println(b+ “在第一层子块中”); { //子块中又定义子块 int c = 5; System.out.println(c+ “在第二层子块中”); } } } } 程序清单4-6执行结果如下:

3在方法体中 4在第一层子块中 5在第二层子块中

块在执行时按照从前到后,从左到右的顺序依次执行。如果块中的所有语句都能正确执行,则块可以正确执行,否则,如果块中的某一条语句执行异常,那么整个块也会因同样的原因执行失败。

局部变量是在块中定义的。局部变量的作用域是从它定义之处起到它所在的块结束之处,包括它的初始化部分。如果在这个范围内重新定义了该变量(即定义了和该变量重名的变量),就会产生编译错误。也就是说,局部变量的隐藏是不允许的。程序清单4-7是一个错误的例子,它试图隐藏局部变量,结果会产生编译错误。

程序清单4-7 class Scope { public static void main(String[] args) { int a = 3; //在方法体中定义了局部变量a System.out.println(a); { int a = 8; //错误!此处不能再定义同名的局部变量 System.out.println(a); } System.out.println(a); } } 编译程序清单4-7时,编译器会产生如下错误:

Variable 'a' is already defined in this method Error executing jvc.exe.

错误信息表明变量a在main方法中已经定义了,在内层块中不能重新定义以隐藏外层定义的变量a。

但是,在两个不存在包含关系的块中定义相同名字的变量是允许的,因为它们的作用域不相交。程序清单4-8示例了两个没有嵌套关系的块中变量的作用域。

程序清单4-8 class Scope2 { public static void main(String[] args) { { //第一个子块 int a = 3; //在第一个子块中定义局部变量a System.out.println(“在第一个块中的变量a= “+a); } //第一个块中定义的局部变量a的作用域到此结束 { //第二个子块 int a = 8; //在第二个子块中定义局部变量a System.out.println(“在第二个块中的变量a= “ + a); } //第二个块中定义的局部变量a的作用域到此结束 } } 程序4-8的输出结果如下:

在第一个块中的变量a= 3 在第二个块中的变量a= 8


Java基本数据类型(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公司高层管理人员绩效考核条例(2014)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: