局部变量

全局变量个局部变量的问题

余生长醉 提交于 2020-02-15 10:05:13
今天在改bug的时候出现了一个bug。定义一个全局变量T5CustVol t5CustVol 。问题如截图所示。可以在下一个函数用的时候加了一个T5CustVol重新分配了一个内存,下一个函数的t5CustVol变量是一个局部变量。解决办法就是把下一个函数的T5CustVol去掉即可。 来源: CSDN 作者: a279534269 链接: https://blog.csdn.net/a279534269/article/details/104312449

Java面向对象[方法]

可紊 提交于 2020-02-15 06:14:47
方法是类和对象的行为特征的抽象,Java中的方法与传统的函数非常相似又有着显著的不同,在结构化语言中函数是最小单位,整个软件由一个一个函数组成;在面向对象语言中,类是最小单位,整个系统由一个一个类组成,在java中方法不能独立存在,必须属于类或者对象。 方法必须属于类或者对象 如果要定义方法,则只能在类体内定义,不能独立定义方法,如果类中的方法由static修饰,那么这个方法属于这个类,否则该方法属于这个类的实例 Java语言是静态的,一个类定义完成后,只要不再重新编译这个类文件,该类和类的对象所拥有的方法是固定的,永远都不会改变 方法不能独立定义,也不能独立执行,它的调用方式必须是【类.方法】【对象.方法】 同一个类中的一个方法调用另一个方法时,如果被调用的是普通方法,则默认使用this作为调用者,如果被调用的方法是静态方法,则默认使用类作为调用者,表面上看是独立执行,但实际上只是隐藏了主调 需要注意的是static修饰的方法既可以使用类作为调用者,也可以使用对象作为调用者来调用,但static修饰的方法属于类,虽然使用类的对象调用static修饰的方法能够得到相同的执行结果,但那是因为底层依然是使用这些实例所属的类作为调用者,执行虽然不会报异常,但并不支持这么写程序 Java方法的参数传递机制 如果声明方法的时候指定了形参,那么调用方法时必须给这些形参指定参数值

成员变量和局部变量

流过昼夜 提交于 2020-02-15 01:53:00
就近原则 变量的分类 成员变量:类变量、实例变量 局部变量 非静态代码块的执行 :每次创建实例对象都会执行 方法的调用规则:调用一次执行一次 局部变量与成员变量的区别: 声明的位置 局部变量:方法体{} 中,形参,代码块中 成员变量: 类中 方法外 类变量:有static 修饰 实例变量: 没有static修饰 修饰符 局部变量: final 成员变量:public、protected、private、final、static、volatile、transient 来源: CSDN 作者: 大大大凯旋 链接: https://blog.csdn.net/qq_43037886/article/details/104317575

JavaScript局部变量与全局变量2

試著忘記壹切 提交于 2020-02-15 01:08:14
看以下这段代码: <html> <body> <script> class1 = function() { // 私有属性 var m_first = 1; var m_second = 2; // 私有方法 function method1() { alert(m_first); } var method2 = function() { alert(m_second); } // 构建函数 { method1(); method2(); } } var o = new class1(); // 提示未定义 alert(o.m_first); // 错误:对象不支持此属性或方法 o.method1(); </script> </body> </html> 这段代码其实是在介绍JavaScript如何建立一个私有变量与私有方法。这个不是大问题。要关注的是,进入类后,类的私有方法就可以使用类的私有变量了,一层层的,有意思。而 类的私有方法使用全局变量也是正常,没有悬念。类的公用方法使用类的私有变量或全局变 量亦没有问题。 var i=2; …… this.method3=function () //类的公用方法 { alert (m_first + ":" + i); //使用类的私有变量与全局变量 } …… 这里有列出两种构建私有函数的方法(常规函数定义与匿名函数赋给变量)

关于作用域的问题

倖福魔咒の 提交于 2020-02-14 11:39:56
ans = [ ] def helper ( node ) : ans . append ( 1 ) # ans不存在,会使用全局的ans列表,会修改上面个ans, print ( ans ) # [1] return helper ( root ) print ( ans ) # [1]我而不是[] ans = 0 def helper ( node ) : ans = 1 # 不会修改上面个ans,这里会定义为新的局部变量 print ( ans ) # 1 return helper ( root ) print ( ans ) # 0 我而不是1 来源: CSDN 作者: 三岁与十八 链接: https://blog.csdn.net/qq_27921205/article/details/104307285

面向对象成员变量和局部变量,private--学习笔记--13

爷,独闯天下 提交于 2020-02-13 11:13:04
1.成员变量和局部变量区别 1.在类中位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 举例: Class Demo { //成员变量(方法外) Int num=10; Public void show ( ) { Int num2=20;//局部变量 } } 2.在内存中位置不同 成员变量:在堆内存 局部变量:在栈内存 3.生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法调用完毕而消失 4. 初始化值不同 成员变量:有默认初始化值 局部变量: 没有默认初始化值,必须定义,赋值,然后才能使用 注意事项: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则 class Variable { //int num=10; int num; public void show() { //int num2;//报错,可能尚未初始化。参照定义 int num2=20; System.out.println(num2); } } class VariableDemo{ public static void main(String[] args) { Variable v=new Variable(); System.out.println(v.num);//访问成员变量 v.show(); }

JVM原理与内存模型

北城以北 提交于 2020-02-13 02:20:34
编译型语言:一次性地编译成机器码,生成可执行文件。 解释型语言:使用专门的解释器对源码逐行解释成特定平台的机器码并立即执行的语言。 JVM原理: Java语言既是编译型语言,又是解释型语言:Java源码通过javac命令被编译成.class文件,这种字节码文件不面向任何平台,只面向JVM(Java Virtual Machine);JVM是Java跨平台的关键部分,其向上提供给Java字节码程序的接口完全相同,而向下适应不同平台的接口则互不相同,为特定平台提供特定机器码,使用java命令解释执行。 JDK、JRE、JVM关系: JDK包括Java编译器,JRE和其它工具(如javaDoc、java调试器等);JRE包含JVM、类加载器、大量基础类库等。 内存模型: 1. 堆(Heap) 是Java虚拟机所管理的内存中最大的一块不连续的内存区域,也是被各个线程共享的内存区域,该内存区域存放了对象实例及数组(但不是所有的对象实例都在堆中),以及死亡的还未被回收的对象。其大小通过-Xms(初始值)和-Xmx(最大值)参数设置(都要小于1G),为了避免在运行时频繁调整Heap的大小,通常-Xms与-Xmx的值设成一样。堆内存 = 新生代+老生代(永久代不属于堆内存)。在我们垃圾回收的时候,我们往往将堆内存分成新生代和老生代(大小比例1:2),新生代中由Eden和Survivor0

为什么返回值为数值时,返回局部变量可以。而返回值为引用时,不能返回局部变量

99封情书 提交于 2020-02-12 21:07:41
最重要的一点: 函数不能返回指向栈内存的指针! https://blog.csdn.net/weixin_40539125/article/details/81367466 为什么? 因为返回的都是值拷贝! 一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意这里指的是栈,返回指向堆内存的指针是可以的)。 我们知道,局部变量的作用域是函数内部,函数一旦执行结束,栈上的局部变量会进行销毁,内存得到释放。因此,此时函数返回的是该局部变量的值拷贝,这是没有问题的。但是如果返回的是局部变量的地址,那么返回的只是该局部变量指针的拷贝,而随着函数运行结束,该拷贝指针所指向的栈内存已经被释放,那么指向一个未知区域就会导致调用的错误。 那如果返回的指针指向的是堆内存,又会怎么样? 这样的使用是没有问题的,在函数内new空间,在函数外delete空间。但是这样并不是一种好的编程风格,尽量在同一个作用域内进行new和delete操作

【python】变量定义及全局局部变量

我怕爱的太早我们不能终老 提交于 2020-02-12 11:42:26
普通变量的命名: 1.小写字母和下划线(推荐):first_name 2.小驼峰式命名法:firstName 3.大驼峰式命名法:FirstName 全局和局部变量: 1.全局变量和局部变量的区别在于作用域,全局变量在整个py文件中声明,全局范围内可以使用;局部变量是在某个函数内部声明的,只能在函数内部使用,如果超出使用范围(函数外部),则会报错。 A=100 def func(): a = 50 # 局部变量一般用小写字母表示 print(a+A) func() print(A) #>>>150 print(a) #>>>NameError: name 'a' is not defined 因a是局部变量,因此会报错 2.在函数内部,如果局部变量与全局变量变量名一样,则优先调用局部变量。 (函数内不能修改全局变量,因为函数可能会被调用多次) A = 100 def func(): global A #申明使用全局A A = 200 print(A) print(A) # 打印全局变量 #>>>100 func() # 局部变量 #>>>200 print(A) # 改变后的全局变量 #>>>200 如果全局变量是列表类型,可以通过list的列表方法去对列表进行修改,并且可以不用global来声明。 (函数内不能修改全局变量,因为函数可能会被调用多次) list_1 = [1,2

Python全局变量和局部变量

╄→гoц情女王★ 提交于 2020-02-12 11:35:24
Python全局变量和局部变量: 定义在函数内的为局部变量,在外部访问局部变量会出现未定义的错误 定义在函数外的变量称为全局变量,可以在整个函数范围内访问 当函数中存在与全局变量重名的变量,以函数中的局部变量为准 定义在函数中的局部变量的作用域只在函数中 # 定义全局变量 total total = 0 def add(num1,num2): # 定义局部变量 total total = num1 + num2 # 输出局部变量 print(total) add(4,6) # 10 print(total) # 0 在函数内部,如果想要修改外部变量时,可以使用 global 或 nonlocal 关键字 global 全局变量名: 在函数中使用全局变量,可以对全局变量进行修改。 注:如果只是在函数中使用了和全局变量相同的名字,则只是局部变量 # 定义全局变量 total total = 0 def add(num1,num2): # 使用 global 关键字声明全局变量 total global total total = num1 + num2 # 输出全局变量 print(total) add(4,6) # 10 # 输出全局变量 print(total) # 10 nonlocal 嵌套作用域中的变量(嵌套函数,外层函数与内层函数之间): 修改嵌套函数之间的变量 #