A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

给你个例子吧:
public class Test001 {   
8.    static int a = 27;//全局变量   
9.    static void test() {   
10.        boolean flag = false;// flag是局部变量,他的有效范围市整个方法体   
11.        if (!flag) {   
12.            int a = 20;// 局部变量a,是必须进行初始化的且只在if块中有效   
13.            System.out.println("a1=" + a);   
14.        }   
15.        // a = 10;// 注意,这一行是会报编译错误:未声明变量a   
16.    }  

百度上查的,但是看得不是很明白,请高手指点!!在此谢过啦。。

5 个回复

倒序浏览
我运行了一下 a=10没有报错啊
回复 使用道具 举报
  1. public class Test001 {   
  2.     static int a = 27;//全局变量,生命周期和类一样长,
  3.     static void test() {   
  4.         boolean flag = false;// flag是局部变量,有效范围市整个方法体,即test()方法内有效,可以在if语句块中取的该值  
  5.         if (!flag) {   
  6.             int a = 20;// 局部变量a,是必须进行初始化的且只在if块中有效  
  7.             System.out.println("a in if: " + a);   
  8.             Test001 t = new Test001();// 创建一个该类的对象,可以通过对象直接获取全局变量a的值
  9.             System.out.println("t.a: " + t.a);
  10.             System.out.println("flag " + flag); //在if中取得flag的值
  11.         }   
  12.         a = 10;  //这句没有错误啊,这是在方法中改变了全局变量a的值
  13.     }  
  14.         public static void main(String[] args){
  15.                 test();
  16.                 System.out.println("a in all: " + a);
  17.         }
  18. }
复制代码

        (1)成员变量(全局变量):作用与整个类中,随对象存储在堆内存中。声明位置是在类中,一般用于保存一些各个方法公用的值,比如有一个模拟超市的程序,一个值n代表某商品的数量,一个进货方法使n增加,一个售货方法使n减少,两个方法都要操作这一个数据。如果n声明成局部的,那么这两个相关的过程就会变得不相干了
        (2)局部变量:作用于方法或语句中,方法或语句结束则生命周期结束,存放在栈内存中。声明位置在方法中则作用于整个方法,在如if、for、while等语句块中是则仅作用于语句块。局部变量一般用于当作中转值或循环中的自增自减值来使用。方法执行时,会初始化局部变量,一般会接收调用方法时传来的要操作的数据,局部变量接收这些数据,方法处理这些数据,然后返回处理结果,中间的这些局部变量随方法结束销毁。
回复 使用道具 举报
变量在同一个类里都可以使用,而局部变量只能在本身的函数内使用,出了函数就无法使用了
回复 使用道具 举报
树小森 发表于 2015-4-28 09:07
(1)成员变量(全局变量):作用与整个类中,随对象存储在堆内存中。声明位置是在类中,一般用于保存一些 ...

谢谢:handshake
回复 使用道具 举报
13699266500 发表于 2015-4-28 09:13
变量在同一个类里都可以使用,而局部变量只能在本身的函数内使用,出了函数就无法使用了 ...

thank you!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马