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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蒋昌宏 黑马帝   /  2012-2-22 21:09  /  17507 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

{

     int b;

     i=b;//在这里会提示你没有初始化

     {

        b=8;

        System.out.println("二级作用域"+b);

     }

     System.out.println("一级作用域"+b);

   }

  

问题 :java中局部变量和全局变量的区别?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

11 个回复

倒序浏览
第1个问题:你需要初始化一个值  一般是 int b =0;
第2个问题:全局变量是在整个类中可以直接调用,局部变量只能在方法中调用!或者是声明在 for 循环 里面 那就只能在for循环里面使用  其他方法是调用不到局部变量的~

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
类体由2部分构成:
一部分是变量的定义;
一部分是方法的定义(一个类中可以有多个方法)

在变量部分定义的变量叫做类的成员变量,成员变量在整个类中都有效.
(全局变量应该是成员变量的俗称)
在方法体中定义的变量叫做局部变量,局部变量只在定义它的方法中有效.

成员变量又分为 实例变量 和 类变量(static静态变量).
class One
{ float x;      //x为实例变量
  static int y; //只要有关键字static,y为类变量
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
简单地说:就是一个定义在类里面,一个定义在类的方法里面~~~亲
回复 使用道具 举报
局部变量是定义在方法里面的变量,包括方法的参数列表中的变量,它的作用域就是它所在的那个函数的作用域,
即所在函数的两个大括号内,它都存在着,在内存中,局部变量和函数存在于栈内存,一旦函数执行完毕,函数就出栈
了,同时局部变量也随之消失,
全局变量又叫成员变量,生命周期是整个类,当整个程序结束后,类的生命期结束,全局变量也随之结束生命周期,它存在于
堆内存中
回复 使用道具 举报
而且,栈内存中的变量没有默认初始化值,所以必须进行手动初始化才能使用,
而堆内存中的成员变量都有默认初始化值,不用对其进行初始化操作就可以使用

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黄凯 黑马帝 2012-2-22 21:59:23
7#
局部变量和全局变量的区别主要是变量的作用域不同。
在一个类中定义了一个变量,这个类中的方法都可以访问这个变量,我们称这个变量为全局变量,它的作用域为整个类。
在一个类的方法或者内部代码块中定义了一个变量,这个变量只能作用在这个方法或者内部代码块;这个类中的其他方法
或者内部代码块是无法访问这个变量的,我们就称之为局部变量。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
局部变量它是 指在函数内部定义的变量 作用域为定义局部变量的函数 也就是说他只能在定义他的函数中使用,值得注意的是 只有在程序执行到定义他的模块时才能生成,一旦执行退出该模块则起变量消失。全局变量在程序执行的过程中一直有效。
Test()
{
int x=1;
}在这里x就是局部变量

int x=1
Test()
{
x=x+1;
}在这里上面定义的x就是全局变量



评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
自己玩 黑马帝 2012-2-22 22:22:01
9#
成员变量 指的是直接定义在类中的变量;成员变量时定义在类中成员中的变量
比如
class demo
{
   int a,b;//这个就是成员变量  a,b的作用域是整个demo类
  public void method()
   {
     int c;//局部变量  c的作用域是method方法中
   }

}
成员变量的作用范围是整个类中,也就是在整个类中都可以使用
局部变量的作用域就只是在所在的成员中,一般就是定义该变量的方法

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
沈样 黑马帝 2012-2-22 22:25:52
10#
java中局部变量和全局变量的区别? 我认为是范围不一样局部变量出了方法体就没有了,全局变量整个类中有效
回复 使用道具 举报
王康 黑马帝 2012-2-23 11:06:19
11#
package com.me;

/**
* 局部变量和全局变量的测试类
* @author 黑马_王康
*
*/
public class localAndWhole {   
    static int a = 66;//全局变量      
    static void test2() {   
       boolean flag = false;// flag是局部变量,他的有效范围市整个方法体   
        if (!flag) {   
            int a = 11;// 局部变量a,是必须进行初始化的且只在if块中有效   
           System.out.println("a1=" + a);   
        }   
       // a = 10;// 注意,这一行是会报编译错误:未声明变量a   
    }   
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
        System.out.println("a2=" + a);   
        int a = 20;//局部变量a   
        test2();   
        System.out.println("a3=" + a);   
    }
   
}  
结果为:
a2=66
a1=11
a3=20
注意:
1,对于局部变量要先赋值后使用
2,局部变量局部有效,在定义这个变量的代码块也就是在“{}”中有效
3,在重合的有效范围内,不允许两个局部变量发生命名冲突。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
1.作用域不同,成员变量在类中,局部变量在方法中。      
2.生命周期不同,成员变量在类对象创建到释放的过程中一直存在,而局部变量在方法被调用时创建,方法执行结束后被释放。
3.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可 以定义成final型
4.成员变量存储在堆,局部变量存储在栈
        栈内存中的变量没有默认初始化值,所以必须进行手动初始化才能使用,
        堆内存中的成员变量都有默认初始化值,不用对其进行初始化操作就可以使用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马