Java基础知识整理 (匿名内部类, lambda表达式,包装类,拆箱和装箱)

CloudCompare 二次开发(17)——点云添加均匀分布的随机噪声 使用CloudCompare编程实现点云添加随机噪声。 阅读详情

匿名内部类

特点
1.本身没有任何构造方法,但是会调用父类的构造方法
2.虽然没有构造方法,但是内部内会提供一个初始化代码块,JVM在调用父类的构造方法会调用该代码快
3.匿名内部类可以实现接口,还可以继承抽象类

只会在当前使用一次的时候用匿名内部类

使用匿名内部类:

明确实现那个接口,并且确定这个实现只会使用一次,

接口名 匿名内部类的对象名字 = new 接口名(){匿名内部类的主题} 大括号里面只会实现接口中的抽象方法,接口中提供了default方法,也可以选择重写!

匿名内部类对象名只能调用接口中提供的属性和方法

// 调用接口中的方法 //这里只会在当前使用并只使用一次(在当前类中使用) //这种形式类似于 局部内部类
ISmoking instance = new ISmoking() {
  //定义的属性和方法在外部无法调用所以没有实际意义,基本上不会定义 @Override
    public void somke(String name) {
        System.out.println("匿名内部类实现接口"+name); 
    }
}; 
instance.somke("中华");

以下代码效果同上

new ISmoking() {
    @Override
    public void somke(String name) { 
          System.out.println("匿名内部类的简化形式"+name);
     }
}.somke("你好");

lambda表达式

lambda表达式是JDK1.8含1.8之后推出的

lambda表达式是对接口的简单实现,没有lambda之前使用接口可以使用匿名内部内的形式完成,但是语法不够简洁,提供一种比较简单的语法lambda表达式,但是lambda表达式只能实现接口的一个抽象方法

Java提供了一个注解,必须提供一个抽象方法,不然会报错,

@FunctionalInterface 这个注解限制接口中只能有一个抽象方法

这个注解是函数式接口为了证明这个接口为lambda表达式提供的,这个接口也可以用default和static方法

lambda表达式:

语法:(参数列表)->{方法体}

ps:这个参数列表对应的是接口中抽象方法的参数列表;" ->"这个是固定语法 “{}” 这个大括号对应抽象方法的实现

public class Test {
    public static void main(String[] args) {
//调用接口中 show 方法
//需要给lambda表达一个名字 ILambdaTest l = () -> {
   System.out.println("lambda表达式实现"); };
   l.show(); }
}
lambda表达式的进阶

lambda表达式可以对接口中的方法进行一次应用,

做方法应用时注意:

1.这个方法必须属于人,把方法作为静态,隶属于当前的类

2.这个方法需要和接口中的抽象方法参数类型一致和返回值类型一致

使用:

需要在类中定义一个和接口中的抽象方法,返回值和参数类型完全一致的方法。(会被定义为静态方法)

package com.qfedu.Lambda;
@FunctionalInterface
public interface ILmabdaTest4 {
       void showInfosName(String name);
       package com.qfedu.Lambda;
      public class Test4 {
      public static void main(String[] args) {
//使用lambda表达式进行方的引用操作 //引用:设计的方式类的方法即静态 //所以需要使用类名引用 即 类名::方法名 //就相当于类中静态方法将抽象方法实现了
       ILmabdaTest4 l = Test4::show; l.showInfosName("张三");
       ILmabdaTest4 l2= System.out::println; l2.showInfosName("李四");
     }
//1.需要在类定义一个和接口中抽象方法 返回值和参数列表完全相同一个方法 //ps:这个方法会被定义为静态方法
public static void show(String name) {
System.out.println("名字是:"+name); }
}

包装类

含义:包装类是值类型的引用类型,基本数据类型在数据传输的时候,效率极低,为了提高效率,提供了包装类

基本数据类型中没有提供任何对数据的处理方法,但是包装类中有提供

包装类虽然将值类型改变了应用类型,到那回事方法参数传递的时候,依旧是拷贝

在这里插入图片描述

拆箱和装箱

装箱:将基本数据类型转换成包装类类型

语法:

JDK1.5之前——手动装箱

包装类类型 对象 = new 包装类类型(基本数据类型的值);

JDK1.5之后——自动装箱(手动装箱也是支持的)

包装类类型 对象 = 基本数据类型的值;

拆箱:——把包装类类型转换成基本数据类型

语法:

JDK1.5之前 手动拆箱

基本数据类型 变量 = 包装类对象.xxxValue(); "xxx"表示对应的基本数据类型

JDK1.5之后 自动拆箱

基本数据类型 变量 = 包装类对象;

包装类之间的关系

基本数据类型之前,可以进行类型转换;但是基本数据类型对应的包装类之间没有任何关系,彼此独立

ps:有一个系统类Number——>>是Byte,Integer,Long,Float,double类的父类

Integer和String互相转换

integer设计了一个缓存—>>享元原则

原存在一个范围,若当前的是在-128~127之间的任何数字,返回的都是同一个地址

把String类型转换成Integer类型
//1.1还有一个参数 数据类型是 String类
Integer i1 = Integer.valueOf("123"); //1.2通过Integer构造方法将String转换
Integer i2 = new Integer("123"); System.out.println(i1+i2);
将字符串转换为基本数据类型
//转换基本数据类型时可以进行自动装箱操作可以得到包装类类型 //parseXXX --> XXX可以是8中基本数据类型 --> 根据调用者来 Integer i3 = Integer.parseInt("123");

特殊的,Boolean只能得到两个 true和false 
//Boolean包装类接收字符串是true或false可以 但是其他字符串的到的都是false Boolean b = new Boolean("true");
System.out.println(b);
Boolean b1 = new Boolean("boolean"); System.out.println(b1);//false
Integer和int之间的区别

区别1:int的默认值是0, Integer默认类型是null 所以int是值类型 Integer是引用类型
区别2:int只能存储数据没有提供任何操作数据的方法,Integer除了可以操作数据外还提供了操作数据方法
区别3:集合框架中,只能存储引用类型,不能存储基本数据类型

package com.qfedu.Number;
/**
* 面试题
* @author JKMaster *
*/
public class IntegerFace {
public static void main(String[] args) { //1.使用new关键字创建Integer对象 //i1和i2此时存储的是堆中的地址
          Integer i1 = new Integer(123);
          Integer i2 = new Integer(123);
          System.out.println(i1 == i2); // false
          System.out.println(i1.equals(i2));//true
//i3,i4,i5,i6这里都是使用 valueof进行的装箱操作 //Integer设计了一个缓存-->享元原则
//原则存在一个范围 若当前的是在-128~127之间的任何一个数字, //返回的都是同一个地址
          Integer i3 = Integer.valueOf(123);
          Integer i4 = Integer.valueOf(123);
          System.out.println(i3 == i4);//true
          
		  System.out.println(i3.equals(i4));///true //i5和i6底层调用的也是valueof
			Integer i5 = 123;
			Integer i6 = 123;
			System.out.println(i5 == i6);//true
			System.out.println(i5.equals(i6));//true
			//i7和i8存的是堆空间地址
			Integer i7 = new Integer(250);
			Integer i8 = new Integer(250); System.out.println(i7 == i8);//false System.out.println(i7.equals(i8));//true
			//i9,i10,i11,i12 使用了手动装箱 i11和i12是底层调用 //会触发valueof中的享元原则判断 是有范围的 -128~127之间才可以 //所以i9,i10,i11,i12都超出了这个范围,所以会触发第二个return //new Integer(i) --> 堆地址
			Integer i9 = Integer.valueOf(250);
			Integer i10 = Integer.valueOf(250);
			System.out.println(i9 == i10);
			System.out.println(i9.equals(i10));
			Integer i11 = 250;
			Integer i12 = 250;
			System.out.println(i11 == i12);
            System.out.println(i11.equals(i12));
            }
       }

String字符串

什么是字符串? --> 多个字符组成的一串–>这个串就是字符串(羊肉串)
多个含义: 可以有很多,也可以什么都没有,但是必须使用" "(双引号)引起来的,才算是字符串
字符串分为两大类:
1.不可变字符串**(String):当前字符串对象创建完成之后,该对象的内容是不可修改,一旦进行修改,此时得到的是一个全新 的字符串
2.可变字符串
(StringBuffer和Stringbuilder)**:当前字符串对象创建完成之后,该对象的内容是可以改变,修改字符串时相 当于在原有字符串的内容基础之上进行修改,不会创建新的字符串

String,StringBuffer和StringBuilder都是实现CharSequence(字符序列接口)接口,字符串的本质其实就是一个***字符数组***

各种字符串API需要记住并熟练使用

RT-DETR改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度 本文记录的是利用改进检测精度,详细说明了优化原因,注意事项等。原论文在红外小目标检测任务中,小目标在多次下采样操作中容易丢失关键信息。通过替代编码器和解码器基本组件中的传统卷积操作,更好地保留小目标的重要信息。HCF-Net: Hierarchical Context Fusion Network for Infrared Small Object Detection采用多分支特征提取策略,通过不同分支提取不同尺度和层次的特征。利用局部、全局和串行卷积分支,对输入特征张量进行处理。通过控制 patch si 阅读详情

相关推荐

YOLOV8多模态(可见光+红外光目标检测任务,基于Ultralytics官方代码实现)

torch 2.3.1 torchvision 0.18.1 Python 3.8.19 tensorrt 8.5.3.1DroneVehicle数据集下载地址DroneVehicle 数据集由无人机采集的 56,878 张图像组成,其中一半是 RGB 图像,其余是红外图像。我们为这 5 个类别制作了丰富的注释,其中包含定向边界框。其中,汽车在 RGB 图像中有 389,779 个注释,在

Mjy的博客 7585

Java包装类--泛型--迭代器--Lambda

Java包装类--泛型--迭代器--Lambda

2402_89573492的博客 1446

MySQL安装最后启动报错--Job for mysqld.service failed because the control process exited with error code. See

MySQL安装最后启动报错: [root@localhost mysql]# systemctl start mysqld Warning: mysqld.service changed on disk. Run 'systemctl daemon-reload' to reload units. Job for mysqld.service failed because the control process exited with error code. See "systemctl status m

chenchen的博客 2746

【JAVA进阶】包装类,Arrays类,Lambda表达式

public static void sort​(类型[] a, Comparator

Javascript_tsj的博客 805

解决eNSP安装WinPcap版本冲突的完整指南

网络数据包捕获工具WinPcap是网络仿真环境的基础组件,其版本兼容性直接影响eNSP等网络模拟器的正常运行。当系统已安装新版WinPcap时,eNSP内置的旧版安装程序会因版本校验机制触发报错。通过彻底卸载现有驱动、安装特定版本WinPcap 4.1.2,并验证注册表和服务状态,可解决版本冲突问题。对于需要同时使用新版驱动的场景,可采用虚拟机隔离或Npcap兼容模式。该方案适用于Windows 10/11系统环境,涉及驱动签名、虚拟网卡等典型网络工程问题。

weixin_32612263的博客 337

Apollo&Carla联合仿真环境搭建与实战调试

本文详细介绍了Apollo与Carla联合仿真环境的搭建与实战调试流程,涵盖硬件配置、软件依赖安装、Apollo环境配置、Carla仿真器安装、桥接服务设置以及常见问题解决方案。通过逐步指导,帮助开发者高效实现自动驾驶仿真测试,提升开发效率。

ee345的博客 200

java8中的lambda表达式,看这篇就够了

Lambda表达式 Lambda是简洁的标识可传递匿名函数的一种方式。“互动”事件驱动下,最终面向对象编程和函数式编程结合才是趋势。 java中,一段代码的传递并不容易。因为JAVA是面向对象的语言,如果要传递一段代码,必须先构建类,再生成对应的对象来传递所要的代码。在之前,JAVA的设计者都抗拒加入这一特性,虽然JAVA现有的特性也能通过类和对象实现类似的API但是这样复杂且不易于使用。在后期,问题早已不是JAVA是不是要变成一门使用函数式编程的语言,而是如何实现这种改变。在java8之前已经有了多年的实

不会骑摩托的程序员不是好的摄影师 2万+

PC微信逆向:破解聊天记录文件!_读取别人pc微信msg文件

本文详细介绍了PC版微信数据库的解密方法,总结了前人经验并补充了关键细节。通过OllyDbg调试工具从微信内存中获取32字节加密密钥,使用C++结合OpenSSL库实现解密程序。重点解决了开发环境配置问题,包括Visual Studio项目设置和OpenSSL库的版本适配,将原本固定的数据库路径改为参数化输入,提高了工具的通用性。该方案为电子取证中的微信数据提取提供了完整的技术路径,避免了研究者重复探索已解决的问题。

zz96405784848的博客 9753

Java8编程实战

Java一直作为优秀的编程语言活跃于软件开发行业,掌握Java不仅是一件兴奋的事,更是一把可以帮助你轻松进入软件行业大门的一把金钥匙,本套课程将为读者讲解Java8的所有核心技术知识,一共240集的Java8开发课程,全网独一无二的教学视频资料,你还等什么?赶紧来学吧!官方QQ群:612148723。

英伟达笔试1

本文摘要: 使用NAND2门设计4位奇偶校验发生器,通过15个NAND2门实现4输入异或功能,分三级结构完成奇校验计算。 时序分析公式总结: 建立时间约束:T_cq + T_comb(max) + T_setup + T_skew ≤ T_clk 保持时间约束:T_cq + T_comb(min) + T_skew ≥ T_hold 提供了两段路径的具体时序检查公式和建立违规修复方法 分析32位粘滞累积寄存器Verilog代码: 功能:记录输入数据中出现过的所有1位 每个bit独立实现,复位清零,有效输入时

soulermax的博客 166

不用编码器也能玩转BLDC?手把手教你反电动势定位实战

本文详细介绍了无刷直流电机(BLDC)的无传感器控制方案——反电动势定位法,通过STM32实战演示如何实现基本控制。文章涵盖核心原理、硬件准备、信号采集技巧及代码实现,特别适合静音风扇、小型机器人等对成本敏感的应用场景,帮助开发者降低硬件成本并提升系统可靠性。

lg888的博客 897

从内部类到lambda表达式+包装类装箱拆箱

//外部类 public class testDeque { int num=100; //内部类 class A{ int num=10; public void put(){ int num=1; System.out.println("inner"); //num为方法中的 为了区分,使用 类名.this.变量名 System.out.prin

BOWWOB的博客 195

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢。

具身机器人和通用AI 1229

自用 Java 学习 IO流前总结(基本数据转换)

自己随手写出来了,不在意排版和文章思维的以下都是想到哪里写到哪里. 甚至可能还有错别字.

Ke_youmi的博客 595

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java知识点03——面向对象02(包装类、final关键字、抽象类、接口、内部类、Lambda、枚举类、函数式接口、Stream API)

Java知识点03——面向对象02(包装类、final关键字、抽象类、接口、内部类、Lambda、枚举类、函数式接口、Stream API)

努力的小C 1314

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【2021Java后端面试题整理】Java基础

Java基础 1. 面向对象和面向过程的区别 面向对象的设计思想是将需要解决的问题分解成一个个对象,这一个个对象可以用来描述在完成这件事中扮演的具体角色和行为。 面向过程的设计思想是将需要解决的问题拆分成一个个具体的步骤,然后设置这些步骤的实现方法,然后按照顺序一步步实现即可 优缺点: 面向对象相较于面向过程而言,有着易维护、易复用和易扩展的特点,由于面向对象有封装、继承和多态的特点,所以能够设计出低耦合的系统,易于去维护;而相对面向过程,面向对象性能较低 封装是将对象属性进行私有化,对外提供一个公共的访问

叶落雨飘的博客 5670

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java 基础知识总结(超详细整理)_java基础知识总结 超详细,收藏这篇就够了

本文全面梳理了Java核心知识点,涵盖Java 21特性及开发必备内容。主要内容包括:1)Java三大特性与运行机制;2)数据类型与包装类陷阱;3)运算符优先级与流程控制;4)面向对象SOLID原则;5)字符串与数组处理;6)异常处理最佳实践;7)枚举与记录类新特性;8)泛型与反射基础。特别强调自动装箱、字符串不可变性、switch增强等高频考点,并提供了Java版本演进关键特性速记。文章采用代码示例+易错点标注的形式,适合从入门到进阶的系统学习,为后续集合、并发等专题打下坚实基础。

likuoelie的博客 1740

Java 基础知识总结(超详细整理)

特性说明2026 年实际意义一次编写,到处运行字节码 + JVM 解释执行跨平台仍是最大卖点(云原生、容器化)面向对象封装、继承、多态核心设计思想健壮性自动垃圾回收、无指针、异常处理生产环境崩溃率低多线程支持虚拟线程(Java 21+)极大降低门槛安全性类加载器 + 字节码校验 + SecurityManager企业级首选生态丰富Spring 全家桶、Netty、Dubbo、Kafka 等后端霸主地位稳固2026 年新增共识。

likuoelie的博客 2172

java基础(知识点整理)

Java基础知识点整理,个人复习笔记

Jilit_jilit的博客 897

Java系列全面总结:泛型+异常+反射+集合+注解+Lambda表达式等详解

Java基础非常重要,俗话说得好地基不牢后续地动山摇 ,所以基础很重要在过去的时间中,我写过Java基础的整个系列,为了方便大家的阅读,也为了让知识更系统化,这里我单独把Java基础系列一并罗列于此,希望对有用的人有用。以下为整个Java系列的目录,希望大家喜欢~!目录Java8大基本数据类型图文详解数据类型这篇文章主要讲了以下几点:Java基础非常重要,俗话说得好地基不牢后续地动山摇 ,所以基础很重要@mikechen在过去的时间中,我写过Java基础的整个系列,为了方便大家的阅读,也为了让知识更系统化,

m0_67322837的博客 307

Java中的语法糖

Java中的语法糖 语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言本身的功能来说没有什么影响,只是为了方便程序员进行开发,提高开发效率,使用这种语法写出来的程序可读性也更高。说白了,语法糖就是对现有语法的一个封装。 但其实,Java虚拟机是并不支持语法糖的,语法糖在程序编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。所以在Java中真正支持语法糖的是Java编译器。 Java中的语法糖# Java编程语言提供了很多语法糖,整理

keeper42的博客 366

Java进阶基础知识(自己整理的笔记)

Java进阶基础知识1、认识常用的数据类型1.1 字节1.2 数组创建:1.3 对象数组的内存1.4 字符串2、 构造方法3 、继承4、单例模式(饿汉式单例模式)4.1、懒汉式单例模式5、类5.1 嵌套类5.2 内部类5.3 静态嵌套类5.4 局部类5.5 抽象类5.6 匿名类6、多态7、接口8、Lambda8.1 方法引用9、枚举 enum10、数字10.1 包装类10.2 自动装箱10.3 自动拆箱10.4 Math10.4 Random10.5 UUID10.6 字符串转数字10.7 数字转字符串10

weixin_43272286的博客 1941

浅聊Java中的语法糖

Java常见语法糖: 自动拆箱, 自动装箱... 枚举 泛型等等

Kaka_csdn14的博客 504

整理好了!2024年最常见 100 道 Java基础面试题(四十四)

1、Java 金额计算怎么避免精通丢失? 2、Java 语法糖是什么意思?

weixin_38616368的博客 990

java jdk各个版本的典型新功能介绍

因为国内java应用各个版本开发的都有,本文整理了java jdk各个版本的典型新功能,供大家参考,或者面试。

qq_45732829的博客 1130

C#知识要点整理(12月份整理)——结构类、泛型、委托和事件

一、结构与类 1、类:引用类型,存储在堆heap中,class; 堆:值类型,存储在栈stack中,struct 2、C#成员可访问行修饰有 public protected,internal 3、何时使用引用传递?ref?因为效率较高,面对复杂数据结构时采用 4、out参数 不初始化引用传入参数 function a(out int x){ x=12; return

qq403198745的博客 533
上一篇: Java基础知识整理(正则表达式,StringBuffer,StringBuilder,常用数据类,System类,RunTime类,Random类)
下一篇: Java基础知识整理 (Date类,Calender类,枚举,异常,throw和throws抛出异常)
码上发财V
博客等级 码龄11年 4粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值