Java-对象-static关键字

  1. static关键字 修饰符 表示静态的意思
    (1) 可以用来修饰变量、方法、代码块
    成员变量 静态变量 成员方法 静态方法
    代码块 静态代码块(不能手动的调用 用于实现一些前置的必要的操作比如 数据初始化 连接数据库)
    (2) 我们之前写的类 每一个对象都是内存中单独的一份拷贝 对象的属性之间 没有任何关系 除了它们都来自同一个类 不能实现数据共享
    (3) 修饰变量的目的
    ① 在使用同一数据的情况下,减少不必要的内存开销
    ② 实现数据的共享
    ③ 静态修饰的变量内存中永远只存在一份,所以可以减少内存开销,实现数据工具。
    (4) 静态变量在本类中任何位置都可以访问,包括静态方法和非静态方法都可以,但是实例属性不能直接在静态方法中访问,需要new对象,你回想一下我们天天使用的main方法,因为静态修饰的优先级是高于对象的,当静态存在的时候还没有对象,无法访问。
    (5) 静态变量在其他的类中直接使用 类名+.静态变量 访问即可。访问规则依然遵从我们之前所讲的 private 、默认的、protected、public
    (6) 不能在方法中定义静态的属性,普通方法和静态方法,因为静态变量属于类级别的,只能定义在类内部。
    (7) 普通方法中可以直接访问静态方法,静态变量。
    (8)
    (9) 类的加载顺序
    ① 当我们第一次创建对象或者访问这个类的时候,jvm先去方法去加载这个类信息文件,然后再堆中开辟空间,第三步将栈中的引用指向堆中的对象。
    ② 静态的动态的
  1. 动态的:我们创建对象的过程就是动态的,在我们程序的运行过程中,动态的开辟空间,并且属性赋值,调用方法等操作……这些对象是会随着程序的执行动态开辟空间或者垃圾回收。
  2. 静态的:当我们的类开始加载就已经存在的内容,如果不手动进行清除,那么静态修饰的变量将会一直存在。
    (10) 静态代码块
    ① 当类加载的时候就执行,多个代码块按顺序执行,并且只执行一次。
    ② 目的:用来实现一些前置的操作,比如参数初始化,比如数据库连接等……
    (11) 动态(普通)代码块:当我们创建对象的时候执行,每创建一次将会执行一次。
    ① 可以做一些当我们需要创建的时候就执行的操作。并且每次创建对象都执行的操作。
    (12) 静态方法
    ① main方法就是我们最常用的静态方法
    ② 不能直接访问实例属性和方法,需要先new对象
    ③ 可以直接访问静态属性和方法
  1. 继承extends
    (1) 继承是java中重要的代码重用手段之一。
    (2) Java只支持单根继承,即一个类只能有一个直接父类,但是可以有N多个间接父类。
    (3) 子类与父类是 is-a的关系,即子类是父类。
    (4) 创建之类对象将默认调用父类的无参构造方法,因为先有父类再有子类。如果显式的调用了父类的有参构造,将不再调用父类的无参构造。
    (5) 子类可以继承父类的属性,方法。不能继承构造方法,可以调用。
    ① 在同一个包中,默认修饰的或者更大的范围。
    ② 不在同一个包中,必须使用protected修饰才能继承。
    (6) super关键字
    ① 可以用于访问父类的属性、方法、构造方法,用法同this关键字一致。
    ② 访问属性,直接super+点调用。
    ③ 访问方法,直接super+点调用。
    ④ 访问父类的构造方法,super(这里传入参数);必须在子类构造方法的第一句。
    ⑤ 只能写在子类的构造方法中

类加载
JVM首次使用某个类时,需通过CLASSPATH查找该类的 .class文件
将.class文件中对类的描述信息加载到内存中,进行保存
如:包名、类名、父类、属性、方法、构造方法。。。
加载时机:
创建对象。
创建子类对象。
访问静态属性。
调用静态方法。
.Class.forName(“全限定名”);

{//代码块}
写在类下的叫做 动态代码块 属性 后面 构造方法前面 与构造方法平齐

static{//代码块}
写类中 在动态代码块前加 static 叫做 静态代码块
静态代码块 是由 类加载触发的 只执行一次
可为静态属性赋值,或必要的初始行为

静态属性 由类加载触发 与静态代码块 的运行先后是 代码的顺序结果

1.静态属性初始化 2 .静态代码块执行 3.实例属性初始化 4.动态代码块执行 5.构造方法执行

静态方法只有被调用才能实现

创建对象
父类静态属性
父类静态代码块
父类实例属性
父类实例代码块
父类构造方法

//构建子类对象
父类静态属性
父类静态代码块
子类静态属性
子类静态代码块
父类实例属性
父类实例代码块
父类构造方法
子类实例属性
子类实例代码块
子类构造方法

///主动加载一个类
父类静态属性
父类静态代码块
子类静态属性
子类静态代码块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值