精华内容
下载资源
问答
  • Java语言支持的变量类型有:局部变量成员变量类变量Java局部变量局部变量声明在方法、构造方法或者语句块中;局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;访问修饰符...

    转载:http://www.runoob.com/java/java-variable-types.html

    在Java语言中,所有的变量在使用前必须声明。

    Java语言支持的变量类型有:

    • 局部变量
    • 成员变量
    • 类变量

    Java局部变量

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

      • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
      • 当一个对象被实例化之后,每个实例变量的值就跟着确定;
      • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁
      • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息
      • 实例变量可以声明在使用前或者使用后;
      • 访问修饰符可以修饰实例变量
      • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
      • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
      • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
      • 实例:

        import java.io.*;
        public class Employee{
           // 这个成员变量对子类可见
           public String name;
           // 私有变量,仅在该类可见
           private double salary;
           //在构造器中对name赋值
           public Employee (String empName){
              name = empName;
           }
           //设定salary的值
           public void setSalary(double empSal){
              salary = empSal;
           }
      • 类变量(静态变量)

        • 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外
        • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
        • 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
        • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
        • 静态变量在程序开始时创建,在程序结束时销毁
        • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
        • 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
        • 静态变量可以通过:ClassName.VariableName的方式访问
        • 类变量被声明为public static final类型时,类变量名称必须使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。

        实例:

        import java.io.*;
        public class Employee {
            //salary是静态的私有变量
            private static double salary;
            // DEPARTMENT是一个常量
            public static final String DEPARTMENT = "开发人员";
            public static void main(String args[]){
            salary = 10000;
                System.out.println(DEPARTMENT+"平均工资:"+salary);
            }
        }
    展开全文
  • 关于java成员变量和局部变量

    万次阅读 多人点赞 2018-09-14 10:46:45
    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、变量的使用规则

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

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

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

     

     

     

    展开全文
  • 局部变量和成员变量区别 文章目录局部变量和成员变量区别 定义位置不同 成员变量:在成员方法外,在内部 局部变量:在成员方法内部 作用域不同 成员变量:整个中使用 局部变量:只能在成员方法中使用 ...

    局部变量和成员变量区别

    1. 定义位置不同
      成员变量:在成员方法外,在类内部
      局部变量:在成员方法内部

    2. 作用域不同
      成员变量:整个类中使用
      局部变量:只能在成员方法中使用

    3. 默认值不同
      成员变量:int:0, double:0.0, boolean:false, String:null
      局部变量:没有默认值,若要使用,必须赋值后才能使用

    4. 内存位置不同
      成员变量:在堆当中
      局部变量:在栈当中

    5. 生命周期不同
      成员变量:随着对象创建诞生,随着对象被GC回收而消失
      局部变量:随着方法入栈诞生,随着方法出栈消失

    额外补充

    1. 局部变量可以和成员变量同名;
    2. 局部变量不能和局部变量同名;
    3. 成员变量不能和成员变量同名;
    展开全文
  • 局部变量:直接写成员变量名 用本成员变量:this.成员变量名 用父类的成员变量:super.成员变量名 例子:↓ Father:父类中定义了 int num=10; Child extends Father:子类继承父类,并且自有成员变量 ...

    用局部变量:直接写成员变量名

    用本类的成员变量:this.成员变量名

    用父类的成员变量:super.成员变量名

    例子:↓

    Father:父类中定义了 int num=10;

    Child extends Father:子类继承父类,并且自有成员变量 int num=20;

    public class Child extends Father{

        int num=20;

        public void method(){

            int num=30; //此时父类成员变量、子类成员变量、子类方法中的局部变量三者重名

            System.out.println(num);           //输出30,此时调用的是局部变量num

            System.out.println(this.num);    //输出20,此时调用的是子类成员变量num

            System.out.println(super.num); //输出10,此时调用的是父类成员变量num

        }

    }

    觉得有用的小伙伴请点赞、评论或收藏一下多支持支持博主小弟,跪安~~

    展开全文
  • /*局部变量和成员变量的不同:1、定义的位置不一样局部变量:定义在方法内部成员变量:在方法外部,直接写在中2、作用范围不一样局部变量:只有方法中能使用,除了方法就不能用成员变量:整个都可以用3、默认值...
  • Java之成员变量和局部变量成员变量:在类范围里定义的变量。成员变量又分为实例属性(不用static修饰)和类属性(用static修饰)。类属性和实例属性统称为成员变量。类属性在类的准备阶段开始存在,直到系统销毁这个类...
  • java中一般有三种变量:变量,成员变量和局部变量变量1.下面先看变量,看下面这个例子public class Demo6{public String name;public int age;public static String sex="男";public Demo6(String name, int ...
  • JAVA局部变量和成员变量的区别 成员变量与局部变量的区别 1、在中的位置不同 成员变量:在中方法外面 局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中) 2、在内存中的位置不同 成员变量:在堆...
  • 局部变量和成员变量的不同: 1、定义的位置不一样 局部变量:定义在方法内部 成员变量:在方法外部,直接写在中 2、作用范围不一样 局部变量:只有方法中能使用,除了方法就不能用 成员变量:整个都可以用...
  • 局部变量和成员变量的不同: 1、定义的位置不一样 局部变量:定义在方法内部 成员变量:在方法外部,直接写在中 2、作用范围不一样 局部变量:只有方法中能使用,除了方法就不能用 成员变量:整个都可以...
  • 原标题:Java 成员变量变量、局部变量的区别变量名首写字母使用小写,如果由多个单词组成,从第 2 个单词开始的其他单词的首写字母使用大写。如果局部变量的名字和成员变量的名字相同, 要想在该方法中使用成员...
  • Java局部变量和成员变量区别从JAVA中定义方式,和位置,以及现在定义中属性来进行区分 从JAVA中定义方式,和位置,以及现在定义中属性来进行区分 区别一:定义的位置不同 定义在中的变量是成员变量 定义在方法...
  • 成员变量: this.成员变量名 父类的成员变量: super.成员变量名 现在这里有一个父类,我定义了一个num,如下: package cn.itcast.day0608.demo05; public class Demo03FU { int num = 10; } 我再定义一...
  • Java局部变量和普通成员变量的区别 定义 局部变量: 定义在方法内部的变量,其中形参属于局部变量。特别注意,main方法也是一个方法! 成员变量: 定义在中,方法外的变量。有一种说法称成员变量为全局变量,但...
  • java局部变量和成员变量 1. 定义的位置不一样 局部变量:在方法的内部 成员变量:在方法的外部,直接写在当中 2. 作业范围不一样 局部变量:只有方法当中才能使用,出了方法就不能再用 成员变量:整个全都可以...
  • 对比成员变量和局部变量的不同: 1.定义的位置不一样【重点记忆】 局部变量:定义在方法内部。 成员变量:直接定义在当中,方法外面的。 2.内存中的位置不一样 局部变量:在 栈 内存中,stack。 成员变量:在 ...
  • 文章目录Java成员变量和局部变量成员变量实例变量变量局部变量形参变量方法局部变量代码块局部变量关于命名 Java成员变量和局部变量 变量相当于一个有名称的容器,用于装不同类型的数据。而Java中根据变量定义位置...
  • /*** 成员变量和局部变量***/public classVariableTest {//成员变量public static String staticname = "属性";public String nostaticname = "实例属性";//没有初始化的成员变量public staticString staticname1;...
  • Java 面向对象中的两 变量 : 成员变量和局部变量
  • 成员变量和局部变量 1.定义的位置不一样 局部:在方法的内部 成员:在方法的外部,直接写在中 2.作用范围不一样 局部:只有方法中可以使用,出了方法不能再用 成员:整个通用 3.默认值不一样 局部:没有默认值,...
  • 导读学习Java的过程中,一开始很容易被这些各种变量绕晕,这篇博客主要介绍了这几种变量之间的关系区别。例程package com.cunyu.demo public class Demo { private String name; //成员变量、实例变量 private...
  • 局部变量 定义在的方法内或者代码块内的...中所有的方法代码块都可以访问成员变量 对于没有初始化的成员变量,系统会指定默认的值 默认值 全局变量默认值 数据类型 默认值 数据类型 默...
  • 局部变量和成员变量的区别: ** 1.声明的位置: 局部变量:方法体{ }中,形参,代码块{ }中 成员变量中方法外面,又可以细分为两种 变量:有static修饰 实例变量:没有static修饰 2.修饰符 局部变量:final ...
  • 局部变量和成员变量的区别 1.定义的位置不一样【重点】 局部变量:在方法内部 成员变量:在方法的外部,直接写在当中 2.作用范围不一样【重点】 局部变量:只有方法当中可以使用,出了方法就不能再用 成员变量:...

空空如也

空空如也

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

java局部变量和类成员变量

java 订阅