面向对象篇 static 关键字

static 关键字

主要用途:

一.static关键字的用途:static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途
这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是:
方便在没有创建对象的情况下来进行调用(方法/变量)

static 方法

当static 修饰成员方法时,该方法称为类方法或静态方法
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。

static关键字描述

  • static关键字可以用于修饰类的成员变量、方法和代码块。
  • static修饰的变量称为静态变量。
  • static修饰的方法称为静态方法。
  • static修饰的初始化代码块,称为静态初始化块。
  • static修饰类,静态内部类

静态变量

用static修饰的变量叫做静态变量(类变量
静态变量的特征:类的所有对象共享同一个静态变量。
静态变量不属于任何对象直属于类

非静态变量 与静态的区分

概念
跟对象有关,对象创建时才会在内存中出现,而静态变量被类名调用,在类创建后就出现所以和类相关。

存储位置
普通成员变量 内存存储在堆内存当中。
静态变量存出在堆内存 方法区中的静态区中。

内存周期
静态变量早于对象创建之前存在。
因为静态属于类,随着类而改变
非静态属于对象,随着对象而改变

访问方式
非静态变量只能用对象名访问
静态变量既可以对象,也可以类名访问

静态方法

静态只能访问静态,但是非静态能访问静态
静态方法可以被类名直接调用,(主要用这种调用方法)
非静态方法不能通过类名直接调用成员方法

在API中Math类有许多的静态方法

静态初始化代码块

初始化代码块的执行时机是什么时候?
初始化代码块优于构造方法之前运行

比如说创建了8个对象,会运行多少次?
初始化代码块每创建一个对象就会运行一次
静态代码块在类中加载只会运行一次

静态代码块只会执行一次,若和初始化代码块同时出现,谁先执行谁后执行?
静态代码块先执行,因为静态代码块属于类,类加载会执行,普通成员代码块属于对象,对象创建才会执行

//初始化代码块
{
System.out println("初始化代码块执行了")
}
//静态初始化代码块
static{
System.out println("静态初始化代码块执行了")
}

无参构造和初始化代码块的功能?

无参构造和初始化代码块都是对数据初始化。
同时存在,初始化代码块先执行,解决数据陈杂问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值