当前位置: 首页 > news >正文

java 学习笔记

前言

如何学 java:把自己整疯就好了。QWQ

放些自己本来搞不懂的内容一看以下东西就懂了的东西。(好像是病句。。。)

正文

注:基本都是复制粘贴的,因为我都把自己搞疯了,怎么有时间总结自己的想法。QWQ

静态类与非静态类直接区别

在Java中,静态类和非静态类(即普通内部类)的主要区别体现在声明方式、作用域、内存分配以及与外部类的关系上。以下是详细对比:


1. 静态类(Static Nested Class)

  • 声明方式:用 static 修饰,定义在另一个类的内部。
    class OuterClass {static class StaticNestedClass { }
    }
    
  • 与外部类的关系
    • 静态类不依赖外部类的实例,可以直接通过外部类名访问。
    • 不能直接访问外部类的非静态成员(需通过外部类实例访问)。
  • 内存分配
    • 静态类在加载外部类时即被加载,与外部类实例无关。
  • 使用场景
    • 当内部类不需要访问外部类实例成员时,优先用静态类(更节省内存)。
    • 例如工具类、与外部类逻辑相关的辅助类。

示例

OuterClass.StaticNestedClass nestedObj = new OuterClass.StaticNestedClass();

2. 非静态类(普通内部类,Inner Class)

  • 声明方式:无 static 修饰,定义在另一个类的内部。
    class OuterClass {class InnerClass { }
    }
    
  • 与外部类的关系
    • 非静态类隐式持有外部类的引用,可以直接访问外部类的所有成员(包括私有成员)。
    • 必须先创建外部类实例,才能创建内部类实例。
  • 内存分配
    • 非静态类的实例与外部类实例绑定,可能导致内存泄漏(如内部类被长生命周期对象引用时)。
  • 使用场景
    • 需要访问外部类实例成员或紧密耦合外部类状态时使用。
    • 例如事件监听器、适配器模式。

示例

OuterClass outerObj = new OuterClass();
OuterClass.InnerClass innerObj = outerObj.new InnerClass();
http://www.sczhlp.com/news/9112/

相关文章:

  • groundDino分类训练与微调
  • 8月10日
  • 行测1试题
  • Three.js物理效果实践
  • 在MS Office文档属性中隐藏Payload的技术解析
  • 通过 SCP 和 LXD 配置迁移 CUDA 环境至共享(笔记) - 教程
  • [更新中] 重链剖分学习笔记
  • 大语言模型与结构化NLP管道集成方案
  • JDK源码之Integer
  • 阶段代码演示与练习
  • 《老残游记》
  • OI 笑传 #9
  • 界面布局
  • U8Cloud最新前台RCE漏洞挖掘过程
  • 昆明理工大学817信号与系统期末试卷
  • cad.net 选择组_嵌套组
  • 可持久化权值线段树/主席树
  • 完整教程:Vite React项目引入unocss 及 @unocss/preset-icons的使用
  • 4.3 数据类型内置方法_可变类型(1)_列表
  • 数论进阶刷题柱
  • 数据湖与数据仓库的未来之争
  • 使用Redis 注意事项
  • DAY12 闭包函数 装饰器
  • 【转载】50个顶级的ChatGPT学术论文指令,强烈建议收藏!
  • The 2025 ICPC China Zhejiang Province Programming Contest
  • 构成回文数组
  • 视觉五阶段
  • 详细介绍:从0开始的中后台管理系统-5(userList动态展示以及上传图片和弹出创建用户表单)
  • CF1406D Three Sequences
  • 迪杰斯特拉