精华内容
下载资源
问答
  • 1.没有大神和我说一说,到底什么是参数,参数和变量区别什么??
  • 变量定义部分所定义的变量被称为类的成员变量,在方法体中定义的变量和方法的参数都被称为局部变量。 成员变量:作为类的成员而存在,直接存在于类中。 局部变量:作为方法或语句块的成员而存在,存在于方法的参数...

    定义

    变量定义部分所定义的变量被称为类的成员变量,在方法体中定义的变量和方法的参数都被称为局部变量。

    成员变量:作为类的成员而存在,直接存在于类中。

    局部变量:作为方法或语句块的成员而存在,存在于方法的参数列表和方法定义中。

    ----------------------------------------------

    区别

    1.成员变量可以被public,protect,private,static等修饰符修饰,而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型

    2.成员变量存储在堆,局部变量存储在栈

    3.存在时间不同

    4.成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值。

    5.当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。

    6.成员变量在应用程序的存活期内一直保持模块级变量和成员变量的值。

    -------------------------------------------

    堆栈解释

    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。

    堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。

    ----------------------------------------------

    so

    局部变量在使用前必须被程序员主动的初始化,和此形成对比,系统中的成员变量则会被系统提供一个默认的初始值。所以在语法上,类的成员变量能够定义后直接使用,而局部变量在定义后先要赋初值,然后才能使用。

    所有类的成员变量可以通过this来引用。

    --------------------------------------------

    实例变量和静态变量的区别

    静态变量使用static关键字修饰。

    静态变量是属于静态存储方式,实例变量(局部变量)是属于动态存储方式

    一个变量可由static进行再说明,并改变其原有的存储方式。如下

    -----------------------------------------

    静态全局变量(静态外部变量)(静态成员变量)

    外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,

    静态局部变量(静态自动变量)(静态成员变量)(我艹名字真多)

    属于动态存储方式。 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。

    ---------------------------------------

    1.动态存储方式与静态存储方式的定义

    1)所谓静态存储方式是指在程序编译期间分配固定的存储空间的方式;

    2)所谓动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间的方式。
    2.内存中用户存储空间的分配情况(分为三部分)

    1)程序区:存放程序语句

    2)静态存储区:存放全局变量,在程序开始执行时给全局变量分配存储区,程序执行完毕就释放。

    3)动态存储区:

         存放以下数据:

    ①函数形式参数。在调用函数时给形参分配存储空间;

    ②自动变量(未加static声明的局部变量);

    ③函数调用时的现场保护和返回地址等。

    -----------------------------------------

    静态局部变量的特点(静态自动变量)

    静态局部变量属于静态存储方式,它具有以下特点:

    (1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。

    (2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。

    (3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。

    (4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点,可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜  

    ---------------------------------------

    静态全局变量的特点(静态成员变量)

    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。

    全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。

    这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

    而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。

    由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

    ------------------------------------------

    so

    把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。

    把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。

    -----------------------------------------

    操作

    但可将局部变量定义成静态的,从而保留变量的值。即使方法结束调用也能保存,只是不能使用,直到下次调用此方法时就可以直接使用了。

    为了使过程中所有的局部变量为静态变量,可在过程头的起始处加上 Static 关键字。

     

     

     

     

     

     

     

     

     

    转载于:https://www.cnblogs.com/pxffly/p/7461997.html

    展开全文
  • 1、 char *p="%s"; printf(p); 2、 printf("%s"); 以上两段代码,第一段运行时能通过(虽然显示的怪怪的),第二段运行时出错(根本无显示)。为什么
  • 问题补充:补充下,源代码是:public void getGroups(DataSet dataSet) throws Exception{Map parameters = this.getParameters(dataSet);Object isPublic = parameters.get("publicAddress");List lt = null;...

    问题补充:补充下,源代码是:

    public void getGroups(DataSet dataSet) throws Exception

    {

    Map parameters = this.getParameters(dataSet);

    Object isPublic = parameters.get("publicAddress");

    List lt = null;

    if (isPublic == null || Boolean.valueOf(isPublic.toString()) == false)

    {

    lt = addressBookGroupService.findAllAddressBookGroup(getLogonUser());

    }

    else

    {

    // 公共组

    lt = addressBookGroupService.findAllAddressBookGroup(null);

    }

    AddressBookGroup o = new AddressBookGroup();

    o.setId(0);

    o.setName("未分组");

    lt.add(0, o);

    o = new AddressBookGroup();

    o.setId(Long.parseLong("-1"));

    o.setName("全部");

    lt.add(0, o);

    dataSet.addRecords(lt);

    }

    public class AddressBookGroup implements Entity {

    private static final long serialVersionUID = 1L;

    protected long id;

    protected boolean active = true;

    protected String name;

    protected User user;

    public long getId()

    {

    return id;

    }

    public void setId(long id)

    {

    this.id = id;

    }

    }

    用的是jdk1.5.0_04

    展开全文
  • 刚开始接触SSIS,mark一下 开始以为变量和参数是一回事,以为是相同的,但是为什么有分成了两个,微软没有那么傻,肯定是我没搞明白 ...SSIS中的参数和变量同理与function中的参数和变量 strParamete...

    刚开始接触SSIS,mark一下

    开始以为变量和参数是一回事,以为是相同的,但是为什么有分成了两个,微软没有那么傻,肯定是我没搞明白


    随便写的一个函数,

    function test(string strParameter)
    {
    var v1="";
    var strsql="";

    //其他一些业务逻辑
    }

    SSIS中的参数和变量同理与function中的参数和变量
    strParameter指的是参数,函数体中的v1 和strsql都是变量,所以在调用函数的时候,需要向函数传递参数。
    而变量,其实就是函数体中为了实现功能而定义的一些变量。直接一点说,所用的范围不用,调用的方式不同。

    个人理解,仅供参考。

    展开全文
  • 小程序中页面传值,一开始使用的是下面这段代码: ```javascript //获取全局对象 var app=getApp(); ...//设置全局的请求访问传递的参数 ...弄不清楚这两种设置全局变量有什么区别,实际操作中都可以正常传值
  • 一个简单的对象的set方法 [code="java"] public void setId(long id){ this.id=id; } [/code] 当执行: [code="java"] int i=-1; setId(i); [/code] ...这是为什么?int转换为long的缘故吗?
  • 在内部方法中,“当前”实例几乎总是绑定到名称self,这就是为什么你认为这些作为“自变量”。通常在面向对象设计中,附加到类的代码应该具有对该类的实例的属性的控制,因此几乎所有的实例属性赋值都是在方法中完成...

    当你写一个类块,你创建类的属性(或类变量)。在类块中分配的所有名称,包括用def定义的方法都成为类属性。

    创建一个类实例后,任何具有实例引用的对象都可以在其上创建实例属性。在内部方法中,“当前”实例几乎总是绑定到名称self,这就是为什么你认为这些作为“自变量”。通常在面向对象设计中,附加到类的代码应该具有对该类的实例的属性的控制,因此几乎所有的实例属性赋值都是在方法中完成的,使用对在self参数中接收的实例的引用方法。

    类属性通常与在Java,C#或C语言中发现的静态变量(或方法)进行比较。然而,如果你想要更深入的理解,我会避免将类属性视为静态变量“相同”。虽然它们经常用于相同的目的,但基本概念是完全不同的。更多关于这一点在“高级”部分下面的行。

    一个例子!

    class SomeClass:

    def __init__(self):

    self.foo = 'I am an instance attribute called foo'

    self.foo_list = []

    bar = 'I am a class attribute called bar'

    bar_list = []

    执行此块之后,有一个SomeClass类,有3个类属性:__init__,bar和bar_list。

    然后我们将创建一个实例:

    instance = SomeClass()

    当这种情况发生时,SomeClass的__init__方法被执行,在其self参数中接收新的实例。此方法创建两个实例属性:foo和foo_list。然后这个实例被分配到实例变量中,因此它被绑定到一个带有两个实例属性的东西:foo和foo_list。

    但:

    print instance.bar

    给出:

    I am a class attribute called bar

    这怎么发生的?当我们尝试通过点语法检索属性,并且该属性不存在时,Python通过一系列步骤尝试并满足您的请求。接下来要做的是查看实例类的类属性。在这种情况下,它在SomeClass中找到了一个属性栏,因此它返回了。

    这也是方法调用如何工作的方式。例如,当调用mylist.append(5)时,mylist没有名为append的属性。但是mylist的类,它绑定到一个方法对象。该方法对象由mylist.append位返回,然后(5)位调用具有参数5的方法。

    这是有用的方法是SomeClass的所有实例将有权访问相同的bar属性。我们可以创建一百万个实例,但我们只需要在内存中存储一​​个字符串,因为他们都可以找到它。

    但你必须有点小心。看看下面的操作:

    sc1 = SomeClass()

    sc1.foo_list.append(1)

    sc1.bar_list.append(2)

    sc2 = SomeClass()

    sc2.foo_list.append(10)

    sc2.bar_list.append(20)

    print sc1.foo_list

    print sc1.bar_list

    print sc2.foo_list

    print sc2.bar_list

    你认为这打印什么?

    [1]

    [2, 20]

    [10]

    [2, 20]

    这是因为每个实例都有自己的foo_list副本,因此它们单独追加。但所有实例共享同一个bar_list的访问权限。所以当我们做了sc1.bar_list.append(2)它影响了sc2,即使sc2还不存在!同样,sc2.bar_list.append(20)影响通过sc1检索的bar_list。这通常不是你想要的。

    高级研究如下。 🙂

    为了真正编写Python,来自传统的静态类型的OO语言,如Java和C#,你必须学习重新思考类。

    在Java中,类本身不是一个真正的东西。当你写一个类时,你更多的声明一堆东西,该类的所有实例具有共同点。在运行时,只有实例(和静态方法/变量,但是那些只是全局变量和函数在一个类的命名空间中,与OO无关)。类是在源代码中写下在运行时实例将是什么样的方式;他们只“存在”在你的源代码中,而不是在运行的程序。

    在Python中,类是没有什么特别的。它是一个对象就像任何其他。所以“类属性”事实上与“实例属性”完全相同;在现实中只有“属性”。形成区别的唯一原因是我们倾向于使用与不是类的对象不同的类。底层的机械是一样的。这就是为什么我说,将类属性看作来自其他语言的静态变量是错误的。

    但是真正使Python类与Java风格的类不同的是,就像任何其他对象一样,每个类都是一个类的实例!

    在Python中,大多数类都是类型为内建类的实例。它是这个类控制类的常见行为,并使所有的OO东西的方式。默认的OO方式拥有具有自己的属性的类的实例,并且具有由它们的类定义的通用方法/属性,只是Python中的协议。如果你愿意,你可以改变它的大部分。如果你听说过使用元类,所有这一切都是定义一个类,它是一个不同类的实例。

    关于类的唯一真正的“特殊”的东西(除了所有的内置机制,使他们按照他们默认的方式工作),是类块语法,使您更容易创建类型的实例。这个:

    class Foo(BaseFoo):

    def __init__(self, foo):

    self.foo = foo

    z = 28

    大致相当于以下内容:

    def __init__(self, foo):

    self.foo = foo

    classdict = {'__init__': __init__, 'z': 28 }

    Foo = type('Foo', (BaseFoo,) classdict)

    它将安排classdict的所有内容成为创建的对象的属性。

    因此,看起来你可以通过Class.attribute访问类属性,就像i = Class()一样容易。 i属性。 i和Class都是对象,对象具有属性。这也使得很容易理解如何在类创建后修改它;只是分配它的属性与你将与任何其他对象相同的方式!

    事实上,实例与用于创建它们的类没有特殊的关系。 Python知道哪个类搜索在实例中找不到的属性的方式是通过隐藏的__class__属性。你可以读它来找出这是什么类是一个实例,就像任何其他属性:c = some_instance .__ class__。现在你有一个变量c绑定到一个类,即使它可能不具有相同的名称作为类。你可以使用它来访问类的属性,甚至调用它来创建更多的实例(即使你不知道它的类是什么!)。

    你甚至可以分配到i .__ class__来改变它是一个实例的类。如果你这样做,什么都不会立即发生。这不是毁灭性的。这意味着当你查找实例中不存在的属性时,Python会去查看__class__的新内容。由于这包括大多数方法,并且方法通常期望他们正在操作的实例处于某些状态,这通常导致错误,如果你随机做它,它是非常混乱,但它可以做到。如果你很小心,你存储在__class__的东西甚至不必是一个类对象;所有Python需要做的是在某些情况下查找属性,所以你需要的是一个具有正确类型属性的对象(一些注意事项,即Python确实对某些特定类的类或实例感兴趣)。

    这可能已经足够了。希望(如果你甚至读了这么远)我没有混淆你太多。 Python是整洁的,当你学习它是如何工作的。 🙂

    展开全文
  • 如题请问字符串的变量传到函数里参数表中用 char s1[]char *s1有什么区别
  • 答:有区别。 全局变量保存在内存的全局存储区,占用静态的存储单元;局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。引申: C语言经过编译之后将内存分为以下五个区域 1.栈:由编译器...
  • 那么什么这两个到底有什么区别和联系呢?我在网上搜了一下,发现很多说法,虽然大同小异,但是似乎只有下面这一段来自微软网站的比较高度抽象,而且意义涵盖深远。我摘抄过来,看官读一读,是否理解,虽然是针对VB而...
  • 1.在类中位置不同 成员变量在方法外; 局部变量在方法或者代码块中,或者在方法声明上(方法参数中);...那我们可能要疑问了,为什么成员变量会存在堆中或者说局部变量会存在栈中。 这就要...
  • 引用变量和普通变量区别,通过下面这个案例来告诉大家区别什么。那我就不多说废话,进入正题。 一,当前需求是如图的url ,我只想要根据参数名称获取其值: 二,此时肯定人会说 “ 通过foreach 遍历转换成...
  • 全局变量,局部变量等定义函数写函数帮助文档时:1、写出函数的作用,2、函数几个参数,每个参数什么类型的,3、函数执行后返回什么样的结果,变量的能见度:变量在程序中的可作用范围。变量可以分为局部变量和...
  • 本节书摘来自异步社区《LoadRunner 12七天速成宝典》一书中的第2章,第2.5节参数和变量,作者陈霁,更多章节内容可以访问云栖社区...恋恋:变量和参数有什么区别来着? 云云:前面不是说过么,参数是特殊的变量,参...
  • 其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义调用方法都必须显式使用 ref 关键字。例如: class RefExample { static void Method(ref ...
  • 可选函数参数 函数拥有可选参数的用法是在参数后加一个?,可选参数可以void或省略,但不能是null。如: // @flow function acceptsOptionalString(value?: string) { // ... } acceptsOptionalString("bar"); // ...
  • GETPOST有什么区别

    2017-09-27 20:12:26
    分割URL传输数据,参数之间以&相连,参数值通常以=号赋值。而POST方法是把提交的数据放在HTTP包的Body中。 2、GET提交的数据大小限制,最多只能1024字节(因为浏览器对URL的长度限制),而POST方法提交的...
  • html5的本地存储是存储在客户端中,本地存储包括sessionStoragelocalStorage。 区别一:生命周期 sessionStorage仅在当前会话下生效,当你关闭页面...1、第一个参数是保存的变量名,第二个是变量的值 sessionStor
  • undefined,null undeclared 有什么区别? a、null表示"没有对象",即该处不应该有值,转为数值时为0。典型用法是:作为函数的参数,表示该函数的参数不是对象。作 为对象原型链的终点。 b、undefined表示"缺少值...
  • 定义变量:C语言里一个函数里需要用到的变量,需要集中在函数开头出定义(的编译器可能优化,允许在函数体别的地方定义变量),否则编译器会报错。在C++中变量可以在任意地方定义(尽量减少变量的作用域 -----&...
  • 那么什么这两个到底有什么区别和联系呢?我在网上搜了一下,发现很多说法,虽然大同小异,但是似乎只有下面这一段来自微软网站的比较高度抽象,而且意义涵盖深远。我摘抄过来,看官读一读,是否理解,虽然是针对VB而...
  • C#中ref,outparams有什么区别 out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义调用方法都必须显式使用 out ...
  • 成员变量局部变量有什么不一样 新建包demo03 默认值的问题:这个name没有被赋值输出的话就是null 方法内的局部变量age是int类型的。但是没有赋值输出就会报错。提示:变量age还没有被初始化 ...
  • a、每个应用程序运行时,都属于自己的一段内存空间,用于存放临时变量参数传递、函数调用时的PC值的保存。这叫stack。b、所有的应用可以从一个系统共用的空间中申请供自己使用的内存,这个共用的空间叫heap。c、...
  • heapstack有什么区别

    2017-08-12 09:03:35
    简单的可以理解为:  heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。...1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据
  • 展开全部java中堆(heap)堆栈(stack)有什么区别 stack heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般636f707962616964757a686964616f31333339666636所有创建的对象都放在这里...
  • 典型用法是:变量被声明了,但没 赋值时,就等于undefined。调用函数时,应该提供的参数没有提供,该参数等于undefined。对象没有赋值的属性,该属性的 值为undefined。函数没有返回值时,默认返回undefined。 c、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,114
精华内容 445
关键字:

参数和变量有什么区别