精华内容
下载资源
问答
  • 2021-03-06 18:52:46

    大家知道Java中的局部变量吗?今天我们要了解的Java的局部变量及它和成员变量的区别,一起来看看吧。

    什么是局部变量?

    局部变量时就是只有一部分可见的变量,例如定义在方法中的变量,只有这百个方法才能使用,同一个类的其他方法或者其他的类都不可见度。多态是面向对象编程的巨大优势,多态其实就是多种形态或者多种状态的意思,比如我们人来,我们都会说话,能思考,会打豆豆,但是人类具体概念概念太广泛了,例如:人类也分黄种人、黑人、白种人,不同的人种之间又有不同的属性,最明显的就如头发颜色,但是就算是同一种人也不会完全相同,它们的年龄、学历、性格。这就是java及所有面向对象语言最具特点的抽象与多态。从所有人类到某个人类,这是抽象,从某个人类到所有人类,这是多态,虽然都是人类,但是形态却是不可能完全一样的。

    Java中局部变量与成员变量区别在哪里?

    1. 定义的位置不一样

    局部变量:写在方法内部

    成员变量:写在方法外部,直接写在类当中

    2.作用范围不一样

    局部变量:只有方法当中才可以使用,出了方法就不能再用

    成员变量:整个类全都可以通用。

    3.默认值不一样

    局部变量:没有默认值,如果想要使用,必须手动进行赋值

    成员变量:如果没有赋值,会有默认值,规则和数组一样

    4.内存的位置不一样

    局部变量:位于栈内存

    成员变量,位于堆内存。

    5.生命周期不一样

    局部变量:随着方法进栈而诞生,随着方法出栈而死亡。

    成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失。

    例:public calss Demo01variableDifference

    {

    String name; //成员变量

    public void methodA()

    {

    int num = 20; //局部变量 默认值为NULL

    System.out.println(num);

    System.out.println(name);

    }

    public void methodB(int param)

    {

    //方法的参数就是局部变量

    System.out.println(param); //参数也是局部变量,为什么不赋值就可以输出?

    //因为参数在方法调用的时候,必然会被赋值的。不传参数就会报错。

    int age;

    //System.out.println(age);//错误写法 未赋值不能使用,必须赋值

    // System.out.println(num);//错误写法

    System.out.println(name);

    /

    }

    }

    以上就是Java局部变量的所有内容,更多Java入门知识请关注我们了解吧。

    更多相关内容
  • C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register)1.局部变量和全局变量在讨论函数的形参变量时曾经提到,形参变量只在被调用期间才分配内存单元,调用结束立即释放。这一点表明形参变量只有在...
  • C语言中,未初始化的局部变量到底是多少? 答案往往是: 与编译器有关。 可能但不保证初始化为0。 未确定。 总之,全部都是些一本正经的形而上答案,这很令人讨厌。 但凡一些人给你滔滔不绝地扯编译器,C库,...
  • 针对这些问题,提出一种基于位置信息熵的局部敏感哈希聚类方法。通过对生物序列使用 K 词计算其标准熵,将标准熵作为局部敏感哈希函数簇的特征向量,计算特征矩阵并应用于生物序列聚类。实验结果表明,该算法能够...
  • 局组件和局部组件 1.先定义组件 Vue.component(‘组件名’, { 组件模板对象 }) 注意: 组件名不要使用原生的标签名, 若组件名定义时用的是驼峰命名法, 则调用时用中划线分割后小写 例如: 组件–>mtText 使用时–> ...
  • 返回具有局部极值(最小值、最大值)位置和值的结构。 输出结构要素: minx:最小位置miny:最小值maxx:最大位置maxy:最大值 例子: v=[1 3 5 5 2 -2 -2 -1 8 -10 5]; o1=极值(v) o2=extrems(v,'ysort') o3=...
  • 具有局部位置补丁和非局部相似性的人脸幻觉核规范编码
  • 什么是程序的局部性原理

    千次阅读 2019-12-02 11:38:14
    01、前言 作为有追求的程序员,我们日常在写代码的时候往往都会运用很多奇技淫巧,不单单是为了炫耀我们的技术,更是为了追求更高的效率。...说到局部性原理,那我们首先要知道什么是局部性原理,局部性原理...

    01、前言

    作为有追求的程序员,我们日常在写代码的时候往往都会运用很多奇技淫巧,不单单是为了炫耀我们的技术,更是为了追求更高的效率。了解局部性原理,可以有效的帮助我们理解和写出更好的代码,对于局部性原理可能有的小伙伴知道,有的小伙伴不知道,知道的小伙伴就当做复习知识点,不知道的小伙伴也没关系,接着往下看就知道了。

    02、什么是局部性原理

    说到局部性原理,那我们首先要知道什么是局部性原理,局部性原理分为两部分:

    • 时间局部性:指的是在程序运行过程中最近被引用到的存储器位置在程序执行后期还会被多次引用到的可能性很大。
    • 空间局部性:指的是程序运行过程中如果一个存储器的位置被引用,那么在程序执行后期该存储器附近的位置被引用的可能性很大。

    简单来说就是一个变量在程序运行过程中,如果被引用过一次,那后续很有可能会再被引用到;一个变量被访问到过后,这个变量所在的位置附近的位置很有可能在程序后续运行中被访问到。

    03、示例

    上面是通过理论来说明的,下面我们通过一段代码来看看局部性y原理

    public int sum(int[] array) {
            int sum = 0;
            for (int i = 0; i < array.length; i++) {
                sum = sum + array[i];
            }
            return sum;
    }
    

    从上面的这段代码来看,就是一个很简单的数组元素求和,这里我们主要看 sum 和 array 两个变量,我们可以看到 sum 在每次循环中都会用到,另外它只是一个简单变量,所以我们可以看到,sum 是符合我们上面提到的时间局部性,再访问一次后还会被继续访问到,但是它不存在我们所说的空间局部性了。

    相反的,array 数组中的每个元素只访问一次,另外数组底层的存储是连续的,所以 array 变量符合我们上面提到的空间局部性,但是不符合时间局部性。

    这只是局部性原理的简单示例,对于局部性原理还有很多地方会用到,我们如果能熟练的掌握和使用,对我们的帮助会很大的。

    04、相关应用

    4.1、CPU 缓存

    上面的示例其实很简单,相信大家都能理解,另外局部性原理其实在我们日常使用的软件中随处可见,并且在操作系统中也少不了。我们知道 CPU 的速度是非常快的,而且 CPU 与内存之间有多级缓存,如下图(图片来源于网络)

    image-20191129115010857.png

    为了充分的利用 CPU,操作系统会利用局部性原理,将高频的数据从内存中加载的缓存中,从而加快 CPU 的处理速度。

    4.2、广义局部性

    其实我们的局部性原理不单单是上面提到的狭义性的局部性,还可以是广义的局部性。我们系统里面的热点数据,CDN 数据,微博的热点流量等等这些都利用了局部性原理。只是我们可能没有意识到而已,实际上已经在使用了。我们会通过 Redis 缓存热点数据,会通过 CDN 提前加载图片或者视频资源,等等,都是因为这些数据本身就符合局部性原理,合理的利用局部性可以得到了能效、成本上的提升。

    4.3、利弊结合

    任何事情都是多面性的,局部性原理虽然我们使用起来很不错,可以提高系统性能,但是在有些场景下,我们是需要避免局部性原理的出现的。或者说出现了这种情况,我们需要人工处理。我们可以试想一下,如果在我们的一个大数据处理平台上,由于局部性原理的存在,导致我们部分节点数据庞大运算吃力,部分节点数据量小十分空闲,这种情况自然是不合理,我们就需要把数据按照业务场景进行重新分配,以达到整个集群的最大利用。

    05、总结

    今天给大家介绍了一下局部性原理,我们提到了时间局部性和空间局部性,通过一个代码示例和几个业务场景给大家简单介绍了局部性的使用。最后也提到局部性原理有利也有弊,我们需要根据业务场景和需求合理话的使用。

    展开全文
  • 输出 'x' 和 'y' 指定极值的 %pixel 位置,'z' 指定图像在极值位置,'c' 对极值进行分类,其中: c = -1 --> 局部最小值c = 0 --> 鞍点c = +1 --> 局部最大值c = +2 --> 局部平坦/极值未定义 可选变量...
  • 按照一般教科书上的说法,C语言中的局部变量应该是分配在"栈"中的。而实际情况,有些出入录,肯能更容易理解。  这一段代码,唯一的用途,就是分配变量。int func1(void) { volatile int father; volatile ...
  • 简单解读局部变量和全局变量

    千次阅读 2021-05-20 17:41:53
    什么是C语言中的变量?局部和全局变量又是什么?它们在编写程序的过程中发挥怎样的作用?今天课课家笔者为大家详细介绍局部变量和全局变量的概念和作用。在函数的参数和返回值中我们认识到形参变量要等到函数被调用...

    什么是C语言中的变量?局部和全局变量又是什么?它们在编写程序的过程中发挥怎样的作用?今天课课家笔者为大家详细介绍局部变量和全局变量的概念和作用。

    在函数的参数和返回值中我们认识到形参变量要等到函数被调用时才分配内存,调用结束后立即释放内存。这说明形参变量只能在函数内部使用,离开该函数就无效了。

    所谓作用域(Scope),就是变量的有效范围。不仅对于形参变量,C语言中所有的变量都有自己的作用域。决定变量作用域的是变量的定义位置。

    ◎局部变量

    所谓局部变量(LocalVariable),简而言之就是定义在函数内部的变量,它的作用域仅限于函数内部,离开该函数后就是无效的,再使用就会报错。比如:

    intf1(inta){

    intb,c;//a,b,c仅在函数f1()内有效

    returna+b+c;

    }

    intmain(){

    intm,n;//m,n仅在函数main()内有效

    return0;

    }

    这里需要我们注意以下四点:

    ①在main函数中定义的变量也是局部变量,只能在main函数中使用;同时main函数中也不能使用其它函数中定义的变量。main函数也是一个函数,与其它函数地位平等。

    ②形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。

    ③可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。

    ④在语句块中也可定义变量,它的作用域只限于当前语句块。

    以下是局部变量的一个任意例子(图1)

    9a2965f2e4302526caf944c1780a4885.png

    图1

    ◎全局变量

    所谓全局变量(GlobalVariable),简而言之就是在所有函数外部定义的变量,它的作用域默认是整个程序,也就是所有的源文件,包括.c和.h文件。比如:

    inta,b;//全局变量

    voidfunc1(){

    //TODO:

    }

    floatx,y;//全局变量

    intfunc2(){

    //TODO:

    }

    intmain(){

    //TODO:

    return0;

    }

    a、b、x、y都是在函数外部定义的全局变量。C语言代码是从前往后依次执行的,由于x、y定义在函数func1()之后,所以在func1()内无效;而a、b定义在源程序的开头,所以在func1()、func2()和main()内都有效。

    下面笔者给大家看看局部变量和全局变量的代码例子:

    代码例子1:输出变量的值:

    #include

    intn=10;//全局变量

    voidfunc1(){

    intn=20;//局部变量

    printf("func1n:%d\\n",n);

    }

    voidfunc2(intn){

    printf("func2n:%d\\n",n);

    }

    voidfunc3(){

    printf("func3n:%d\\n",n);

    }

    intmain(){

    intn=30;//局部变量

    func1();

    func2(n);

    func3();

    //代码块由{}包围

    {

    intn=40;//局部变量

    printf("blockn:%d\\n",n);

    }

    printf("mainn:%d\\n",n);

    return0;

    }

    运行结果:

    func1n:20

    func2n:30

    func3n:10

    blockn:40

    mainn:30

    代码中虽然定义了多个同名变量n,但它们的作用域不同,在内存中的位置(地址)也不同,所以是相互独立的变量,互不影响,不会产生重复定义(Redefinition)错误。

    ①对于func1(),输出结果为20,显然使用的是函数内部的n,而不是外部的n;func2()也是相同的情况。当全局变量和局部变量同名时,在局部范围内全局变量被“屏蔽”,不再起作用。或者说,变量的使用遵循就近原则,如果在当前作用域中存在同名变量,就不会向更大的作用域中去寻找变量。

    ②func3()输出10,使用的是全局变量,因为在func3()函数中不存在局部变量n,所以编译器只能到函数外部,也就是全局作用域中去寻找变量n。

    ③由{}包围的代码块也拥有独立的作用域,printf()使用它自己内部的变量n,输出40。

    ④在C语言中规定,只能从小的作用域向大的作用域中去寻找变量而不能反过来执行,我们使用更小的作用域中的变量。对于main()函数,即使代码块中的n离输出语句更近,但它仍然会使用main()函数开头定义的n,所以输出结果是30。

    代码例子2:根据长方体的长宽高求它的体积以及三个面的面积。

    #include

    ints1,s2,s3;//面积

    intvs(inta,intb,intc){

    intv;//体积

    v=a*b*c;

    s1=a*b;

    s2=b*c;

    s3=a*c;

    returnv;

    }

    intmain(){

    intv,length,width,height;

    printf("Inputlength,widthandheight:");

    scanf("%d%d%d",&length,&width,&height);

    v=vs(length,width,height);

    printf("v=%d,s1=%d,s2=%d,s3=%d\\n",v,s1,s2,s3);

    return0;

    }

    运行结果:

    Inputlength,widthandheight:102030↙

    v=6000,s1=200,s2=600,s3=300

    根据事先定下的目标,我们要通过一个函数得到三个值:分别是体积v以及三个面的面积s1、s2、s3,但由于C语言中的函数只能有一个返回值,我们只能将其中的一份数据也就是体积v放到返回值中,而将面积s1、s2、s3设置为全局变量。全局变量的作用域是整个程序,在函数vs()中修改s1、s2、s3的值,从而会影响到包括main()在内的其它函数。

    本次简单解读局部变量和全局变量的教程到此暂告一段落,如果以后有补充的话笔者会在此继续补充,同时欢迎大家的继续补充。最后希望这次教程对大家学习C语言能够起到一定的帮助作用!

    展开全文
  • 基于位置信息熵的局部敏感哈希聚类方法.pdf
  • 位置调度问题的迭代局部搜索算法
  • 主要涉及了java中的局部变量和全局变量,就二者的含义、生存时间和创建位置作了介绍,需要的朋友可以参考下。
  • 在工程实际中,通常使用有限差分法来确定变截面梁最大挠度及其所在位置,然而这种方法十分繁杂。提出了局部有限差分法,采用逐次减小差分区域和步长的方法,使计算精度层层递进,计算过程简单易行。
  • 该算法利用随机树的方式有监督地学习样本图像的局部特征形成字典,通过学习好的字典和测试图像的子块来预测图像中目标的中心位置,以此寻求待检测图像稀疏的表示,从而实现对图像中感兴趣目标的检测。实验结果表明,该...
  • 全局变量的作用域:从定义位置开始到下面整个程序结束。 局部变量的作用域:在一个函数内部定义的变量只能在本函数内部进行使用。 OK,上面的效果用Java语言实现一下: public class App1 { public static ...
  • 此函数查找单声道信号(或一维矩阵)中的局部最小值及其确切位置。 如果您有任何问题或建议,请随时问我。
  • # 寻找局部最高点 # 输入input: 含有最高点高度的列表 # 输出output: 返回最高点的位置 # 时间复杂度: O(log(n)) def findHighSpot(input): iLen = len(input) mid = iLen//2 - 1 # Python中'/'为小数除法,'//'为...
  • 什么局部变量线程安全

    千次阅读 2022-02-22 00:16:50
    假如存在方法计算斐波那契数列,什么是斐波那契数列呢,就是第一项和第二项都是1,从第三项开始,每一项都是前两项的和形如:1、1、2、3、5、8、13…那么多线程下变量r是否存在线程安全的问题呢? public class Test...

    为什么局部变量线程安全

    我们知道方法内部定义的变量属于局部变量,而局部变量的作用域仅仅存在一个方法的内部,不能被外部所引用,那这到底是为什么呢?

    场景引入

    假如存在方法计算斐波那契数列,什么是斐波那契数列呢,就是第一项和第二项都是1,从第三项开始,每一项都是前两项的和形如:1、1、2、3、5、8、13…那么多线程下变量r是否存在线程安全的问题呢?

    public class Test {
        public int[] fibonacci(int n){
            int[]  r = new int[n];
            r[0] = r[1] = 1;
            for (int i = 2; i <n ; i++) {
                r[i] = r[i-1] + r[i-2];
            }
            return r;
        }
    
    
        public static void main(String[] args) {
            Test test = new Test();
            int[] fibonacci = test.fibonacci(5);
            System.out.println(Arrays.toString(fibonacci));
        }
    }
    

    其实仔细分析可以看到每调用一次fibonacci方法就会创建一个r对象,本质上有多个线程访问就会创建多个r对象,所以局部变量r应当不会存在数据竞争的问题,但是怎么系统分析呢?

    这时候就要从编译原理入手了。

    方法怎么运行

    程序运行就是将JAVA代码翻译成CPU指令,并且执行CPU指令的过程,方法的调用亦是如此,如下方法调用为例

    int a = 7;
    int[] b = fibonacci(a);
    int[] c = b;
    

    当程序调用fibonacci方法时,首先要找到该方法的目的地址,跳转到该地址执行方法,最后CPU执行完方法准备返回时需要知道下一条指令对应的地址,如int[] c = b的地址,知道该地址后才能跳转到目的地址执行指令,跳转过程如下所示。

    image-20220221233644254

    方法调用过程掌握较为简单,但是CPU如何获取方法的参数和返回地址呢?答案是CPU的堆栈寄存器,栈是一种线性结构就像手枪的弹夹,先进后出为栈。方法的调用就是一个压栈的过程,如下所示

    存在三个方法A,B,C,其中方法A调用方法B,方法B调用方法C,每个方法入栈都会分配一片空间,这个空间称之为栈帧,栈帧中包含方法参数以及返回地址等内容,当调用方法时会创建栈帧同时入栈,调用方法完毕会从调用栈中弹出出栈,简单说就是方法和栈帧是同生共死的。

    image-20220221235212670

    方法局部变量存放位置

    现在知道了方法和栈帧是同生共死的,而局部变量的生命周期就是在方法内部,是否说明局部变量就是存储在栈帧内部呢?确实如此栈帧的内部就是包含布局变量的,方法调用栈图改进如下。

    image-20220221235830438

    所以说局部变量是和栈帧同生共死的,如果想要跨越多个方法那么只能将变量创建在堆中,让方法共享。

    调用栈和线程

    调用栈和线程又有什么关系呢?每个线程都有自己的调用栈互不干扰,如下所示。

    image-20220222000413792

    从这里看就知道了为什么局部变量线程安全,因为没有共享就没有伤害,局部变量对于每个方法的调用都是有独立的,线程与线程之前的调用栈互不干扰完全独立,这就是原因。

    线程封闭

    局部变量因为不会和其它线程共享变量,所以线程安全,这种思想能够很好的解决线程安全的问题,这种思想称之为线程封闭,官方解释是仅在单线程内访问数据

    采用线程封闭的案例常用于数据库连接的获取,采用的就是ThreadLock思想线程封闭每个线程都有独立的数据副本,线程安全效率高。

    展开全文
  •  添加局部变量:选择右键菜单第3栏的“添加顺序局部变量”选项,在顺序结构边框上出现一个小方块(所有帧程序框的同一位置都有),表示添加了一个局部变量。小方块可以沿框四周移 动,颜色随传输数据类型的系统颜色...
  • C语言未初始化的局部变量是多少?

    千次阅读 多人点赞 2020-07-17 17:41:15
    C语言中,未初始化的局部变量到底是多少? 答案往往是: 与编译器有关。 可能但不保证初始化为0。 未确定。 总之,全部都是些一本正经的形而上答案,这很令人讨厌。 但凡一些人给你滔滔不绝地扯编译器,C库,...
  • 通过分析非对称变形破坏机理,提出软岩巷道局部弱结构非对称变形关键部位补偿支护对策(即在普通锚网喷支护基础上,对巷道局部弱结构,增加锚杆长度和数量及锚注支护,进行非对称补偿支护),并进行工程试验,取得了预期效果...
  • 一种在GPS局部,完全和局部中断时车辆位置预测的新概率方法
  • 访问局部

    千次阅读 2021-07-07 03:00:21
    在计算机科学中,访问局部性,也称为局部性原理,是取决于存储器访问模式频繁访问相同值或相关存储位置的现象的术语。访问局部性有两种基本类型——时间和空间局部性。时间局部性是指在相对较小的持续时间内对特定...
  • 什么是缓存的局部性原理?

    千次阅读 2019-10-18 20:05:56
    如果一个内存位置被重复的引用,那就是有了时间局部性,如果一个内存位置被引用了,很快这个位置的附近位置也被引用了,这就有了空间局部性。   由于缓存中的数据是一个个数据块,每个数据块包含几十到几千...
  • Iframe的用法与普通的标签元素DIV类似,可以指定在页面中嵌入的位置、颜色、界面布局等 一、iframe实现局部刷新方法一 [removed] $(function(){ $("#a1").click(function(){ var name= $(this).attr("name"); ...
  • 局部(本地)安装 命令 npm install webpack -g npm install --save-dev webpcak 安装位置 一般在 Node安装目录下的node_modules文件夹中:\Users\用户名\AppData\Roaming\ 目录下\npm\node_modules 项目的node_
  • 角速度以及车辆位置坐标),通过模型预测控制理论获取前轮转向角。 3.最后将局部路径规划层及控制器进行集成,利用 Car Sim 和 Simulink 搭建联合仿真平台,实现了弯道和动态障碍物同时存在的复杂场景下自动驾驶...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 503,465
精华内容 201,386
关键字:

局部是什么部位