【Java学习路线】2.2静态属性及方法

静态属性及方法

什么是静态属性和非静态属性?

    静态属性是指被static修饰符修饰的类、方法、变量或代码块等。
    非静态属性是指没有被static修饰的。

static:

用static修饰的变量称为静态属性,又叫类变量。 用static修饰的方法称为静态方法,又叫类方法(静态方法里,无this)
用来修饰初始化语句块,称为静态初始化语句块

static修饰的属性和方法:

静态属性和静态方法是类的属性和方法,与类相关,与对象无关
类的东西(静态属性,静态方法,类常量),通过" 类名:: "来调用
静态属性和静态方法都可以加权限控制符,类常量没有

静态属性和非静态属性的特点是什么?
静态属性特点:

   1. 一声明就被存储在栈中,直接占据内存,可以快速稳定的调用。
   2. 生命周期长,从jvm加载开始到jvm加载结束。
   3. 全局唯一,在一个运行环境中,静态变量只有一个值,任何一次修改都是全局性的影响。
   4. 占据内存,程序中应该包含尽量少的static
   非静态属性特点:
   1. new的时候占据内存,实例化后才能调用。
   2. 非静态变量赋值不发生冲突。

静态变量和非静态变量的区别

   静态变量是用static修饰的变量,静态变量不需要new出对象引用来调用,它可以直接用类名直接调用,当然用对象引用也能调用它,只是没那个必要。

   非静态变量则必须用对象引用调用。

成员变量和静态变量的区别

    1. 成员变量所属于对象,所以称为实例变量,静态变量所属于类,所以称为类变量。

    2. 成员变量存在于堆内存中,静态变量存在于方法区中。

    3. 成员变量随着对象创建而存在,随着对象被收回而消失,内存空间只有一份,也只有一份大家共享。静态变量随着类的加载而加载,随着类的消失而消失(new出一个对象就会在内存中分配一块空间给它)。

    4. 成员变量只能被对象调用,静态变量可以被对象调用,也可以被类名调用。所以可以说成员变量是对象的特有数据,静态变量是对象的共享数据。

静态方法
类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。

静态方法为类所有,可以通过对象来使用,也可以通过类来使用。

但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用。静态方法和实例方法的区别主要体现在两个方面:

1、在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

2、静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

静态方法与实例方法的区别:

静态方法只能访问静态成员,实例方法可以访问静态和实例成员。

之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。

同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。

基于同样的道理,静态方法中也不能使用关键字this。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值