在一个类中定义的类叫内部类,内部类可以为静态内部类(用static关键字修饰),也可以为非静态内部类(普通类)。

区别一:

        静态内部类可以有静态成员变量和方法,非静态内部类只能有非静态的成员变量和方法。也就是说,在内部类中如果要定义静态成员,则该内部类一定要用static关键字声明为静态的。(跟抽象类类似,如果要在类中定义抽象方法,则该类一定要声明为抽象类)。

区别二:

静态内部类只能访问外部类的静态成员变量和方法,而非静态内部类可以访问外部类所有的成员变量和方法。

区别三:

   静态内部类实例可以直接创建,不需要和外部类实例绑定,而创建非静态内部类需要先创建外部类实例。例如有外部类Outer,内部类Inner,如果内部类Inner是静态的,创建内部类Inner实例的方法是:Outer.Inner  var = new Outer.Inner();如果内部类是非静态的,创建内部类Inner实例的方法是:Outer.Inner var = new Outer().new Inner()。

区别四:

非静态内部类默认持有外部类的引用,可能会导致内存泄漏;静态内部类没有外部类的引用。

Java中静态内部类和非静态内部类的区别相关推荐

  1. java中静态方法与非静态方法的区别及非静态方法的注意事项

    一旦使用static修饰成员方法,那么这就成为了静态方法.静态方法不属于对象,而是属于类的. 如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它. 如果有了static关键字,那 ...

  2. Java 静态内部类与非静态内部类【复习】

    一.静态内部类与非静态内部类的区别 1.静态内部类只能访问外部类的静态成员和方法 2.静态内部类不能访问外部类的非静态成员变量和非静态方法.他只 能访问外部类的静态成员和静态方法,非静态内部类能够访问 ...

  3. 什么是内部类?有什么作用?静态内部类和非静态内部类的区别?

    一. 定义 放在一个类的内部的类我们就叫内部类. 二. 作用 1.内部类可以很好的实现隐藏 一般的非内部类,是不允许有 private 与protected权限的,但内部类可以: 平时我们对类的访问权 ...

  4. android编译非静态内部类,Android 非静态内部类/匿名类引起的内存泄漏

    一.概述 让我们先来回顾一下android内存泄漏的相关概念: 内存溢出:android系统会给每个安卓程序分配一定的内存,当程序所使用的内存超过最大值就会造成内存溢出,就是常说的OOM 内存泄漏:简 ...

  5. java == hashcode,java中==和equals和hashCode的区别

    java中==和equals和hashCode的区别 == 的作用: 基本类型:比较的就是值是否相同 引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址) equals 的作用: 引用类型:默 ...

  6. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

  7. Java中long和Long有什么区别

    Java中long和Long有什么区别(转) Java的数据类型分两种: 1.基本类型:long,int,byte,float,double,char 2. 对象类型(类): Long,Integer ...

  8. java中引用类型和基本类型的区别

    java中引用类型和基本类型的区别 一.数据类型 1.基本类型 基本数据类型只有8种,可按照如下分类 ①整数类型:long.int.short.byte ②浮点类型:float.double ③字符类 ...

  9. 杂谈——Java中同步与异步有什么区别

    大家在使用手机的时候,比如小米手机,自带云空间,可以将数据同步到云空间上:很多文档app也有同步的功能.而我们牛气冲冲的Java自然也有同步与异步,不过Java中的同步与异步似乎与我们平常认知中的同步 ...

  10. Java中PreparedStatement和Statement的用法区别

    Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载▼ 标签: 杂谈   1. PreparedStatement接口继承Sta ...

最新文章

  1. 人脸识别最前沿在研究什么?
  2. 自动驾驶汽车测试在美惹争议,原因为何?
  3. android4被淘汰,这五类安卓手机已经被淘汰,购买时别贪便宜,需慎重考虑!
  4. 数据结构之堆:堆的排序,Python代码实现——13
  5. Python中对列表list进行定义、增删改查、遍历及与元组的对比
  6. 初学者应该如何有效率的系统学习Python开发
  7. Java项目之家庭记账软件
  8. lnmp + swoole 安装
  9. vmware workstation 不可恢复错误 vcpu-0
  10. 30 | 答疑文章(二):用动态的观点看加锁
  11. Java课程设计/大作业合集
  12. mac电脑用户使用的音乐播放软件,用户还可以使用网易云账号将电脑和手机上的音乐同步网易云音乐mac版中
  13. J2EE框架DDoS漏洞预警公告
  14. VS2010创建OCX控件
  15. 无监督学习之稀疏编码,自编码
  16. [凸优化]1-凸集和凸函数
  17. 会声会影应该如何制作电影开幕效果
  18. CAN总线通信原理分析
  19. 2022骨传导耳机品牌那个好、排名前十的好用的骨传导耳机
  20. 一个程序员多年的收藏

热门文章

  1. minecraft 服务器修改器,【1.6.2】Minecraft內置修改器TMI(包含整合包)
  2. 清除“添加或删除程序”列表中残留的程序项目
  3. CLI 钱包操作(六):发布内容
  4. mysql左连接代码,mysql多表子查询与左连接的代码
  5. 【数理逻辑】预备知识
  6. html实现二进制转换,html5前段基础课程(二进制转换篇)
  7. mapreduce——invertedindex
  8. 中国CMOS芯片厂商拿下了全球50%+的份额,打败了索尼、三星-道合顺大数据Infinigo
  9. java怎么提交,java-如何手动强制@Transactional方法中的提交?
  10. RDA TDT TOT