java变量类型

1、局部变量

概念:类的方法中的变量

2、实例变量

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

3、类变量

概念:独立于方法之外的变量,有static修饰

public class able{

static int a=0;//类变量

String b="hello world";//实例变量

public void method(){

int c=0;//局部变量

}

}

扩展:

成员变量分为实例变量和类变量

成员变量的定义:

声明成员变量语法

【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来实例化,才可以被使用

Date date=new Date()

初始化:给声明的对象赋值的过程。string arr=“hello”;

声明:指使用一个对象的时候,先定义属于哪个类型 。string arr;

总结:

声明:只生成对象不赋值的过程

初始化:是给对象赋值的过程

实例化:是使用new为对象分配内存的过程

2、实例变量(成员变量)(对象的成员变量)

本质:成员变量,只是实例是针对类而言,实例是值类的声明

1、实例变量在对象创建的时候创建,在对象被销毁的时候销毁

2、实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方法获取实例变量信息

3、实例变量可以声明在使用前或者使用后

4、访问修饰符可以修饰实例变量

5、实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。

成员变量初始化:

1、默认初始化

2、就地初始化 定义成员变量的时候便进行初始化

3、类外初始化 通过对象的引用进行初始化(最多)(私有的时候可以用setXXX()、getXXX()方法实现)

public static void main (String [] args){

Person person = new Person();

person.name = "张三";

person。age=11;

}

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关键字可以限制全局变量的作用域(又称之为隐藏)

总结一下所有变量的存放位置:

局部变量位于栈内存、静态变量位于方法区、实例变量位于堆内存、方法的字节码位于方法区、对象本身位于堆区、对象的引用位于栈区

Copyright © 2088 天地武侠修行录 - 国风网游活动秘境 All Rights Reserved.
友情链接