首页 文章 精选 留言 我的

精选列表

搜索[java],共10000篇文章
优秀的个人博客,低调大师

Java中静态跟非静态的区别总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/79926923 一.静态变量跟实例变量的区别:1.静态变量:由static修饰,在JVM中,静态变量的加载顺序在对象之前,因此静态变量不依附于对象存在,可以在不实例化类的情况下直接使用静态变量,如下代码所示。 public class StaticTest { static int a = 13; int b = 14; public static void main(String[] args) { int c = StaticTest.a; System.out.println(c); } } 1 2 3 4 5 6 7 8 9 静态变量属于类,不属于类中任何一个对象,因此静态变量又叫做类变量,一个类不管创建多少个对象(对象是类的一个实例),静态变量在内存中有且仅有一个。 2.实例变量:必须依附于对象存在,只有实例化类后才可以使用此类中的实例变量。 public class StaticTest { static int a = 13; int b = 14; public static void main(String[] args) { int d = new StaticTest().b; System.out.println(d); } } 1 2 3 4 5 6 7 8 9 二.静态方法跟实例方法的区别:1.静态方法:方法用static关键字修饰,静态方法与静态成员变量一样,属于类本身,在类装载的时候被装载到内存,不自动进行销毁,会一直存在于内存中,直到JVM关闭。使用时也是不需要实例化类,能够直接使用。静态方法无法被重写。 public class StaticTest { public static void MyStatic(){ System.out.println("这是StaticTest的一个静态方法"); } public static void main(String[] args) { StaticTest.MyStatic(); } } 1 2 3 4 5 6 7 8 9 10 需要注意的是:在静态方法中只能访问类中的静态成员跟静态方法,不能直接访问类中的实例变量跟实例方法,原因是静态方法在JVM中的加载顺序也在对象之前,直接使用实例变量跟实例方法的话,可能实例变量跟实例方法所依附的对象并没有被创建,会导致无法找到所使用的实例变量跟实例方法。要想使用实例变量跟实例方法可以采用如下方法:在静态方法中创建实例变量和实例方法所在的对象,通过这个对象来使用实例变量跟实例方法。如代码所示: public class StaticTest { int b = 14; public void MyMethod(){ System.out.println("这是StaticTest的一个实例方法"); } public static void MyStatic(){ StaticTest st = new StaticTest(); int e = st.b; st.MyMethod(); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2.实例化方法:属于实例对象,实例化后才会分配内存,必须通过类的实例来引用。不会常驻内存,当实例对象被JVM 回收之后,也跟着消失。 public class StaticTest { public void MyMethod(){ System.out.println("这是StaticTest的一个实例方法"); } public static void main(String[] args) { new StaticTest().MyMethod(); } } 1 2 3 4 5 6 7 8 9 10 11 附加:1.线程安全:静态方法是共享代码段,静态变量是共享数据段。既然是“共享”就有并发的问题。非静态方法是针对确定的一个对象的,所以不会存在线程安全的问题。2.如果静态方法在系统中定义太多,会占用大量的资源,最后造成内存溢出,所以静态方法不能滥用。

优秀的个人博客,低调大师

实现Java热部署的几种解决方案

百度百科:热部署,就是应用正在运行的时候就可以升级软件,而不需要重新启动应用。 spring-loaded 依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.5.RELEASE</version> </dependency> ps:据说此方法还需要手动编译(Ctrl + Shift + F9),请亲测! spring-boot-devtools 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional><!-- 表示依赖不会传递,之后依赖该module的项目如需继续使用,则需要再次引入 --> </dependency> JRebel 安装插件 安装插件 安装插件 激活JRebel 激活JRebel 启动运行 启动运行 若不起效 不起效 不起效 全局配置 全局配置 全局配置 对比 方式 效果 spring-loaded 需手动编译 spring-boot-devtools 会重新加载整个应用 JRebel 只加载修改类(当有错误时不会)。无需手动编译,不会重新加载整个应用 参考文章 SpringBoot初始教程之热部署(五)JRebel无限制版IntelliJ IDEA 热部署插件 JRebel 安装激活及使用intellij idea 热部署 jrebel 详细配置

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册