java局部变量_java局部变量和成员变量的区别 - CSDN
精华内容
参与话题
  • Java 局部变量

    千次阅读 2018-11-11 19:55:38
    局部变量声明在方法、构造方法或者语句块中; 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将... 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。 ...

     

    • 局部变量声明在方法、构造方法或者语句块中;
    • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
    • 访问修饰符不能用于局部变量;
    • 局部变量只在声明它的方法、构造方法或者语句块中可见;
    • 局部变量是在栈上分配的。
    • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
    展开全文
  • 关于java成员变量和局部变量

    万次阅读 多人点赞 2019-06-06 21:01:40
    Java语言里,根据定义变量位置的不同,可以将变量分成两大类:成员变量(存在于堆内存中,和类一起创建)和局部变量(存在于栈内存中,当方法执行完成,让出内存,让其他方法来使用内存)。二者的运行机制存在较大差异...

    1、成员变量和局部变量简述

    在Java语言里,根据定义变量位置的不同,可以将变量分成两大类:成员变量(存在于堆内存中,和类一起创建)和局部变量(存在于栈内存中,当方法执行完成,让出内存,让其他方法来使用内存)。二者的运行机制存在较大差异。

    1.1成员变量

    类变量从该类的准备阶段起开始存在,直到系统完全销毁这个类,类变量的作用域与这个类的生存范围相同;

    而实例变量则从该类的实例被创建起开始存在,直到系统完全销毁这个实例,实例变量的作用域与对应实例的生存范围相同。

    正是基于这个原因,可以把类变量和实例变量统称为成员变量。其中类变量可以理解为类成员变量,它作为类本身的一个成员,与类本身共存亡;实例变量则可以理解为实例成员变量,它作为实例的一个成员与实例共存亡。

    只要类存在,类就可以访问类变量         类.类变量

    只要实例存在,实例就可以访问实例变量        实例.实例变量

    当然实例也可以访问类变量。但是需要注意的是因为实例不拥有类变量,所以通过实例来访问类变量进行操作,实际上是对类变量进行操作 ,当有其他实例来访问类变量时,访问的类变量是被对象访问操作过的类变量。

    成员变量无需显示初始化,只要为一个类定义了类变量或实例变量,系统就会在这个类的准备阶段或创建该类的实例时进行默认初始化。

    1.2局部变量

    局部变量根据定义形式的不同,又可以分为如下三种:

    形参:在定义方法签名时定义的变量,形参的作用域在整个方法中都有效

    方法局部变量:在方法体内定义的局部变量,它的作用域是从定义该变量的地方生效,到该方法结束时失效

    代码块局部变量:这个局部变量的作用域从定义该变量的地方生效,到该代码结束时失效。

    一个变量只在一对{}中起作用。。

    java允许局部变量和成员变量同名,如果方法中局部变量和成员变量同名,局部变量就会覆盖成员变量,如果需要在这个方法中引用被覆盖成员变量,则可使用this(对于实例变量)或类名(对于类变量)作为调用者来限定访问成员变量。

    2、成员变量的初始化和内存中的运行机制

    接下来以下面代码来举例说明成员变量的初始化和内存中的运行机制

     

    复制代码

     1 public class Person {
     2     public int num;
     3     public String name;
     4     
     5     public static void main(String[] args) {
     6         Person p1 = new Person();
     7         Person p2 = new Person();
     8         p1.num = 2;
     9         p2.num = 3;
    10         p1.name = "张三";
    11         p2.name = "李四";
    12     }
    13     
    14 
    15 }

    复制代码

     

    当程序执行Person p1 = new Person();时,如果这行代码是第一次使用Person类,则系统通常会在第一次使用Person类时加载这个类,并初始化这个类,在类的准备 阶段,系统将会为该类的类变量分配内存空间,并指定默认初始值。当person类初始化完成后,系统内存中的存储示意图如下图所示。

     可以看出,当person类初始化完成后,系统将在堆内存中为Person分配一块内存空间,实际上是创建了一个类对象,在这块内存区里包含了保存num类变量的内存,并设置num的默认初始值为0。

    系统接着创建了一个Person对象,并把这个Person对象赋给p1变量,Person对象包含了名为name的实例变量,实例变量是在创建实例时分配内存空间并指定初始值的。当创建了第一个person对象后,系统内存中的存储示意图如下图所示。

    从上图可以看出num不属于对象,它属于类,所以创建第一个对象时并不需要为num分配内存空间,系统只是为name分配了内存空间,并指定初始值为null。

    创建第二个对象p2时,由于在创建第一个对象时已经对类进行了初始化,所以在创建p2时对类进行初始化,对象的创建过程与第一个对象的创建过程没有什么区别。

    第二个对象创建完成后,成员变量如上图所示在内存中存储。

    **当程序需要访问类变量时,尽量使用类来作为主调,不要使用对象作为主调,这个可以避免产生歧义。

    3、局部变量的初始化和内存中的运行机制

    *局部变量必须经过显示初始化之后才能使用,系统不会为局部变量执行初始化。定义了局部变量以后,系统并没有给局部变量进行初始化,直到程序给这个局部变量赋给初值时,系统才会为这个局部变量分配内存空间,并将初始值保存到这块内存中。

    *局部变量不属于任何类或者实例,因此它总是保存在方法的栈内存中。如果局部变量是基本数据类型,则该变量直接存储在方法的栈内存中,如果是引用变量则将引用的地址存储在方法的栈内存中。

    *栈内存中的变量无需系统垃圾回收,随着方法或者代码块的运行结束而结束。局部变量通常只保存了具体的值或者引用地址,所以所占的内存比较小。

    4、变量的使用规则

    能不使用成员变量就别使用成员变量

    能不使用方法局部变量就别使用方法局部变量

    使用代码块局部变量性能最好。

     

     

    如果大佬们觉得有用的话  请关注一下小弟的副业 淘宝店https://shop135377658.taobao.com/shop/view_shop.htm?spm=a211vu.server-web-home.category.d53.64f02d5879I9Wp&mytmenu=mdianpu&user_number_id=1709908377

    展开全文
  • Java中的局部变量

    千次阅读 2019-03-03 10:17:40
    今天,我们来说说java中的几个名词 ...在java里面,同一个域里面不能定义相同的名字的局部变量。还是来看看我们的代码 package oop2; public class demo { int a = 123;// 成员变量 // 在...

    今天,我们来说说java中的几个名词

      局部变量:就是在成员方法里面定义的变量我们称之为局部变量

    成员属性:就是类的静态属性,我们称之为成员属性。

    成员方法:就是类的动态的行为。在java里面,同一个域里面不能定义相同的名字的局部变量。还是来看看我们的代码

      

    package oop2;
    
    public class demo {
    	int a = 123;// 成员变量
    	// 在成员方法定义的变量,称之为局部变量.局部变量在方法创建的时候被创建
    	// 在方法调用结束后结束。
    	int sum1 = 0;
    
    	public int sum() {
    		int id = 1;
    		for (int i = 0; i < 100; i++) {
    			sum1 += i;
    
    		}
    
    		System.out.println(id);
    		return sum1;
    	}
    
    	public static void main(String[] args) {
    		demo d1 = new demo();
    		System.out.println(d1.sum());
    
    	}
    
    }
    

    我们看到程到输出的结果如下所示:

    1
    4950
    

    在java里面同一个域里面不能定义相同的名字的局部变量,来看看下面的代码。

      public class demo {
    	int a = 123;// 成员变量
    	// 在成员方法定义的变量,称之为局部变量.局部变量在方法创建的时候被创建
    	// 在方法调用结束后结束。
    	int sum1 = 0;
    
    	public int sum() {
    		int id = 1;
    		for (int i = 0; i < 100; i++) {
    			sum1 += i;
    
    		}
             for(int i=0;i<100;i++) {
            	  int id=12;
            	  id+=1;
             }
    		
    	}
    
    	public static void main(String[] args) {
    		demo d1 = new demo();
    		System.out.println(d1.sum());
    
    	}
    
    }
         

    在上面的例子里面变量id就是在同一个域里面重复定义的变量。在程序的开始id被定义为1,在第二个for循环里面,id被定义为了

    12.因为第一个id的生命周期在sum函数定义开始的右边括号,一致到最后。和第二个for循环里面的id重复了。那么此时就由一个问题

    在两个for循环里面都定义了变量i,为何没有重复了,因为此时变量i的生命周期在这个for循环里面,当循环结束之后,此时变量i的生命周期就结束了。

     

    展开全文
  • JAVA局部变量

    2019-06-16 20:34:40
    2019独角兽企业重金招聘Python工程师标准>>> ...

    -局部变量声明在方法、构造方法或者语句块中;
    -局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
    -访问修饰符不能用于局部变量;
    -局部变量只在声明它的方法、构造方法或者语句块中可见;
    -局部变量是在栈上分配的。
    -局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
    实例1     http://www.iis7.com/a/lm/fwqdq/  IIS7服务器大全
    在以下实例中age是一个局部变量。定义在pupAge()方法中,它的作用域就限制在这个方法中。
    public class Test{ 
       public void pupAge(){
          int age = 0;
          age = age + 7;
          System.out.println("Puppy age is : " + age);
       }
       
       public static void main(String args[]){
          Test test = new Test();
          test.pupAge();
       }
    }
    以上实例编译运行结果如右:Puppy age is: 7
    实例2
    在下面的例子中age变量没有初始化,所以在编译时出错。
    public class Test{ 
       public void pupAge(){
          int age;
          age = age + 7;
          System.out.println("Puppy age is : " + age);
       }
       
       public static void main(String args[]){
          Test test = new Test();
          test.pupAge();
       }
    }
    以上实例编译运行结果如下:
    Test.java:4:variable number might not have been initialized
    age = age + 7;
             ^
    1 error

    转载于:https://my.oschina.net/u/4060676/blog/3015938

    展开全文
  • Java局部变量的作用域

    千次阅读 2018-05-28 11:01:25
    1、循环语句中变量public static void main(String args[]) { for(int i=0;i&lt;10;i++) { int sum =3; } System.out.println(i+" "+sum); }就上面最简单的程序说明吧,上面在for循环中定义...
  • 分类细则: 变量按作用范围划分分为全局变量(成员变量)和局部变量 ...局部变量按定义位置划分分为形参,方法局部变量,代码块局部变量   成员变量:  直接在类中声明的变量叫成员变量(又...
  • Java局部变量与成员变量

    万次阅读 2011-10-17 17:14:04
    java局部变量与成员变量: 在Java中,局部变量必须初始化;成员变量可以不用初始化,系统自动初始化。 class A { int a;//成员变量 public static void main(String[] args) { int b;//局部变量 } }
  • 首先我要明确Java中没有这一词“全局变量”,只有成员变量、局部变量、静态变量、常量! Java中成员变量与局部变量的区别: (1)代码区域不同: 成员变量声明在所有方法体外部使用范围可覆盖到整个类。 局部...
  • 一、 局部变量(在方法中使用的变量,包括在类中定义而在方法使用) 1.局部变量必须赋初值; 2.局变的作用域是方法内部,方法执行完毕自动销毁; 3.当局变与全局的名字一样时,局部优先; 4.访问修饰符不能用于局变...
  • Java实例变量、类变量与局部变量

    万次阅读 多人点赞 2015-12-21 22:43:20
    但在Java多线程中,实例变量是多个线程共享资源,要注意同步访问时可能出现的问题。 public class Demo { //以下都是实例变量(成员变量、对象变量) private String nameString; public int a
  • java局部变量没有默认值

    千次阅读 2018-01-13 17:32:19
    今天做到一道题,关于java局部变量没有默认值,编译不能通过的这个知识点的考察 public class Test{ String a; public static void(String args[]){ String s; System.out.println(s); } } 此时a是成员变量...
  • 但是进行局部运算的时候,局部变量会屏蔽全局变量。 所以怎么区别使用局部变量和全局变量呢? Example:  Class A {  int a = 1  public static void main(String[] args) { A c = new A();  a = 2; ...
  • java局部变量必须要初始化的原理

    千次阅读 2018-02-28 19:22:56
    问题可能很多java开发人员也没有注意到,java语言中的局部变量是必须要初始化的,但是这是为什么呢?分析现在假如你是java语言的开发者,你已经将对象保存在了堆内存中,而将局部变量保存在了栈内存中,你会怎么做呢...
  • 根据定义变量位置的不同,可以将变量分为成员变量和局部变量。 成员变量是 定义在一个类的变量:类中方法外 局部变量是定义在一个方法内的变量:方法中 成员变量分为: 静态属性:随类的存在而存在,是在类加载的...
  • java中的局部变量和全局变量

    万次阅读 2017-08-18 15:09:10
    Java变量 java中主要有如下几种类型的变量: ...一、局部变量 ...只在特定的过程或函数中可以...局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会
  • Java中有两种变量,局部变量和成员变量。 成员变量可以不进行初始化,虚拟机也会确保它有一个默认的值。 局部变量不能这样做,我们必须对它进行赋值,才能使用它。 int i;//为初始化 System.out.println(i);//...
  • Java中对象的存储位置 String aa = new String();...3.Java局部变量的存储位置 局部变量存放在栈内存中 4.Java中全局变量和Static常量的存储位置 存放在全局数据区内存中 5.java中static修饰的成员变量及参数存...
  • 局部变量定义后,必须初始化,即赋值,才能使用(它没有默认值)。 而类变量定义后可以不初始化,因为它有默认值。 类变量(实例变量):定义在类中,方法体之外。成员变量前面加 static 修饰符。 局部变量:定义在...
  • 1.成员变量和局部变量:通常将类的属性称为类的全局变量(成员变量),将方法中的属性称为局部变量。  全局变量声明在类体中,局部变量声明在方法体中。    举个例子说明全局变量和局部变量: public class ...
  • java中的成员变量和局部变量的区别

    万次阅读 2016-08-29 11:20:59
    成员变量: ...方法内定义的变量、形参、代码块中定义的变量都叫做局部变量; 另外,成员变量可以不显式初始化,它们可以由系统设定默认值;局部变量没有默认值,所以必须设定初始赋值。 还有
1 2 3 4 5 ... 20
收藏数 274,286
精华内容 109,714
关键字:

java局部变量