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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

什么是局部变量,局部变量和全局变量的区别?今天看视频,毕老师就简单带了一下,不太了解!
还有s.o.p()  是什么?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 鼓励一下

查看全部评分

17 个回复

倒序浏览
本帖最后由 Angel♥儱唲 于 2013-7-21 23:01 编辑

class ForTest
{
        public static void main(String[] args)
        {
               
                int sum=0;
                for (int x=0;x<11 ;x++ )
                {
                        sum+=x;
                }
                System.out.println(sum);

               
        }
}

这段小代码for循环里的变量X就是局部变量,当for循环开始的时候他的在栈内存里开辟空间for循环结束就被释放掉,他的作用域就是在for循环里
也就是说局部变量定义在函数里面。

全局变量嘛我认为就是成员变量,他们随着对象的创建而存在,随着对象消失而消失。他作用于整个类中。
他们的区别就是作用域的范围不同,生命周期不一样。
这个全局变量是我自己理解的,因为我就知道有局部变量和成员变量。
S.O.P()就是System.out.println();的缩写,毕老师有时候为了方便就简写了一下
回复 使用道具 举报
全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。
  1. int a,b; /*外部变量,全局变量*/ 
  2. void f1() /*函数f1*/ { 
  3. …… }
复制代码
局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。   例如:
  1. int f1(int a) /*函数f1*/ { 
  2. int b,c;  …… 
  3. }a,b,c作用域
复制代码
回复 使用道具 举报
本帖最后由 Angel♥儱唲 于 2013-7-21 23:25 编辑

{:soso_e127:}找到一篇帖子里面有出现全局变量
1、栈区(stack)―   由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、堆区(heap) ―   一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

3、全局区(静态区)(static)―,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放

4、文字常量区  ―常量字符串就是放在这里的。 程序结束后由系统释放

5、程序代码区―存放函数体的二进制代码。
帖子说这是thinking  in java 这本书上的
现在同样跪求解释,什么是全局变量,怎么样存在的啊
回复 使用道具 举报
本帖最后由 赵太云 于 2013-7-21 23:56 编辑

    如果说  public final static int A = 10;  这个是全局常量的话,
    那么  全局变量不是: public static int a; 这种类型的?
     
回复 使用道具 举报
赵太云 发表于 2013-7-21 23:15
如果说  public final static in A = 10;  这个是全局常量的话,
    那么  全局变量不是: public stat ...

太云,上面那段话是thinking in java上的原话是嘛,我找到的帖子就是你回答说的是这本书上的
回复 使用道具 举报
这两种变量的划分是根据生命周期来划分的


变量分为局部变量和全局变量(成员变量)
局部变量只能

局部变量:1.形式参数(定义在方法参数列表中的参数) 2.普通的局部变量(定义在方法体中或者代码块当中) 它们的生存周期在方法或者代码块等很多括号当中(除了类的括号) 当这个括号的代码执行完毕这个变量就消失了 被final修饰的局部变量除外
该变量只能被所属括号当中的其他成员访问.

全局变量 (成员变量):定义在类当中的变量(定义在类的括号中)   该变量有静态或者非静态的  静态的在非手动释放该变量所占内存的程序当中程序结束该变量就在内存中消失,非静态的伴随着对象的产生而产生 对象的消亡而释放 。
全局变量可以被类当中所有成员访问   !!!!!但是一定要注意 静态成员不能直接访问非静态成员
回复 使用道具 举报
Angel♥儱唲 发表于 2013-7-21 23:17
太云,上面那段话是thinking in java上的原话是嘛,我找到的帖子就是你回答说的是这本书上的 ...

原话,不是这样的。。。。。
回复 使用道具 举报
赵太云 发表于 2013-7-21 23:43
原话,不是这样的。。。。。

哦,那本书都说建议初学者先不要看,我还没看过,等过段时间我在看
回复 使用道具 举报
    在程序设计中,全局变量是在所有作用域都可访问的变量,与之对应的是局部变量(这个是百科里的)
    那么:
       static{
       }
    也要能访问,这个也是一个作用域,所以全局变量得是static的吧。。。。。。。。
回复 使用道具 举报
Angel♥儱唲 发表于 2013-7-21 23:46
哦,那本书都说建议初学者先不要看,我还没看过,等过段时间我在看

恩,我也是初学者。。。。。。。。。
回复 使用道具 举报
Angel♥儱唲 发表于 2013-7-21 23:46
哦,那本书都说建议初学者先不要看,我还没看过,等过段时间我在看

恩恩 java编程思想这本书不适合初学者看 除非你学完javase
回复 使用道具 举报
局部变量指在程序中,只在特定过程或函数中可以访问的变量,是相对与全局变量而言的
而局部变量和全局变量的区别在于作用域不同 ,全局的最大 ,一次声明之后,各方法中可以直接调用。
局部变量,在单个方法中,或是在If,for,while这些语句块中声明。在方法头部声明,作用域是整个 方 法,在单个语句块中声明,作用域是这个语句块。常见到,一个方法中,声明了同一个变量名,但它被包裹在不同的语句块中,所以不发生冲突。
回复 使用道具 举报
直白点就是,局部变量就是在一个方法里面声明了一个变量a,出了这个方法就不好使了,别的方法根本用不了这个变量a,
例如:有一支笔放在你衣服兜里(把方法想象成你衣服兜),别人用不了这支笔,因为他在你自己的兜里别人认为这支笔是你自己的东西。
全局变量:就是在类里面,方法外面声明一个变量,就是这个类的全局变量:
例如:一个班级(想象成一个类)里有一支(想象成变量),那么这个班级的里所有学生(想象成类里的所有方法),都可以用这支笔,这就是全局变量
回复 使用道具 举报
局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的

全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。

在操作系统中,全局变量存储在内存的静态存储区域,而局部变量存放在内存的栈区.

全局变量和局部变量的区别是作用域不同,全局变量从定义位置开始到程序结束,而局部变量只限定义的函数内可使用,全局变量在数据段,而局部变量在栈,局部 变量在函数结束时内存空间就被系统收回,所以要返回的数组或字符串不要用局部变量定义.extren和在main()函数外定义的变量都称为全局变量,操 作系统和编译器从定义变量为变量分配内存时,从变量的定义和存储区域来分别局部变量和全局变量.
回复 使用道具 举报
全局变量就是这个类的对象都可以访问的属性,它在整个类中都有效。
局部变量就是某个方法内部临时定义的变量。
区别:作用[/code]域,当方法调用结束后,据不变量自然销毁。而全局变量只有在这个类的对象销毁时才会伴随销毁,如果相很多对象共享一个类的某个属性就用全局变量。
  1. public class A{
  2.     public int a = 2; //全局的a
  3.     public void ad(int num){//局部de num
  4.         int s = 0; //局部
  5.     }
  6.     public static void main(String[] args){
  7.     }
  8. }
复制代码
回复 使用道具 举报
全局变量就是外部变量,它是在函数外面定义的变量, 它不只属于哪一个函数(方法),它属于这类,在这个类里它可以被所有函数调用
局部变量就是某个函数(方法)内部定义的变量,只能在这个函数里面被调用
还有s.o.p()  毕老师不是说了吗System.out.println()的缩写,伪代码,只是写一下不能运行的
回复 使用道具 举报
sop() 是封装System.out.println() 的静态函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马