java基础---java变量类型

打印 上一主题 下一主题

主题 893|帖子 893|积分 2679

java变量类型

  1、局部变量

    概念:类的方法中的变量
  2、实例变量

    概念:定义在类里面,方法体、构造方法和语句块外,且不被static修饰的变量,用于描述一个类中包含哪些数据  3、类变量

    概念:独立于方法之外的变量,有static修饰
    
  1. public class able{
  2.             
  3.             static int a=0;//类变量
  4.         
  5.             String b="hello world";//实例变量
  6.             public void method(){
  7.         
  8.                         int c=0;//局部变量
  9.         }
  10.    
  11. }
复制代码
扩展:

  成员变量分为实例变量和类变量
 
  成员变量的定义:

       声明成员变量语法

          【public】【protected】【private】【static】【final】
          含义如下:
          【public】【protected】【private】:成员变量的访问权限
          【static】:表示该成员变量为类变量,也成为静态变量
          【final】:表示将该成员变量声明为常量
          【type】:表示变量的类型
          【variable_name】:表示变量名称
  java四种访问范围:

      1、当前类  2、同一包  3、子类  4、全局
  访问权限从小到大

      private-->default-->protected-->public

 
1、局部变量

    特点:

      1、局部变量声明在方法、构造方法或者语句块中
      2、局部变量在方法、构造方法、或者语句块被执行的时候创建,当这些被执行完成后,变量将会被销毁
      3、访问修饰符不能用于局部变量
      4、局部变量只能在声明它的方法、构造方法或者语句块中可见
      5、局部变量是在栈上分配的
      6、局部变量没有默认值,所以局部变量被声明后,必须经过初始化(赋值),才能被使用
    存放地址:栈内存 
    生命周期:作用的范围结束,变量空间会自动释放
扩展:

  变量使用原则:
    就近原则,首先在局部范围找,有就用,接着在成员位置找。
    局部变量可分为:
      1、形参(形参列表,可以由多个或者0个组成,中间用逗号隔开)
      2、方法局部变量
      3、代码块局部变量
       扩展:变量与对象
        变量是用来存储数据的,它的定义包含变量名、变量类型和作用域几个部分,对象是一个类功能模块的集合,里面有方法和属性,每一个方法能实现一个不同的功能,属性是决定对象执行结果的因素,属性只能读写。
       实例化、初始化和声明
        实例化:用类创建对象的过程称为实例化,实例化一个对象就是为对象开辟内存空间,或者不用声明,直接用new构造函数名,创建一个临时对象。类不同于函数(方法),定义完之后是无法直接使用的,因为类只是一个抽象的概念,需要通过关键字new来实例化,才可以被使用
  1. Date date=new Date()
复制代码
        初始化:给声明的对象赋值的过程。string arr=“hello”;
        声明:指使用一个对象的时候,先定义属于哪个类型 。string arr;
        总结:
          声明:只生成对象不赋值的过程
          初始化:是给对象赋值的过程
          实例化:是使用new为对象分配内存的过程
2、实例变量(成员变量)(对象的成员变量)

    本质成员变量,只是实例是针对类而言,实例是值类的声明
       1、实例变量在对象创建的时候创建,在对象被销毁的时候销毁
       2、实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方法获取实例变量信息
       3、实例变量可以声明在使用前或者使用后
       4、访问修饰符可以修饰实例变量
       5、实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。
    成员变量初始化:
      1、默认初始化
      2、就地初始化 定义成员变量的时候便进行初始化
      3、类外初始化  通过对象的引用进行初始化(最多)(私有的时候可以用setXXX()、getXXX()方法实现)
        
  1. public static void main (String [] args){
  2.         
  3.                     Person person = new Person();
  4.                     person.name = "张三";
  5.    
  6.                     person。age=11;
  7.         }
复制代码
       4、通过实例代码块和静态代码块进行初始化
       5、通过构造方法进行初始化
3、类变量(静态变量、静态属性、类属性)

    解释:是指该类所有对象共享的变量任何一个该类的对象去访问它时,取得都是一样的值
    访问方式:通过 类名.静态成员变量名  进行访问
    存储:静态存储区。
    特点:只有一份,且不依赖对象
    生命周期:在程序开始时创建,在程序结束时销毁
    注意:在类中以static关键字声明,但是必须在方法、构造方法、语句块之外。
       静态变量被除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变,很少单独使用static声明变量
       与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型
       默认值与成员变量类似
       类变量被声明为public static final类型时,类变量名称一般建议使用大写字母
    使用时机:
       1、变量所包含的对象体积较大、占用内存较多
       2、变量所包含的对象生命周期较长
       3、变量所包含的对象数据稳定
       4、该类的实例有对该变量包含对象的共享需求
       
静态变量和成员变量的区别
  1、生命周期不同
    成员变量:随着对象的创建而存在,随着对象被回收而释放
    静态变量:随着类的加载而存在,随着类的消失而消失
  2、调用方式不同
    成员变量:只能被对象调用
    静态变量:可以被对象调用,还可以被类名调用
  3、别名不同
    成员变量:实例变量、全局变量
    静态变量:类变量、类属性、静态属性   
  4、存储位置不同
    成员变量:堆内存的对象中,对象的特有数据
    静态变量:数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据
  
静态变量与非静态变量的区别
  1、访问权限,静态变量不能访问非静态变量,如果硬要访问,只能用对象区引用非静态成员变量
  2、静态变量在内存空间只有一份,永远一份
  3、非静态变量只要new出来一个对象引用就会在内存中分配一份空间给它
  4、存放 地点不一样,静态变量是在栈空间,非静态变量存放在堆空间
扩展:
  实例变量(成员变量)与类变量(静态变量、静态属性、类属性)不赋值下的默认取值
  byte short int long默认取值为0(整数类型)
  float默认取值为0.0f;(浮点类型 单精度)
  double默认取值为0.0;(浮点类型 双精度)
  boolean默认取值为false;(布尔类型)
  char默认取值为“\u0000”(字符类型 最终输出为空) 表示Unicode字符
全局变量:
  定义在类里方法体外的变量。作用于整个文件中,直接被类调用。
  作用域:全局可见
  存储空间:静态存储区
  优先度:全局变量优先度低于局部变量
  优点:程序运行快一点,因为内存不需要分配
  缺点:占用更多的内存,因为其生命期长
  全局变量作用域的扩展和限制:
  1、扩展:使用extern关键字可以对全局变量的作用域进行扩展
  2、限制:使用static关键字可以限制全局变量的作用域(又称之为隐藏)
总结一下所有变量的存放位置:
  局部变量位于栈内存、静态变量位于方法区、实例变量位于堆内存、方法的字节码位于方法区、对象本身位于堆区、对象的引用位于栈区
 
  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表