常用类和内部类总结

STM32——IIC(I2C)中断与DMA通信实战解析 本文深入解析STM32的IIC(I2C)通信中断与DMA实战应用。通过对比轮询方式的低效,详细介绍中断模式和DMA模式的实现原理、状态机编程技巧及性能优化策略,并结合SHT30传感器案例展示如何高效读取数据,显著提升系统响应速度和CPU利用率。 阅读详情

目录内容

目录

在这里插入图片描述

在这里插入图片描述

什么是内部类

重点概念: 在一个类的内部再定义一个完整的类

在这里插入图片描述

重点:内部类的特点:

一 编译之后可生成独立的字节码文件

二 内部类可直接访问外部类的私有成员 而不破坏封装

三 可为外部类提供必要的内部功能组件

在这里插入图片描述

练习

内部类可直接访问外部类的私有成员 而不破坏封装

在这里插入图片描述

成员内部类

在类的内部定义 与实例变量 实例方法同级别的类

外部类的一个实力部分 创建内部类对象时 必须依赖外部类对象

在这里插入图片描述

练习

//如果内部类属性和外部类属性的名字相同时
//会优先调用内部类的属性
//但是如果想调用外部类的属性
//方法中使用该代码
// System.out.println(Outer.this.name);



//下行代码为打印内部类属性和外部类属性名字相同时
//打印外部类的属性

在这里插入图片描述

静态内部类


重点
成员内部类对象创建的时候要依赖外部类对象
而静态内部类创建的时候不需要依赖外部类对象

在这里插入图片描述

练习

//静态内部类(静态内部类就是在成员内部类前面加一个static)
//而静态内部类相当于和外部类的意义相同




//静态内部类调用外部类的属性和自己的属性
//1 先创建外部类对象的
Outer outer = new Outer();
//2 调用外部类对象的属性
System.out.println(outer.name);
//调用静态内部类的属性和方法
//直接调用
System.out.println(address);
System.out.println(phone);
//调用静态内部类的静态属性
System.out.println(Inner.count);




//直接创建内部类对象
Outer.Inner inner=new Outer.Inner();
//调用方法
inner.show();




在这里插入图片描述

匿名内部类

(没有名字的局部内部类 一切特征都与局部内部类相同)

在这里插入图片描述

在继承一个父类或者实现一个接口的时候
匿名内部类用的比较多



练习

//在main方法中写一个
//局部内部类(用局部内部类创建一个对象)
class Fan implements USB{
@Override
public void service() {
System.out.println(" 局部内部类 连接电脑成功 风扇开始工作…");
}
}
//使用局部内部类创建对象
//接口去创建一个它的实现类对象
USB usb2=new Fan();
usb2.service();





//由于使用局部内部类对象只用一次
//而局部内不类就不用了



//所以使用匿名内部类优化
//接口不能实例化
//相当于创建了一个局部内部类(匿名内部类)
//重点 这里是USB接口而不是Fan局部内部类
//所以这里写的是USB而不是Fan
// 同样这里不止可以用接口创建匿名内部类
//也可以用父类创建匿名内部类…抽象类等等也可以创建
USB usb=new USB() {
@Override
public void service() {
System.out.println(" 匿名内部类 连接电脑成功 开始工作…");
}
};
usb.service();





在这里插入图片描述

Object类

在这里插入图片描述

API文档注解:Object类

在这里插入图片描述

getClas()方法

Object类中的第一个方法getClass()

在这里插入图片描述

getClass()方法返回的是引用存储的实际对象类型
例如下图代码重点理解!!!

在这里插入图片描述

hashCode()方法

Object类中的第二个方法hashCode()方法

在这里插入图片描述

哈希值根据对象的地址或者字符串或数字使用hash算法计算出来的int类型的数值



一般情况下相同对象返回相同的哈希码 所以我们一般用哈希码来判断两个是不是同一个对象




练习

在这里插入图片描述

toString()方法

Object类中的第三个方法toString()方法

在这里插入图片描述

练习

在这里插入图片描述

equals()方法

Object类中的第四个方法equals()方法

在这里插入图片描述

当两个对象的属性相同时 可以发现进行比较
返回的值仍为false
重点 所以为了避免出现这种情况
可进行覆盖(重写)来 比较两个的对象的内容是否相同!!!
重点 步骤为:


在这里插入图片描述

练习

重点:
认真理解以下代码的意义!!!



@Override
public boolean equals(Object obj) {
//步骤一 判断两个对象是否是同一个引用
if (this == obj){
return true;
}
//步骤二 obj是否为null
if (obj==null){
return false;
}
//步骤三 判断是否为同一类型
//方法一 判断是否为同一类型
//if (this.getClass()==obj.getClass()){}




//方法二 判断是否为同一类型
//instanceof 可以用来判断对象是否是某种类型
//也可以来判断两个类之间是否存在父子关系
if (obj instanceof Student){
//步骤四 强制类型转换
Student s=(Student) obj;
//步骤五 比较属性
if (this.name.equals(s.getName())&&this.age==s.getAge()){
return true;
}
}
//否则返回false
return false;
}

在这里插入图片描述

finalize()方法

Object类中的第五个方法finalize()方法

在这里插入图片描述



finalize()方法是回收垃圾方法
由于JVM是自动调用回收垃圾机制
但是我们也可以手动来调用垃圾回收
所用我们要覆盖(重写)finalize()方法

练习

//覆盖finalize()方法
@Override
protected void finalize() throws Throwable {
System.out.println(this.name+“对象被回收了”);
}




//在打印结果中可以看出 当创建出对象时 对象赋予属性
//对象不是垃圾 所以下面代码不是垃圾
Student s1 = new Student(“aaa”, 20);
Student s2 = new Student(“bbb”, 20);
Student s3 = new Student(“ccc”, 20);
Student s4 = new Student(“ddd”, 20);
Student s5 = new Student(“eee”, 20);



//而没有创建出对象时 只给赋予属性这些属于垃圾
new Student(“AAA”, 20);
new Student(“BBB”, 20);
new Student(“CCC”, 20);
new Student(“DDD”, 20);
new Student(“EEE”, 20);
System.gc();
System.out.println(“回收垃圾”);



在这里插入图片描述

什么是包装类

基本类型(八大基本类型)的数据都存在栈中
而且栈中存储的都是对象的地址
引用类型的数据都存在堆中
例如:
为了给基本类型提供更强大功能
所以给基本类型提供了包装类
等等…

在这里插入图片描述

类型转换和装箱 拆箱

理解什么是装箱和拆箱

在这里插入图片描述

练习一

// 类型转换: 装箱 即基本类型(栈)转为引用类型(堆)的过程
// 类型转换: 拆箱 即引用类型(堆)转为基本类型(栈)的过程

在这里插入图片描述

练习二

hex 十六进制
Binary 二进制
octal 八进制



//练习 基本类型和字符串之间的转换
重点:
//方法二拓展: 将基本类型转换为2进制 4进制 8进制 16进制的字符串类型



//基本类型和字符串之间的转换
//1 基本类型转成字符串
int n1=255;
//方法一: 使用加号加上""
String s1=n1+“”;
//方法二:使用Integer中的toString()方法
String s2 = Integer.toString(n1);
//方法二拓展: 将基本类型转换为2进制 4进制 8进制 16进制的字符串类型
String s22=Integer.toString(n1,16);
System.out.println(s1);
System.out.println(s2);
System.out.println(n1+"的16进制的字符串类型 "+s22);




//2 字符串转成基本类型
//注意点:字符串类型的数字中不能掺杂其他字母或者符号
//否则会出现NumberFormatException异常
String str=“150”;
//使用 Integer.parseXXX()方法
int n2 = Integer.parseInt(str);
System.out.println(“----------字符串转成基本类型----------”);
System.out.println(n2);




在这里插入图片描述

整数缓冲区

整数缓冲区的作用 在实际应用中 对已经创建的对象进行复用

在这里插入图片描述




改正 :应该为-127到128之间
下面的数据范围是错误的

在这里插入图片描述

练习

重点
整数缓冲区 当Integer的数据大于-127到小于128的时候
Integer数据就会在堆中的整数缓冲区中找到它原本就创建的这个数据来调用
但是如果不是这个范围的话 就会重新创建一个数据
所以两者的Boolean打印值是不同的



在这里插入图片描述

String类

程序运行过程中有三个空间:栈 堆 方法区
栈里面存储基本类型数据
堆里面存储引用类型数据和对象
方法区中存储字符串池(注意Jdk版本有不同的变化)


在这里插入图片描述

当使用new 一个新的String的时候 会产生两个对象 堆和池中会各自储存一个




//创建字符串的第一种方式
String name=“hello”;//“hello” 常量时储存在字符串池中的
name=“zhangsan”;//"zhangsan"赋值给name变量时,给字符串赋值时
//并没有修改数据 而是重新开辟一块空间



在这里插入图片描述

练习

对比上面图片一块学习


重点:
Java代码中 等号==比较的是对象存储地址
而equals比较的是数据




//创建字符串的第一种方式
String name=“hello”;//“hello” 常量时储存在字符串池中的
name=“zhangsan”;//"zhangsan"赋值给name变量时,给字符串赋值时
//并没有修改数据 而是重新开辟一块空间
String name2=“zhangsan”;
//当重新创建一个字符串时 而是先找字符串池中有没有这个变量 没有的话会重新
//开辟一块空间来创建这个命名变量




//创建字符串的第二种方式
String str=new String(“java”);
String str2=new String(“java”);
System.out.println(“java等号比较结果- --》”+(str == str2));//false
// 原因:Java代码中 等号==比较的是对象存储地址
System.out.println(“java中equals比较结果-- -》”+str.equals(str2));//true
//原因 :而equals比较的是数据



在这里插入图片描述

String常用方法

在这里插入图片描述

在这里插入图片描述

大总结

练习

//字符串String常用方法的使用
//length();返回字符串的长度
//charAt(int index);返回某个位置的字符
//contains(String str);判断是否包含某个字符串




//toCharArray();返回字符串对应的数组
//indexOf();返回字符串首次出现的位置
//lastIndexOf();返回字符串最后一次出现的位置




//trim(); 去掉字符串前后的空格
//toUpperCase(); 将小写转为大写
//toLowerCase(); 将大写转为小写
//endWith(str); 判断是否以str结尾
//startWith(str); 判断是否以str开头




// replace(char old, char new);
//用新的字符或字符串替换旧的字符或字符串
// split(); 对字符串进行拆分




//equalsIgnoreCase 忽略字母的大小写来进行比较字符串是否相等




//compareTo 比较的是字符串 第一个字母的十进制数字进行比较
//只要两个字符串的前面个字符不相同那么就进行比较 直接相减 然后打印出来
//后面的字符无论写多少都不进行比较 只比较第一个
// 97-129=-23




//如果两个的字符串 第一个字母相同 那么就进行比较第二个 跟上面方法相同




在这里插入图片描述

GitLab CI/CD .gitlab-ci.yml 关键词(十一):发布版本 release 本篇文章介绍使用GitLab CI/CD 发布一个版本,对外发布。并填写一些发布的信息。 阅读详情

相关推荐

ros2 humble中使用realsense t265与d435

前提,安装realsense SDK 2.51.1版本并且能成功启动realsense-viewer V2.51.1想要在ros2中使用realsense t265,必须配合realsense SDK v2.51.1使用realsense-ros 4.51.1版本,因为新版本realsense ros2不再对t265支持下面记录源码编译安装 realsense-ros 4.51.1版本。

m0_72797388的博客 957

#静态内部类与外部类

外部类如何调用静态内部类中的属性和方法 1)外部类可以通过创建静态内部类实例的方法来调用静态内部类的非静态属性和方法 2)外部类可以直接通过“ 外部类.内部类.属性(方法)” 的方式直接调用静态内部类中的静态属性和方法 静态内部类如何调用外部类的属性和方法 静态内部类如果要访问外部的成员变量或者成员方法,那么必须是静态的 1)静态内部类可以直接调用外部类的静态属性和方法 2)静态内部类可以通过创建...

YLJ2570的博客 697

Comsol 超声空化气泡仿真

当液体中受到高能量的超声波作用时,液体中的压力会发生剧烈变化,形成局部的低压区域。当液体中的压力降低到饱和蒸汽压以下时,就会发生空化现象,即液体中形成微小气泡。这种空化常用于一些工业应用,如清洗、乳化、混合等。这种空化常用于一些医学和生物学应用,如碎石术、肿瘤治疗、细胞破碎等。超声空化的应用非常广泛。在医学领域,超声空化广泛应用于诊断和治疗,如超声造影、超声刀、超声碎石术等。在工业领域,超声空化可用于清洗、乳化、混合等工艺。此外,超声空化还在食品加工、化学合成、环境保护等领域有着重要应用。

声学黑洞仿真工作室 2558

Java基础--类和接口(常规内部类、静态内部类、局部内部类、匿名内部类、抽象类、接口)

一、内部类(Inner Classare the classes defined inside another class.) 在类内部的类 1.解决多继承 2.解决继承和实现接口时候方法名冲突情况 3.实现数据隐藏 只有内部类可以拥有4种访问修饰符(package(默认)、public、private、protected) 当内部

耀耀zz的博客 853

用Python可视化硅晶体生长:3D图解<100>/<110>/<111>晶向差异

本文通过Python 3D可视化技术,详细解析了硅晶体生长中<100>、<110>、<111>三种关键晶向的差异及其在半导体工业中的应用。从密勒指数转换到原子密度计算,结合交互式3D模型展示不同晶向的原子排列特性,帮助读者深入理解晶向对芯片性能的影响。

weixin_42567752的博客 572

simulink可控励磁同步电机模型分析

他励同步电机模型分析

qq_26681609的博客 5552

Java08:面向对象02—OOP三大特性

OOP(面向对象)三大特征:封装、继承、多态;instanceof 判断对象类型

Bruce的博客 207

2025年一篇解决Windows11安装医学图像处理工具-FSL(各种问题解决,过程详细,小白轻松安装)

2025年一篇帮你解决FSl安装所有问题,包括环境安装、使用说明、常见问题,过程简单易懂,小白轻松安装。

weixin_52145255的博客 2525

Java基础—抽象类和接口定义及区别、内部类(静态内部类、实例内部类、匿名内部类)

abstract 包含抽象方法的类设计为抽象类 普通类extends抽象类:必须实现抽象类的抽象方法 接口: 接口只能bao'lai'n

Angety 的博客 696

Hermes Agent 安装部署完全指南

Hermes Agent安装部署指南提供了两种安装方式:一键脚本安装和手动分步安装。该AI助手支持多平台运行(Linux/macOS/WSL2),核心功能仅需Git作为前置依赖,其他依赖如Python、Node.js等均由安装脚本自动处理。文档详细介绍了系统要求、依赖管理、配置目录结构、环境变量设置以及10个手动安装步骤,并提供了功能模块化选项,用户可根据需求选择安装语音交互、浏览器自动化等扩展功能。安装完成后可通过hermes doctor命令验证环境,并通过交互式向导完成初始化配置。

简简单单Onlinezuozuo 2634

第182期 Claude Skills:深入探究Anthropic的智能体框架(一篇彻底讲透彻)

摘要: Claude Skills是Anthropic推出的智能体框架,通过连接外部工具和服务扩展Claude AI的功能,支持实时交互与任务执行。其核心架构包含技能路由器、注册表、执行引擎等模块,采用渐进式披露机制优化上下文管理。与MCP和A2A相比,Skills更注重模块化设计与Claude深度集成,通过SKILL.md文件定义可重复工作流程,兼具高效性和灵活性。开发者可创建自定义技能,遵循聚焦用户价值、安全隐私等最佳实践,实现AI能力的场景化拓展。该框架与MCP、A2A形成互补,共同推动智能体生态发展

全网120W+关注AI拉呱,专注人工智能以及科技前沿! 2137

java 静态类 实例化吗_(转)Java静态内部类的实例化问题

最近遇到的一个问题,记录一下。静态内部类可以被实例化!1.首先在外部类中的static方法中不能使用普通内部类,因为内部类必须要与外部类建立关联才能使用,可以说是同生共死。2.我在编码过程中,需要2个类共同完成一个功能,其中一个工具类只会被用来完成这个功能,所以我选择将这个类作为内部类,但是这个内部类与外部类又没有直接的关联(使用普通内部类,我需要new一个外部类,通过外部类才能new一个内部类,...

weixin_36172296的博客 2381

CSH 入门基础 1 -- bash与 csh 差异 及csh常用语法介绍

C Shell的语法和功能相对于Bourne shell(sh)有很大的不同,特别是在脚本编程方面。如果 variable 的值等于某个 case 的 value,那么该 case 中的命令会被执行。condition是一个条件表达式,当其为真时,if语句块中的命令会被执行。如果condition为假,则会继续执行下一个else if语句块,直到找到一个条件为真的语句块,或者执行到最后的else语句块。当i的值小于5时,循环体中的命令会被重复执行。在这个示例中,循环体中的命令是输出变量。

CodingCos的博客 2万+

Java内部类和常用类

字符串是常量,创建之后不消失字符串字面量存储在字符串池中,可以共享//"hello" 存储在常量池中//假如hashcode是x//"zhangsan"赋值给name 给字符串赋值时,并没有在原字符串上修改数据,而是重新开辟一块空间//hashcode是y “zhangsan”字符串常量可以共享//hashcode是y。

Naclarb优快云的博客 1282

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

内部类和常用类

内部类和常用类 1、内部类 • 成员内部类 - 直接将一个类的定义放在另外一个类的类体中。 • 静态内部类 - 使用static关键字修饰的内部类,隶属于类层级。 • 局部内部类 - 直接将一个类的定义放在方法体的内部时。 • 匿名内部类 - 就是指没有名字的内部类。本质:其实是继承该类或者实现接口的子类匿名对象。 概念:在一个类的内部在定义一个完整的类。 作用:数据安全。如果我们的内部类不想轻易被任何人访问,可以选择使用private修饰内部类,这样我们就无法通过创建对象的途径来访问,想要访问只需要在外部

ghjgjhyfht的博客 189

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java-内部类和常用类

定义在类的内部的完整的类称为内部类能容纳更多的数据分类:局部内部类成员内部类静态内部类匿名内部类类Object是类层次结构的根类。所有对象(包括数组)都实现这个类的方法。String类代表字符串。就是一串字符。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。扩容原理。

2301_77012210的博客 806

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java 8 内部类和常用类

内部类与常用类 目录: 内部类 object类 object类常用方法 包装类 String类 BigDecimal类 内部类 分为:成员内部类,静态内部类,局部内部类,匿名内部类 概念:在一个类的内部再定义一个完整的类 特点: 编译之后可生成独立的字节码文件 内部类可直接访问外币类的私有成员,而不破坏封装 可为外部类提供必要的内部功能组件 成员内部类: 在类的内部定义,与实例变量、实例方法同级别的类 外部类的一个实例部分,创建内部类对象时候,必须依赖外部类对象 静态内部类: 不依赖外部类对象,可直接创

God_Of_Gun的博客 323

Java常用类和内部类汇总

任何类,如没有书写extends显示继承某个类,都默认直接继承Object类,否则为间接继承。局部内部类访问外部类当前方法中的局部变量时,因无法保障变量的声明周期与自身相同,变量必须修饰为final。(对象在栈中存储,字符串的值存储在方法池中,指向同一个字符串)当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记立即对象,进入回收队列。当两个字符串是包含关系,则比较的是长度关系,返回的是长度差值。System系统类,主要用于实现获取系统的属性数据和其他操作 ,构造方法私有的,不用创建对象。

qqqq777_的博客 346

常用类和内部类(笔记)

常用类和内部类 内部类 分类 成员内部类 静态内部类 局部内部类 匿名内部类 概念:在一个类的内部再定义一个完整的类 特点: 编译之后可生成独立的字节码文件 内部类可直接访问外部类的私有成员,不破坏封装 可为外部类提供必要的内部功能组件 成员内部类 在类的内部定义,与实例变量、实例方法同级别的类 外部类的一个实例部分,创建内部类对象时,必须依赖外部类 Outer out = new Outer(); Inner in = out.new Inner(); 当外部

cyyttaaioo的博客 142

常用类--内部类和Object类

内部类和Object类

qq_48578877的博客 201

Lesson15_内部类和常用类

Lesson15_内部类和常用类 回顾 简单工厂 *工厂方法 *抽象工厂模式 创建对象,把创建对象和使用对象进行解耦。 对象使用者只需要和工厂打交道即可。 如果有了新的对象类型产生,只需要修改工厂即可。 // 简单工厂类 public class GFFactory { // 工厂方法 public static BaseGF createGF(String gfType){ switch(gfType){ case "山东":

weixin_44120423的博客 235

内部类和常用类(自用)

内部类和常用类 内部类 成员内部类 package study; public class Example { int age = 1; class Inner { //成员内部类不能定义静态成员 可以用final static int age1=1;//编译报错 static final int age2=2; int age = 15; public void show() { //外部类和内部类存在重名属性时,会优先访问内部类属性

qq_34509897的博客 216

(5)常用类和匿名内部类

一,常用类 1,Object类 是java一切类的父类 常用方法 2,包装类 基本数据类型 int,double,boolean 基本数类型的包装类 还有Double,Boolean等 了解两个概念 装箱:基本数据类型-->引用数据类型,如int转换成了Integer 拆箱:引用数据类型-->基本数据类型,如Double转成了double 3,String 实用率最高的类 类层次结构 类的介绍 属性 有的地方叫做字段,其实一个意思 构造

qq_61175459的博客 245

一、java学习 | 内部类和常用类【8】

内部类和常用类

AG150的博客 168
上一篇: 多线程讲解(三)
下一篇: 常用类和内部类总结(二)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值