【重难点】【Java基础 07】变量类型、内部类、处理器指令优化
【重难点】【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】变量类型、内部类、处理器指令优化相关推荐
- java基础(十三)-----详解内部类——Java高级开发必须懂的
java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...
- php byte stringbuffer,重拾java基础(十三):String姐妹StringBuffer、StringBuilder总结
重拾java基础(十三):String姐妹StringBuffer.StringBuilder总结 一.StringBuffer类概述buffer:缓冲 2. 字符串缓冲区,跟String非常相似,都 ...
- Java基础笔记 – 枚举类型的使用介绍和静态导入
Java基础笔记 – 枚举类型的使用介绍和静态导入 本文由 arthinking 发表于404 天前 ⁄ Java基础 ⁄ 暂无评论 ⁄ 被围观 1,433 views+ 1.枚举(Enum): JD ...
- js php 数据类型判断,【js基础】变量类型判断
类型判断方法比较: 如果需要想详细了解,请看下文: 注:原封不动复制备份,防止删帖 在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null, B ...
- Java基础以及变量和运算符、包机制、javadoc生成
Java基础以及变量和运算符.包机制.javadoc生成 注释.标识符.关键字 注释 标识符 关键字 标识符注意点 数据类型 强类型语言 弱类型语言 Java的数据类型 基本类型(primitive ...
- java基础之类变量和类方法:程序员成长之路
java基础之类变量和类方法: 一.类变量(静态变量): 1.基本介绍: 类变量也叫静态变量.静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,渠道的都是相同的值,同样任何一个该类的 ...
- Python基础-高级变量类型
Python基础-高级变量类型 1.高级变量类型 """ 数值型:int float bool compex 非数值型:str list set dict tuple & ...
- [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别
[重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...
- Java基础--成员变量和局部变量(区别、重名问题)
成员变量和局部变量 注:所有的变量没有赋值是不能使用的!!! 两者的区别:定义的位置不同:成员变量:定义在类中成员位置的变量,称为实例变量 / 类变量,在类中方法外局部变量:定义在类中方法中作用范围不 ...
最新文章
- java中什么是空指针异常_java中空指针异常的问题,是怎么回事?请看代码
- java 按顺序取出json_java取json 的方法
- NPOI 导入Excel和读取Excel
- 字节跳动 ClickHouse 在实时场景中的应用和优化实践
- mysql的内存数据库,MySQL内存数据库的新选择-MariaDB4J
- Android 图形系统之gralloc
- IKVM 编程武林之.NET派的北冥神功
- 自定义ActionBar、Toolbar布局(解决自定义ActionBar布局左边始终有一点边距的问题)
- 计算机辅助设计试题 李明,计算机辅助设计B李明及答案.doc
- mvn jetty debug
- serverl sql 数据在哪里找_我是如何在SQLServer中处理每天四亿三千万记录的
- python运维知识大全_python基础知识
- 视频教程-EOS 入门实战-区块链
- cookie登陆qq空间的两种方式
- 梅兰商城案例代码编写(自己练习,纯手写,最后附有结果图以及精灵图)
- css3常用语言-动画
- 纪录大华的智能回调需要用到的事件列表
- 利用requests库和Xpath爬取猫眼电影榜单【Python】
- UNIX下PageDown健如何捕捉
- 软件测试到底在学什么
热门文章
- android 4.4 keyfactory.getinstance 报错_Android实际开发bug大总结
- 销售软件服务器设置,销售软件服务器
- python学习笔记2018-9-18
- 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算
- 一个简单CI/CD流程的思考
- GDB的工作原理及skyeye远程调试
- Redis之运维细节
- python sqlalchemy orm
- (12)Verilog HDL变量:reg型
- 开两个服务内存溢出_应用服务OkHttpClient创建大量对外连接时内存溢出