操作数 自动变量在使用之前必须初始化 编译器扫描代码,判定每个变量在首次使用前是否已被显 式初始化。如果某个变量没有初始化,会发生编译时错误 例32 int x=(int)( Math. random0*100); int int z if(x>50){ y+x;∥可能在初始化之前使用,导致编译错误
操作数 ▪ 自动变量在使用之前必须初始化 ▪ 编译器扫描代码,判定每个变量在首次使用前是否已被显 式初始化。如果某个变量没有初始化,会发生编译时错误 ▪ 例3-2 int x = (int)( Math.random() * 100 ); int y; int z; if (x > 50) { y = 9; } z = y + x; // 可能在初始化之前使用,导致编译错误
操作数 变量作用域 变量的作用域是指可访问该变量的代码范围 类中定义的成员变量的作用域是整个类 方法中定义的局部变量的作用域是从该变量的说明 处开始到包含该说明的语句块结束处 块内说明的变量将屏蔽其所在类定义的同名变
操作数 ▪ 变量作用域 ▪ 变量的作用域是指可访问该变量的代码范围 • 类中定义的成员变量的作用域是整个类 • 方法中定义的局部变量的作用域是从该变量的说明 处开始到包含该说明的语句块结束处 ▪ 块内说明的变量将屏蔽其所在类定义的同名变 量
操作数 程序3-1冲突引起编译错误例子 选定命令提示符 D: \ava\program \c hapter3> D:\java\program\chapter3>javac Customer.java Customer.java:10: name is already def ined in main(java. langString[1> String nane ="Tom David"; error D: \java\progran\chapter3>
操作数 ▪ 程序3-1 冲突引起编译错误例子
操作数 程序3-2修改程序3-1,把第二个局部变量说 明改为赋值语句 国命令提示符 回 D: \java\program\chapter3\prog3-2>javac Customer.java D:\java\program\chapter3\prog3-2>java Customer The customer's name: Tom David D: Java\program\chapter3\prog3-2>
操作数 ▪ 程序3-2 修改程序3-1,把第二个局部变量说 明改为赋值语句
操作数 程序3-3 main(方法中两次说明了同名局部变量name 但第6行说明的变量只在第6至第9行的块内有 效,在块外该变量消失,第11行不在其作用域 大 命令提示符 回x D: \java \program\chapter3\prog 3-3>javac Customer. java D: \java\program\chapter3\prog3-3)java Customer The customer's name: Tom David The customer's name: John Smith D: java \program\chapter3\prog3-3>
操作数 ▪ 程序3-3 ▪ main()方法中两次说明了同名局部变量name, 但第6行说明的变量只在第6至第9行的块内有 效,在块外该变量消失,第11行不在其作用域 内