if(!(Equals和==)&& !内存分配问题 )

本文探讨了Java中equals方法与==运算符的区别,重点分析了它们在基本数据类型及引用对象比较时的行为差异,并通过具体示例说明了String对象在内存分配上的不同表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

!(Equals和==)

首先直观上看到: string方向的方法  和  运算符   


基数数据类型比较      引用对象比较

1:Equals和== 判断值是否相同 是就返回True 否就返回false

2:Equals和==  判断在栈内存相同  是就返回True 否就返回false


!(内存分配问题)

String str = "abc";

String st1 = new String( "abc");

创建了几个对象?

    1

str该字符串值在缓冲区,后面如果指继续使用和它一样的字符串值,则向同一字符串

如果代码是这个样子呐

String st1 = new String( "abc");

创建了几个对象?

2

一个是new string

一个是常量abc的创建

用你的方案帮我优化一下以下代码while (hasInterrupt) { usbRequest.initialize(mDeviceConnection, usbEpIn) usbRequest.queue(byteBuffer, inMax) if (mDeviceConnection ==null) return@launch if (mDeviceConnection!!.requestWait() === usbRequest) { val retData = byteBuffer.array() Log.i(TAG, "收到数据 " + CFDLHexUtil.formatHexString(retData,true)); //获取系统信息 if (retData[0].toInt() == 0x55 && retData[3].toInt() == 0x10) { val byteArray = retData.sliceArray(4 until retData.size) forEachListenersForSafety(EventHid.OnSysInfo, byteArray) } // 获取固件版本回调 if (retData[0].toInt() == 0x55 && retData[3].toInt() == 0x15) { // 获取对应设备的固件版本 val rxVersion = (retData[4].toInt() and 0xff shr 4).toString() + "." + if ((retData[4] and 0x0f) > 0x09) (retData[4] and 0x0f).toString() else "0" + (retData[4] and 0x0f).toString() val tx1Version = if (Integer.toHexString(retData[5].toInt() and 0xff).equals("ff")) "" else { (retData[5].toInt() and 0xff shr 4).toString() + "." + if ((retData[5] and 0x0f) > 0x09) (retData[5] and 0x0f).toString() else "0" + (retData[5] and 0x0f).toString() } val tx2Version = if (Integer.toHexString(retData[6].toInt() and 0xff).equals("ff")) "" else { (retData[6].toInt() and 0xff shr 4).toString() + "." + if ((retData[6] and 0x0f) > 0x09) (retData[6] and 0x0f).toString() else "0" + (retData[6] and 0x0f).toString() } forEachListenersForSafety(EventHid.OnCallDeviceVersion,rxVersion, tx1Version, tx2Version) } //降噪 if (retData[0].toInt() == 0x55 && retData[3].toInt() == 0x13) { forEachListenersForSafety(EventHid.OnRxNoise, retData[4].toInt()) } //自动增益 if (retData[0].toInt() == 0x55 && retData[3].toInt() == 0x1d) { forEachListenersForSafety(EventHid.OnAutoGain, retData[4].toInt()) } //rx输出增益 if (retData[0].toInt() == 0x55 && retData[3].toInt() == 0x19) { forEachListenersForSafety(EventHid.OnRxOutGain, retData[4].toInt()) } //获取sn /*if (retData[0].toInt() == 0xaa && retData[3].toInt() == 0x16) { val len = retData[2].toInt() val snData = retData.copyOfRange(4, 4 + len) val res = formatSN(snData) forEachListenersForSafety(EventHid.OnCallSnNum, res!!) }*/ } }
最新发布
03-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值