精华内容
下载资源
问答
  • 局部变量的使用范围
    千次阅读
    2021-01-23 10:33:51

    怎么做:当局部变量与全局变量同名时在局部变量的作用域内,可以通过关键字this来引用成员变量。

    特别注意:关键字this代表的是一个对象,只能用在非静态中,不能用在静态中,因为在静态中this可能是类名也可能是对象,因此在编译时会报错,如果需要,可以通过对象去访问成员变量

    代码说明:

    public class Test {
    	int x=1;
    	static void show() {
    		int x=2;
    		System.out.println("局部变量:"+x);
    		//System.out.println(this.x);//程序在编译时报错,this只能是对象,而在这里this可能是对象也可能是类名,具有不确定性
    		System.out.println("全局变量:"+new Test().x);//可以通过创造对象的方式去访问全局变量
    	}
    	
    	void view() {
    		int x=2;
    		System.out.println("局部变量:"+x);
    		System.out.println("全局变量:"+this.x);//编译不会出错,此时方法为非静态
    	}
    }


     

     

     

    更多相关内容
  • 以前经常使用和了解static作用在全局变量前,以至于甚至把static当做全局变量的代名词,但是其实static还可以作用于局部变量前 静态局部变量的意义: 1.分配空间在全局数据栈上 2.作用域只局限于当前的函数范围内...
  • 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。 对于全局变量和局部变量,即使变量名相同,但是因为定义在不同的作用...
  • 主要介绍了简单了解java局部变量与成员变量的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 局部变量和全局变量,以及作用范围

    万次阅读 多人点赞 2018-11-11 13:56:55
    变量按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。 变量按作用域分:  全局变量:在整个工程文件内都有效;“在函数外定义的变量”,即从定义变量...

           在写工程文件的时候,犯了一个基础性的错误,基础不牢,地动山摇。所以通过查阅资料回顾了一些相关知识,并记录下来。防止以后再发生这种惨案。

    变量按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区

    变量按作用域分:

    1.     全局变量:整个工程文件内都有效;“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值, 就能影响到其他函数中全局变量的值。
    2.     静态全局变量:只在定义它的文件内有效,效果和全局变量一样,不过就在本文件内部;
    3.     静态局部变量:只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;静态局部变量的生存期虽然为整个工程,但是其作用仍与局部变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。     
    4.   局部变量:在定义它的函数内有效,但是函数返回后失效。“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效。

    注意:全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。

    静态局部变量全局变量最明显的区别就在于:全局变量在其定义后所有函数都能用,但是静态局部变量只能在一个函数里面用。

    形参变量 :  只在被调用期间才分配内存单元,调用结束立即释放。

          在做工程的时候,我将全局变量传入函数的形参中,没注意将形参和全局变量同名了,导致全局的变量的值一直没有改变,错误的认为,编译器问题。。。。。。-_-|| 哈哈哈,论菜鸟是怎样炼成的。写个相似的代码,记录一下这个错误。

    #include "stdio.h"
    int Max = 1;
    void add(int Max)
    {
        Max = 2;
    }
    
    int main()
    {
    	add(Max);
    	printf("Max = %d",Max);
    	getchar();
    
    	return 0;
    }

    进入函数后,形参的优先级要高于全局变量了,且函数执行完后,形参释放。这时候对代码进行如下的修改,才能得到想要的效果。地址传参,要么有返回值赋值的方式。

    #include "stdio.h"
    int Max = 1;
    void add(int *Max)
    {
        *Max = 2;
    }
    
    int main()
    {
    	add(&Max);
    	printf("Max = %d",Max);
    	getchar();
    
    	return 0;
    }

    记录一下这个不好的习惯,变量命名要规矩,不能出现歧义性。

    展开全文
  • 局部变量 在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。同样,在复合语句中定义的变量只在本复合语句范围内有效。这称为...
  • 在mysql变量中分为局部变量@与全局变量@@他们都不分大小并,但两种变量用法稍有区别了,下面我来介绍产的用法.共同点:不区分大小写,都是变量.不同点:全局变量是系统中只读的,可以在配置文件中进行修改.mysql变量的术语...

    在mysql变量中分为局部变量@与全局变量@@他们都不分大小并,但两种变量用法稍有区别了,下面我来介绍产的用法.

    共同点:不区分大小写,都是变量.

    不同点:全局变量是系统中只读的,可以在配置文件中进行修改.

    mysql变量的术语分类:

    1.用户变量:以"@"开始,形式为"@变量名"

    用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效.

    2.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名,对所有客户端生效,只有具有super权限才可以设置全局变量.

    3.会话变量:只对连接的客户端有效.

    4.局部变量:作用范围在begin到end语句块之间,在该语句块里设置的变量.

    declare语句专门用于定义局部变量,set语句是设置不同类型的变量,包括会话变量和全局变量.

    通俗理解术语之间的区别:

    用户定义的变量就叫用户变量。这样理解的话,会话变量和全局变量都可以是用户定义的变量。只是他们是对当前客户端生效还是对所有客户端生效的区别了。所以,用户变量包括了会话变量和全局变量

    局部变量与用户变量的区分在于两点:1.用户变量是以"@"开头的。局部变量没有这个符号。2.定义变量不同。用户变量使用set语句,局部变量使用declare语句定义 3.作用范围。局部变量只在begin-end语句块之间有效。在begin-end语句块运行完之后,局部变量就消失了。

    所以,最后它们之间的层次关系是:变量包括局部变量和用户变量。用户变量包括会话变量和全局变量.

    使用备忘,set @var 若没有指定GLOBAL 或SESSION,那么默认将会定义用户变量.

    两种方式定义用户变量:

    1."=",如 set @a =3,@a:=5

    2.":="。select常常这样使用

    总结:使用select 和set设置变量的区别,set可以使用以上两种形式设置变量,而select只能使用":="的形式设置变量.

    实践积累:用户变量在mysql客户端退出后,会自动消失,之后我打开客户端,使用"select @a;" 显示变了的值为null,说明,未定义的变量初始化是null.

    实际中的问题

    设置常量对group_concat()的配置影响:SET @@GROUP_CONCAT_MAX_LEN=4

    手册中提到设置的语法是这样的:SET [SESSION | GLOBAL] group_concat_max_len = val;

    可以show variables;进行查看:mysql> show variables;

    看看全局变量的值:

    mysql>select@@version;

    +-----------+

    | @@version |

    +-----------+

    | 5.5.14    |

    +-----------+

    1 row inset(0.00 sec)

    局部变量赋值

    方法一,代码如下:

    mysql> set @name="zhouyinghou";

    Query OK, 0 rows affected (0.00 sec)

    查看局部变量的值

    mysql>select@name;

    +-------------+

    | @name|

    +-------------+

    | zhouyinghou |

    +-------------+

    1 row inset(0.00 sec)

    方法二:还可以用select赋值并且将其输出,代码如下:

    mysql>select@sex:="male";

    +--------------+

    | @sex:="male"|

    +--------------+

    | male         |

    +--------------+

    1 row inset(0.00 sec)

    方法三:select还可以从一张表中提取,代码如下:

    mysql>droptablezyh;

    Query OK, 0 rowsaffected (0.09 sec)

    mysql> createtablezyh(idint,namechar(20));

    Query OK, 0 rowsaffected (0.19 sec)

    mysql> insertintozyhvalues(1,'zhouyinghou');

    Query OK, 1 row affected (0.09 sec)

    mysql> select@name:=namefromzyh;

    +-------------+  --phpfensi.com

    | @name:=name|

    +-------------+

    | zhouyinghou |

    +-------------+

    1 row inset(0.00 sec)

    方法四:这个语句还可以这样写:

    mysql> select name from zyh into @name;

    Query OK,1 row affected (0.00 sec)

    1 row affected说明了数据已经别更新了,代码如下:

    mysql>select@name

    -> ;

    +-------------+

    | @name|

    +-------------+

    | zhouyinghou |

    +-------------+

    1 row inset(0.00 sec)

    还得注意:@name:=name 和  into @name,into @name只能接受一行值,代码如下:

    mysql>selectnamefromzyhinto@name;

    ERROR 1172 (42000): Result consisted ofmore than one row

    mysql> select@name:=namefromzyh;

    +-------------+

    | @name:=name|

    +-------------+

    | zhouyinghou |

    | zhouhuan    |

    +-------------+

    2 rowsinset(0.00 sec)

    mysql> select@name

    -> ;

    +----------+

    | @name|

    +----------+

    | zhouhuan |

    +----------+

    1 row inset(0.00 sec)

    举例:查询zhouhuan相邻的两个人的名字,如果按照oracle的写法中可以,代码如下:

    mysql> select name from zyh where id in(select id-1,id+1 from zyh where name='zhouhuan');

    ERROR 1241 (21000): Operand should contain 1 column(s)

    mysql中可以用变量赋值进行查询:

    mysql>selectidfromzyhwherename='zhouhuan'into@id;

    Query OK, 1 row affected (0.00 sec)

    mysql> select@id;

    +------+

    | @id  |

    +------+

    |    2 |

    +------+

    1 row inset(0.00 sec)

    mysql> selectnamefromzyhwhereid=@id-1orid=@id+1;

    +-------------+

    | name|

    +-------------+

    | zhouyinghou |

    | kaka        |

    +-------------+

    2 rowsinset(0.00 sec)

    分享到:

    13cf7215b4d5acd35c0b1222c95a25f9.gif

    展开全文
  • C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。1.1局部变量局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内,离开该函数后再使用这种变量是非法的。【例1.1
  • 主要介绍了Java成员变量与局部变量的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • 本文主要讲述全局变量、局部变量和导入模块变量的方法。 参考:《Python核心编程 (第二版)》 一. 局部变量 声明适用的程序的范围被称为了声明的作用域。在一个过程中,如果名字在过程的声明之内,它的出现即为过程的...
  • Java成员变量和局部变量

    千次阅读 2022-04-20 11:09:05
    成员变量是指在一个类中定义的变量,比如 public class Dog { String breed; String name;... 在一个方法中,不允许有同名的局部变量,而在不同的方法中,允许有同名局部变量。 静态成员变量归

    成员变量是指在一个类中定义的变量,比如

    public class Dog {
        String breed;
        String name;
        String color;
        int age;
    }

    这些都是成员变量,用于描述类本身所具有的一些属性

    局部变量是指在方法中定义的变量,例如:

    public void eat(){
        int a=0;
    }

    用于辅助实现方法中的相关操作。 在一个方法中,不允许有同名的局部变量,而在不同的方法中,允许有同名局部变量。

    静态成员变量归类所有,非静态成员变量归每个类的实例所有,在每个实例中均有副本。

    局部变量和成员变量的区别:

    1)所在位置:

    局部变量:在每个方法内部使用,出了方法不可用

    成员变量:属于每个类,在方法的外部,描述类的属性

    2)作用范围:

    局部变量:作用在方法内部

    成员变量:作用于每个类

    3)默认值:

    局部变量:声明之后系统不会赋予默认值,必须自己手动赋值,否则会报错

    成员变量:系统会根据该变量的类型赋予其相应的特征值,不手动赋值,也不会报错

    4)所在内存位置不一样:
    成员变量是在对象创建以后存在于堆中,对象回收时,成员变量消失
    局部变量是在方法被调用时存在于栈中,方法调执行结束,从栈中清除
    5)生命周期不同:
    成员变量:随对象的创建而创建,对象回收时,成员变量消失
    局部变量:随着方法的调用被创建,方法执行结束后,从栈中清除

    展开全文
  • 全局变量在 Python 中,在函数之外或在全局范围内声明的变量被称为全局变量。 这意味着,全局变量可以在函数内部或外部访问。我们来看一个关于如何在 Python 中创建一个全局变量的示例。示例 1:创建全局变量x=...
  • 一全局变量和局部变量 (1)全局变量和局部变量的含义: 在函数体内部定义的变量叫做局部变量,在函数体外部定义的变量叫做全局变量。局部变脸只能在定义的那个函数体的内部进行使用,而全局变量在所有函数内部都...
  • F.52: Prefer capturing by reference in lambdas that ...F.52 在lambda表达式中使用引用形式捕捉局部变量,包含向算法传递变量的情况。 译者注:如果你不清楚捕捉(capture)是什么,请参考 https://mp.weixin...
  • 局部变量时就是只有一部分可见的变量,例如定义在方法中的变量,只有这百个方法才能使用,同一个类的其他方法或者其他的类都不可见度。多态是面向对象编程的巨大优势,多态其实就是多种形态或者多种状态的意思,比如...
  • 本文主要是对c语言全局变量和局部变量进行了问题汇总。
  • 局部变量、全局变量、静态变量

    千次阅读 2019-09-16 09:52:33
    换言之,在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外时不能使用这些变量的,它们称为局部变量。 全局变量 定义:在函数外定义的变量是外部变量...
  • Python局部变量与全局变量

    千次阅读 2021-01-28 21:23:19
    Python中的局部全局与全局变量主要体现在函数内的变量与函数外的变量。局部与全局就是变量的作用域(作用范围)。当你在函数内部定义变量的时候,它们与函数外...使用局部变量:#!/usr/bin/envpython#Filename:func_lo...
  • 局部变量存在于声明该变量的块语句或方法结束的右花括号({})之前的作用域内。本文对C#中的一些变量声明和范围关系借几个demo展示出来。 情况一:变量包含产生歧义 ####### 根据变量的作用域遵循的原则(局部变量存在...
  • 1、函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量,例如:num=100deffunc():num=123print(num)func()输出:123说明函数中...
  • 局部变量是在函数内部定义的变量,只能在函数内部使用。 全局变量是在函数外部定义的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量。 注意:在其他的开发语言中,大多不推荐使用全年变量,...
  • Lua全局变量与局部变量

    千次阅读 2019-04-22 16:55:52
    在lua中,局部变量(变量名前加 ...a=111 --全局变量(整个lua文件中都可以使用,向下的范围) do local a=0--局部变量在语句块的结束 a=1 --局部变量优先 print(a)--局部变量 print(b) --打印变量nil b=...
  • c语言中的局部变量和全局变量

    千次阅读 2021-08-05 22:52:14
    我们按照变量的作用域范围可以把变量划分为局部变量和全局变量; 局部变量 局部变量出现在三种地方: (1)在函数的开头定义的变量 (2) 在函数内的复合语句内定义的变量 (3)形式参数 在一个函数内部定义的变量只在...
  • 简单解读局部变量和全局变量

    千次阅读 2021-05-20 17:41:53
    今天课课家笔者为大家详细介绍局部变量和全局变量的概念和作用。在函数的参数和返回值中我们认识到形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。这说明形参变量只能在函数内部使用,离开该函数就...
  • 局部变量与全局变量

    千次阅读 2021-01-08 11:31:01
    局部变量只允许在其定义的函数或复合语句中使用,离开所在的函数或复合语句后该局部变量将不能使用。 main()函数中定义的变量不能在其余的函数中使用。 复合语句中定义的变量只能在该复合语句中使用 for()循环...
  • 1、局部变量能否和全局变量重名?  答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器...
  • C语言:局部变量与全局变量

    千次阅读 2021-01-14 16:42:58
    1.形参与实参C语言函数的参数会出现在两个地方,分别是函数...1.2实参(实际参数)函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。1.3形参和实参的区别和联系1...
  • 局部变量和成员变量

    千次阅读 2020-12-16 22:39:21
    局部变量:只有在方法当中才可以使用,出了方法就不能再用了 成员变量:整个类全都可以通用 默认值不一样【重点】 局部变量:没有默认值,如果要想使用,必须手动进行赋值 成员变量:如果没有赋值,会有默认值,规则...
  • Axure 学习—— 局部变量/全局变量

    千次阅读 2021-07-15 10:37:53
    一、局部变量 1.什么是局部变量局部变量来源于编程语言,即在一个方法内定义的变量即为局部变量。 同理,在Axure中局部变量的作用为:调用其他元件的参数,并只能在当前取值页中取用。 2.使用原理 3.使用场景 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 280,175
精华内容 112,070
关键字:

局部变量的使用范围