最新【JavaSE基础】手把手教你玩转Static关键字,java初级开发面试题

Ending

Tip:由于文章篇幅有限制,下面还有20个关于MySQL的问题,我都复盘整理成一份pdf文档了,后面的内容我就把剩下的问题的目录展示给大家看一下

如果觉得有帮助不妨【转发+点赞+关注】支持我,后续会为大家带来更多的技术类文章以及学习类文章!(阿里对MySQL底层实现以及索引实现问的很多)

吃透后这份pdf,你同样可以跟面试官侃侃而谈MySQL。其实像阿里p7岗位的需求也没那么难(但也不简单),扎实的Java基础+无短板知识面+对某几个开源技术有深度学习+阅读过源码+算法刷题,这一套下来p7岗差不多没什么问题,还是希望大家都能拿到高薪offer吧。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

静态代码块 :static{  方法体 }

🐷 2.静态方法与静态变量全解析


首先我们要知道,被static修饰过的资源称之为静态资源,包括静态变量和静态代码块以及静态资源。其中调用静态变量和静态方法可以直接通过类名去访问。

public class Demo{

static int a =10;

int b=10;

public static void method(){

System.out.println(“静态方法”);

}

public void method2(){

System.out.println(“成员方法”);

}

public static void main(String[] args) {

//调用成员变量和成员方法

Demo demo = new Demo();

demo.method2();//成员方法

System.out.println(demo.b);//10

//调用静态变量和静态方法

Demo.method();//静态方法

System.out.println(Demo.a);//10

}

}

这里我们一定要发现:调用成员变量和方法时一定得有一个Demo类的实例对象demo,不然我们发现成员变量和方法都是无法访问和调用的。而我们发现静态变量和静态方法,居然可以通过类名Demo直接访问。这就能说明一个问题:**成员变量和方法依赖于对象而生存,而静态变量则依赖于类生存。**这就可以回归我们的小剧场了。

⭐️回归小剧场⭐️

阿花的这个班级就好比一个类,每一位同学都是属于这个类的对象,而每个同学的水壶都是属于自己的成员变量,是不可以给别的对象访问到的,要访问这个变量也必须经过对象。这个变量只属于这个对象,好比水壶只属于拥有它的同学。阿花带的大桶装水,它不属于任何一个同学,但它属于这个班级,也就是依赖于这个班级也就是这个类生存,每一位同学也就是每一个对象都是可以去访问它的,所以当我们需要访问它时,只需要在它前面加上类名即可,即使班里没有同学也就是没有对象,也不会影响我们的这个大水桶(静态变量)。当然无论班里有多少同学,始终也都只会有这一个大水桶,也就是无论有多少个对象,都不会影响静态变量。

🔔 **静态方法:**成员方法其实也类比与成员变量,它不需要依照某个类而存在,当我们想直接通过类名去调用某个方法时,我们就可以将它设为静态方法。因为不需要依赖对象,既然没有对象,那就更谈不上this关键字的。所以

🐤 在静态方法中是不能调用非静态的方法和变量,但是在非静态的方法却可以访问静态成员变量和方法(这就是为啥每次发现主函数调用某方法会报错,因为主函数是静态方法,而你调用的函数非静态)

🌰3.静态代码块

======================

静态代码块的格式在前面已经写过了,那它既不是修饰一个变量,又不是修饰一个方法,而是修饰一段代码,它到底有什么性质呢?

阿花的班级去春游的很开心,这时他们需要一起坐车回去了,这时大家需要排队等车门打开然后挨个上车,那么请问门需要打开几次?大家肯定都明白,门只用打开一次,从第一个开始进去之前就打开就好。总不能每进一个人就关上门重新打开进下一个人吧(当然也不是不可以 👀 )这种只需要在最开始完成一次的操作,我们就可以把它放入到静态代码块中,它只会在最开始执行一次,后面就再也不会执行了。这时就有问题了,最开始到底是什么时候?答案是-------------类加载。

🌲 什么是类加载?


类加载这个东西,短时间内是无法讲清楚的,有兴趣的可以去搜索一下,在这里我只短暂地和提及。类加载顾名思义肯定是和类有关,我们知道我们写的代码都是交给jvm去处理的,我们经常会在代码中定义各种各样的类,什么学生类Studeng啊等等,jvm肯定是需要去认识它和处理它的,这种认识的过程就叫类加载,当然认识只需要一次(毕竟你认识一个异性也不需要多次认识吧 🙈 )

类加载只会执行一次,静态代码块会在类加载时执行,所以永远也只会执行一次。如果有多个静态代码块,则它们按照顺序执行。其实所有静态资源都在类加载时就初始化好了,也就是说包括静态变量和方法。

🌲静态代码块有什么好处 ?


你问我有什么好处?你说前面门一开一关上一个人上的快,还是开一次所有人上完的效率更快?当然只是开个玩笑,其实静态代码块同样类似前面的静态变量和方法的那个味道,它属于类而不属于实例对象,它可以优化我们的程序,提升效率(还不懂就再去看看上车的例子👿)

当然静态资源不会被虚拟机GC回收掉,这样内存负荷会很大,但是非static方法会在运行完毕后被回收,减轻内存压力(所以不要想着每次写个方法就加个static上去 👍 )

public class Demo{

static {

System.out.println(“我是类加载”);

}

public static void main(String[] args) {

System.out.println(“我不是类加载”);

}

}

🐋  这样就很容易看出来static代码块执行的时间很早(类加载时期)

🌺 3.静态变量VS普通成员变量

=================

🍋 1.所属不同 -----静态变量属于类,也叫类变量。成员变量属于对象,所以也叫实例变量(对象变量)

🍋 2.内存存储位置不同-------静态变量存储在方法区,成员变量存储在堆内存

🍋 3.内存出现时间不同--------静态变量随着类的加载而加载,随着类的消失而消失。成员变量随着对象的创建而存在,随着对象的消失而消失

🍋 4.访问方式不同---------静态变量可以通过类名访问,也可以通过对象访问。成员变量只能通过对象访问。

🎃 3.Static总结大全

================

1.static关键字可以修饰成员变量和成员方法

2.static关键字的特点:

🌹   被类的所有对象所共享(判断是否使用static的关键):

1.static修饰成员变量的值,该成员变量的值,就不存储在对象中了,而是大度存储了一份,被所有对象共享(多想想那个大水桶 💦 

2.当static修饰成员方法的时候,该方法被当前类的所有对象共享,当前类对象.方法(和普通成员方法从共享的角度,几乎没有太大区别)

🌹  语法:类名.静态变量          类名.静态方法(实参列表)

🌹 静态上下文中(静态方法体中),无法访问非静态的成员变量或方法,只能访问静态的成员和和方法

🌹static的使用场景:当我们希望某个成员变量的值,被该类所有对象共享时(再想想大水桶),可以使用static修饰。当我们需要定义一个工具方法给别人调用(其他类)时,此时可以将该方法定义为静态方法。                    
❤️ 创作不易,如果有用请点赞收藏,期待Java交流也别忘记关注

最后

即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:

Dubbo面试专题

JVM面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Java并发面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Kafka面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MongDB面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MyBatis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MySQL面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Netty面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

RabbitMQ面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Redis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Spring Cloud面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

SpringBoot面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

zookeeper面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

常见面试算法题汇总专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

计算机网络基础专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

设计模式专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

85Jz1Ycb-1715653616874)]

设计模式专题

[外链图片转存中…(img-wLmMxcP2-1715653616874)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值