JAVASE基础_03.面向对象编程--static关键字

本文深入探讨了静态成员变量和方法的概念,解释了它们如何在类加载时被初始化,并存储在方法区,为所有对象共享同一份内存。同时,阐述了静态方法的特性及限制,以及静态代码块的作用和执行时机。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 在类中,用static声明的成员变量为静态成员变量,他为该类的共有变量,在第一使用时被初始化,对于该类的所有对象来说,static成员变量只有一份
  • 用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可以访问非static的成员

静态方法不再是针对于某个对象调用,所以不能访问非静态成员

  • 可以通过类名、对象引用两种方式访问静态成员

 

静态成员变量 也叫 静态属性

  1. 类加载时 就分配了内存 并分配到了方法区 静态属性与堆栈无关
  2. 在方法区,只存储一份内存 所有的类对象公用该段内存
  3. 因为与对象并没有直接关系 可以通过类名.属性名的方式访问 也可以通过对象.属性名 的方式访问,一般推荐用类名访问
  4. 因为所有对象共用一段数据内存 所以只要修改其中的值,则所有对象中对应的值都被修改
  5. 使用静态属性 可以节省内存 减少相同值的属性重复
  6. 静态属性推荐 静态数据 访问 不推荐动态数据访问

类加载:

当一个java程序要启动时,会先读取代码段中的java类代码到内存中,如果该代码段中存在静态属性或方法,则将静态属性和方法读取到内存中 保存数据到内存中方法区(方法区存放静态属性、方法、字符串常量)

静态数据&动态数据

  • 静态数据:在编译时就能判断的数据 例如:类
  • 动态数据:在运行时才能判断的数据 例如:new出来的对象 

 

静态方法

  • 可以访问静态属性和静态方法
  • 不可以访问非静态属性和非静态方法和this
  • 普通的方法可以访问静态方法

 

静态代码块

static代码块会在类加载时运行

静态代码段不可以执行非静态方法,可以执行静态方法

只执行一次,大部分用于初始化静态属性

 

类加载:

  1. 代码会保存在代码区;
  2. 当需要执行时,会先加载代码区代码;
  3. 会在方法区生成方法和静态属性;
  4. 执行静态代码段,为静态属性赋值
  5. 只执行一次

 

静态数据只能访问静态属性&静态方法,绝对不能访问动态属性&动态方法; 动态数据既能访问静态属性&静态方法,也能访问动态属性&动态方法

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值