首先我们先来说说jvm内存模型:

jvm内存分为:方法区、堆、栈和程序计数器。

下面我们来简单的说说方法区、栈和堆:

方法区:是各个线程共享的区域,存放类信息/常量/静态变量;

栈:其实每个线程都会分配一个栈,其生命周期与线程一样,其执行一个方法就会生成一个栈帧,栈帧包含了方法中的局部变量。

堆:所有类的实例化都存放在堆里面。

(视频教程推荐:java视频教程)

1、从内存的角度分析用静态和非静态的区别

static修饰成员变量和成员方法,其值存放的地址是方法区的常量池,其执行的顺序为在加载类的时候就将static修饰的变量名或者方法存放到常量池了。

非静态修饰的变量可以是成员变量和局部变量。

成员变量随对象存放的地址一样,因为它属于类的一部分,其地址在堆中。

局部变量一般情况下在方法中声明,其存放的地址在栈中。

二、从运行的机制分析

在源码被编译器编译成.class字节码文件的时候,一旦类被加载,用了static修饰的块/变量/方法就会马上存放到方法区,与此同时非静态的块/变量/方法还没有编译,一旦将非静态的变量存放到静态方法里面,程序计数器指示到局部变量的时候就会报错,因为这个时候根本还没有编译到局部变量这一块。

java中静态是什么,java中静态和非静态有什么区别相关推荐

  1. java怎么进行静态引用_java – 如何解决“无法对非静态字段或方法进行静态引用”?...

    我似乎无法找到我在静态方法中使用非静态引用的位置,代码是: public class Item { public static final Map ITEM_STATUSES = new HashMa ...

  2. java heap space 解决方法_Java静态方法/变量,非静态方法/变量的区别,今天一并帮你解决

    静态/非静态 方法/变量的写法 大家应该都明白静态方法/字段比普通方法/字段的写法要多一个static关键字,简单写下他们的写法吧,了解的可以直接略过 class Test{ // 静态变量 publ ...

  3. java 静态变量方法,java中的静态变量和静态方法

    java中的静态变量和静态方法 发布时间:2020-06-25 20:15:28 来源:亿速云 阅读:100 作者:Leah 今天就跟大家聊聊有关java中的静态变量和静态方法,可能很多人都不太了解, ...

  4. java键盘输入字符串静态变量_Java 中为什么样在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?老师说字符串常量和静态变量放在data segment中...

    在上一篇文章中,小编为您详细介绍了关于<C字符串以'\0'结尾的问题?为什么样C语言字符串常量可以当做指针>相关知识.本篇中小编将再为您讲解标题Java 中为什么样在静态方法中可以调用的方 ...

  5. java中代码块之静态代码块和非静态代码块

    一.代码块: 语法:使用{}包裹的,可以在{}中写代码. 修饰符:static 或者不修饰. static修饰的为静态代码代码块. 格式: //静态代码块,随着类的加载児执行static{System ...

  6. java初始化例子_Java 非静态初始化的例子

    在继承关系中,静态初始化.非静态初始化和构造函数的执行顺序 public class ExA { static { System.out.println("父类--静态代码块"); ...

  7. java 非静态 初始化_Java非静态代码块和实例初始化过程

    1 非静态代码块 非静态代码块特点 ①可以为实例变量(非静态的属性)初始化 ②每次创建对象的时候,都会执行一次,且先于构造器执行 ③若有多个非静态的代码块,那么按照定义的顺序从上到下依次执行 ④代码块 ...

  8. java继承父类执行顺序_java中子类继承父类程序执行顺序问题

    Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证.比如新建一个测试父类. public ...

  9. java 静态变量加载顺序_java 成员变量 静态变量代码块 静态代码快加载顺序

    序言 基类A 类B继承实现了A类 1在new B一个实例时首先要进行类的装载.(类只有在使用New调用创建的时候才会被java类装载器装入)2,在装载类时,先装载父类A,再装载子类B 3,装载父类A后 ...

  10. java如何调用static类_Java中的static的使用指南

    一.Java中的static使用之静态变量 1.Java 中被static修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.且优先于对象存在.静态成员可以使 ...

最新文章

  1. python语言有什么用-Python到底有什么用?为什么那么多人都在学Python?
  2. HTML表单的enctype属性详解{转}
  3. Android WindowManager和WindowManager.LayoutParams的使用以及实现悬浮窗口的方法
  4. 我眼中的2011年互联网大事记
  5. 十大Java编程工具
  6. 英语口语常用1368词汇
  7. pdf照片显示正常打印时被翻转_2020考研 | 准考证怎么打印你知道吗?
  8. Unity Addressable学习笔记二(Hosting热更新)
  9. HTTP 404错误你知道是什么意思吗
  10. 一些关于TIA博图软件使用规范
  11. 邮箱邮件服务器迁移服务器要多久生效,邮件服务器迁移方案让企业邮箱安心“搬家”...
  12. 经纬坐标(BLH)数据创建.kml文件小工具设计 Java版
  13. Android技术分享| 【Android 自定义View】多人视频通话控件
  14. js的高亮关键写法,简单粗暴,行之有效
  15. 王者荣耀 让好友看到的括号中不显示默认备注
  16. python如何合并excel文件
  17. 什么是网站内链接及内链优化的好处作用?
  18. 齐悟机器人王一_专注智能对话 王一校友当选“2020年度全美十大华人杰出青年”...
  19. 了解无线通信技术WiFi,Sub 1G,Zigbee
  20. 宽带放大器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. yii2-basic后台管理功能开发之四:图片上传FileInput
  2. apache_tomcat整合应用
  3. SQL Server 2014 内存优化表(1)实现内存优化表
  4. MySQL必知必会教程:深入理解MySQL技术内幕
  5. 在C#中使用SqlDbType.Xml类型参数
  6. VB.Net编程实现Web Service的基础
  7. 怎么装python解析器_linux 下安装 python 解析器
  8. python随机生成车牌_Python实现随机生成任意数量车牌号
  9. GDC服务器主机与证书不匹配,调用web服务soap时,错误https URL主机名与客户端信任库中服务器证书上的公用名(CN)不匹配...
  10. graphic头文件函数_graphics.h头文件详解