【重难点】【Java基础 07】变量类型、内部类、处理器指令优化

文章目录

  • 【重难点】【Java基础 07】变量类型、内部类、处理器指令优化
  • 一、变量类型
    • 1.对比
  • 二、内部类
    • 1.介绍
  • 三、处理器指令优化
    • 1.介绍
  • 参考链接

一、变量类型

1.对比

Java 支持的变量类型有:

  • 类变量:独立于方法之外,用 static 修饰
  • 实例变量:独立于方法之外,没有 static 修饰
  • 局部变量:存在于类的方法中

类变量

  • 无论一个类创建了多少对象,类只有类变量的一份拷贝
  • 静态变量存储在静态存储区
  • 静态变量在类加载时被创建,在程序结束时被销毁
  • 与实例变量具有相似的可见性
  • 静态变量可以通过:ClassName.VariableName 的方式访问
  • 静态变量有默认值

实例变量

  • 一个类被实例化后,实例变量的值也会跟着确定
  • 实例变量存储在堆中
  • 实例变量在对象创建的时候创建,在对象被销毁时销毁
  • 实例变量有默认值

局部变量

  • 局部变量存储在栈中
  • 局部变量在方法或者语句块被执行的时候创建,当它们执行完后,局部变量就会被销毁
  • 局部变量不能用访问修饰符修饰
  • 局部变量只在声明它的方法或者语句块中可见
  • 局部变量没有默认值

二、内部类

1.介绍

普通内部类:

  • 普通内部类的方法可以访问外部类的所有成员
  • 普通内部类对于同一个包的其他类是隐藏的
  • 普通内部类对象隐式地保存着外部类的引用,这意味着外部类没用了 GC 也不会回收
  • 普通内部类的成员不能被外部类直接使用,如果要使用,需要显式地创建内部类对象
  • 外部类的静态方法不能创建普通内部类的对象
  • 普通内部类不允许定义静态成员

静态内部类:

  • 静态内部类不能访问外部类的实例成员,只能访问外部类的类成员
  • 外部类可以使用静态内部类的类名调用静态内部类的类成员

内部类的使用场景和好处

  • 内部类使得多继承的解决方案变得完整,每个内部类都能独立地实现一个接口,所以无论外部类是否已经实现了某个接口,对于内部类都没有影响。
  • 方便将存在一定逻辑关系的类组织在一起,并且对外界来说是隐藏的
  • 方便编写事件驱动程序
  • 方便编写线程代码

三、处理器指令优化

1.介绍

处理器为了使处理器内部的运算单元能够被充分利用,处理器可能会对输入代码进行乱序执行处理,这就是处理器指令优化。除了现在很多流行的处理器会对代码进行乱序处理,很多编程语言的编译器也会有类似的优化,比如 JVM 的即时编译器(JIT)也会做指令重排。可想而知,如果任由处理器优化和编译器指令重排的话,就会导致各种各样的问题,因此我们可以禁止指令重排,使用 volatile(这里不深入展开,后续有多线程并发的专题会深入探讨)


参考链接

建议结合以下链接理解

Java 内部类详解
内部类与静态内部类详解

Java的内存模型(CPU和缓存特性,处理器的优化和指令重排,并发编程的问题,Java内存模型,Java内存模型的实现)

【重难点】【Java基础 07】变量类型、内部类、处理器指令优化相关推荐

  1. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  2. php byte stringbuffer,重拾java基础(十三):String姐妹StringBuffer、StringBuilder总结

    重拾java基础(十三):String姐妹StringBuffer.StringBuilder总结 一.StringBuffer类概述buffer:缓冲 2. 字符串缓冲区,跟String非常相似,都 ...

  3. Java基础笔记 – 枚举类型的使用介绍和静态导入

    Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由 arthinking 发表于404 天前 ⁄ Java基础 ⁄ 暂无评论 ⁄ 被围观 1,433 views+ 1.枚举(Enum): JD ...

  4. js php 数据类型判断,【js基础】变量类型判断

    类型判断方法比较: 如果需要想详细了解,请看下文: 注:原封不动复制备份,防止删帖 在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null, B ...

  5. Java基础以及变量和运算符、包机制、javadoc生成

    Java基础以及变量和运算符.包机制.javadoc生成 注释.标识符.关键字 注释 标识符 关键字 标识符注意点 数据类型 强类型语言 弱类型语言 Java的数据类型 基本类型(primitive ...

  6. java基础之类变量和类方法:程序员成长之路

    java基础之类变量和类方法: 一.类变量(静态变量): 1.基本介绍: 类变量也叫静态变量.静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,渠道的都是相同的值,同样任何一个该类的 ...

  7. Python基础-高级变量类型

    Python基础-高级变量类型 1.高级变量类型 """ 数值型:int float bool compex 非数值型:str list set dict tuple & ...

  8. [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别

    [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...

  9. Java基础--成员变量和局部变量(区别、重名问题)

    成员变量和局部变量 注:所有的变量没有赋值是不能使用的!!! 两者的区别:定义的位置不同:成员变量:定义在类中成员位置的变量,称为实例变量 / 类变量,在类中方法外局部变量:定义在类中方法中作用范围不 ...

最新文章

  1. java中什么是空指针异常_java中空指针异常的问题,是怎么回事?请看代码
  2. java 按顺序取出json_java取json 的方法
  3. NPOI 导入Excel和读取Excel
  4. 字节跳动 ClickHouse 在实时场景中的应用和优化实践
  5. mysql的内存数据库,MySQL内存数据库的新选择-MariaDB4J
  6. Android 图形系统之gralloc
  7. IKVM 编程武林之.NET派的北冥神功
  8. 自定义ActionBar、Toolbar布局(解决自定义ActionBar布局左边始终有一点边距的问题)
  9. 计算机辅助设计试题 李明,计算机辅助设计B李明及答案.doc
  10. mvn jetty debug
  11. serverl sql 数据在哪里找_我是如何在SQLServer中处理每天四亿三千万记录的
  12. python运维知识大全_python基础知识
  13. 视频教程-EOS 入门实战-区块链
  14. cookie登陆qq空间的两种方式
  15. 梅兰商城案例代码编写(自己练习,纯手写,最后附有结果图以及精灵图)
  16. css3常用语言-动画
  17. 纪录大华的智能回调需要用到的事件列表
  18. 利用requests库和Xpath爬取猫眼电影榜单【Python】
  19. UNIX下PageDown健如何捕捉
  20. 软件测试到底在学什么

热门文章

  1. android 4.4 keyfactory.getinstance 报错_Android实际开发bug大总结
  2. 销售软件服务器设置,销售软件服务器
  3. python学习笔记2018-9-18
  4. 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算
  5. 一个简单CI/CD流程的思考
  6. GDB的工作原理及skyeye远程调试
  7. Redis之运维细节
  8. python sqlalchemy orm
  9. (12)Verilog HDL变量:reg型
  10. 开两个服务内存溢出_应用服务OkHttpClient创建大量对外连接时内存溢出