Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Java中对象的深拷贝和浅拷贝实现方法_创想鸟

Java中对象的深拷贝和浅拷贝实现方法

浅拷贝复制对象时仅复制基本类型值和引用地址,原对象与副本共享引用对象;深拷贝递归复制所有层级对象,确保完全独立。Java中可通过实现Cloneable接口进行浅拷贝,或通过递归clone、序列化反序列化、拷贝构造器等方式实现深拷贝。核心区别在于数据独立性:浅拷贝内存开销小但存在共享风险,适用于不可变对象或性能敏感场景;深拷贝适用于可变引用字段,避免副作用,常用于快照、数据隔离等场景。常见陷阱包括未实现Cloneable接口、遗漏引用字段深拷贝、Serializable缺失及transient字段处理不当等。

java中对象的深拷贝和浅拷贝实现方法

Java中对象的深拷贝和浅拷贝,本质上讲,是关于“复制”这个动作的深浅程度。浅拷贝仅仅复制了对象本身及其内部的原始类型字段值,而对于引用类型字段,它复制的只是这些字段的引用,而非引用指向的实际对象。这意味着,原对象和拷贝对象会共享同一份内部引用对象。深拷贝则不同,它不仅复制了对象本身,还会递归地复制其内部所有引用类型字段指向的对象,确保新旧对象在内存中完全独立,互不影响。选择哪种方式,往往取决于你对数据独立性的要求,以及对性能的考量。

解决方案

在Java中实现对象的深拷贝和浅拷贝,有几种常用的方法,每种都有其适用场景和需要注意的地方。我个人在项目中接触下来,发现理解它们背后的机制远比记住语法重要。

浅拷贝的实现

最直接的浅拷贝方式,往往是通过实现

Cloneable

接口并重写

Object

类的

clone()

方法来完成。

立即学习“Java免费学习笔记(深入)”;

class Address {    String city;    String street;    public Address(String city, String street) {        this.city = city;        this.street = street;    }    @Override    public String toString() {        return "Address{" + "city='" + city + ''' + ", street='" + street + ''' + '}';    }}class Employee implements Cloneable {    String name;    Address address; // 引用类型字段    public Employee(String name, Address address) {        this.name = name;        this.address = address;    }    @Override    protected Object clone() throws CloneNotSupportedException {        // Object.clone() 默认实现就是浅拷贝        return super.clone();    }    @Override    public String toString() {        return "Employee{" + "name='" + name + ''' + ", address=" + address + '}';    }}// 示例用法public class ShallowCopyDemo {    public static void main(String[] args) throws CloneNotSupportedException {        Address addr = new Address("Beijing", "Chaoyang Road");        Employee originalEmp = new Employee("Alice", addr);        Employee clonedEmp = (Employee) originalEmp.clone();        System.out.println("Original: " + originalEmp); // Original: Employee{name='Alice', address=Address{city='Beijing', street='Chaoyang Road'}}        System.out.println("Cloned:   " + clonedEmp);   // Cloned:   Employee{name='Alice', address=Address{city='Beijing', street='Chaoyang Road'}}        // 修改克隆对象的地址信息        clonedEmp.address.street = "Haidian Road";        System.out.println("After modification:");        System.out.println("Original: " + originalEmp); // Original: Employee{name='Alice', address=Address{city='Beijing', street='Haidian Road'}}        System.out.println("Cloned:   " + clonedEmp);   // Cloned:   Employee{name='Alice', address=Address{city='Beijing', street='Haidian Road'}}        // 可以看到,原对象的地址也跟着变了,这就是浅拷贝的“坑”    }}

这里,

Object.clone()

方法执行的就是浅拷贝。它会创建一个新对象,然后将原对象的所有字段值复制到新对象中。对于原始类型字段(如

int

,

boolean

等),是值复制;对于引用类型字段(如

Address

对象),复制的是引用本身,而不是引用指向的

Address

对象内容。所以,当修改

clonedEmp.address

时,

originalEmp.address

也受到了影响,因为它们指向的是同一个

Address

实例。

深拷贝的实现

深拷贝的目标是让拷贝对象与原对象完全独立。通常有以下几种策略:

递归实现

clone()

方法 (手动深拷贝)这是最直接,也是最能体现深拷贝原理的方式。你需要在父类和所有包含引用类型字段的子类中,递归地重写

clone()

方法,并在其中手动调用引用对象的

clone()

方法。

class Address implements Cloneable {    String city;    String street;    public Address(String city, String street) {        this.city = city;        this.street = street;    }    @Override    protected Object clone() throws CloneNotSupportedException {        return super.clone(); // Address类内部没有引用类型,所以浅拷贝即可    }    @Override    public String toString() {        return "Address{" + "city='" + city + ''' + ", street='" + street + ''' + '}';    }}class Employee implements Cloneable {    String name;    Address address;    public Employee(String name, Address address) {        this.name = name;        this.address = address;    }    @Override    protected Object clone() throws CloneNotSupportedException {        Employee clonedEmp = (Employee) super.clone(); // 先进行浅拷贝        // 对引用类型字段进行深拷贝        clonedEmp.address = (Address) this.address.clone();        return clonedEmp;    }    @Override    public String toString() {        return "Employee{" + "name='" + name + ''' + ", address=" + address + '}';    }}public class DeepCopyCloneDemo {    public static void main(String[] args) throws CloneNotSupportedException {        Address addr = new Address("Shanghai", "Pudong Road");        Employee originalEmp = new Employee("Bob", addr);        Employee clonedEmp = (Employee) originalEmp.clone();        System.out.println("Original: " + originalEmp);        System.out.println("Cloned:   " + clonedEmp);        clonedEmp.address.street = "Huangpu Road"; // 修改克隆对象的地址        System.out.println("After modification:");        System.out.println("Original: " + originalEmp); // Original: Employee{name='Bob', address=Address{city='Shanghai', street='Pudong Road'}}        System.out.println("Cloned:   " + clonedEmp);   // Cloned:   Employee{name='Bob', address=Address{city='Shanghai', street='Huangpu Road'}}        // 这次原对象的地址没变,实现了深拷贝    }}

通过序列化和反序列化实现这是实现深拷贝的一种“旁门左道”但非常有效的方式,尤其适用于对象图复杂、层级较深的情况。其原理是将对象写入一个输出流(序列化),然后再从输入流中读出(反序列化),这样得到的对象就是原对象的一个全新且独立的副本。

import java.io.*;class Address implements Serializable { // 必须实现Serializable接口    String city;    String street;    public Address(String city, String street) {        this.city = city;        this.street = street;    }    @Override    public String toString() {        return "Address{" + "city='" + city + ''' + ", street='" + street + ''' + '}';    }}class Employee implements Serializable { // 必须实现Serializable接口    String name;    Address address;    public Employee(String name, Address address) {        this.name = name;        this.address = address;    }    @Override    public String toString() {        return "Employee{" + "name='" + name + ''' + ", address=" + address + '}';    }}public class DeepCopySerializationDemo {    public static  T deepCopy(T obj) {        try {            ByteArrayOutputStream bos = new ByteArrayOutputStream();            ObjectOutputStream oos = new ObjectOutputStream(bos);            oos.writeObject(obj); // 序列化            oos.close();            ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());            ObjectInputStream ois = new ObjectInputStream(bis);            T copiedObj = (T) ois.readObject(); // 反序列化            ois.close();            return copiedObj;        } catch (IOException | ClassNotFoundException e) {            throw new RuntimeException("Deep copy failed: " + e.getMessage(), e);        }    }    public static void main(String[] args) {        Address addr = new Address("Guangzhou", "Tianhe Road");        Employee originalEmp = new Employee("Charlie", addr);        Employee clonedEmp = deepCopy(originalEmp);        System.out.println("Original: " + originalEmp);        System.out.println("Cloned:   " + clonedEmp);        clonedEmp.address.street = "Yuexiu Road";        System.out.println("After modification:");        System.out.println("Original: " + originalEmp);        System.out.println("Cloned:   " + clonedEmp);        // 同样实现了深拷贝    }}

通过拷贝构造器或工厂方法这是一种更面向对象的设计模式,通过构造函数或静态工厂方法来创建对象的副本。它提供了更好的类型安全性和控制力。

class Address {    String city;    String street;    public Address(String city, String street) {        this.city = city;        this.street = street;    }    // 拷贝构造器    public Address(Address other) {        this.city = other.city;        this.street = other.street;    }    @Override    public String toString() {        return "Address{" + "city='" + city + ''' + ", street='" + street + ''' + '}';    }}class Employee {    String name;    Address address;    public Employee(String name, Address address) {        this.name = name;        this.address = address;    }    // 拷贝构造器    public Employee(Employee other) {        this.name = other.name;        // 对引用类型字段进行深拷贝        this.address = new Address(other.address);    }    @Override    public String toString() {        return "Employee{" + "name='" + name + ''' + ", address=" + address + '}';    }}public class DeepCopyConstructorDemo {    public static void main(String[] args) {        Address addr = new Address("Shenzhen", "Nanshan Road");        Employee originalEmp = new Employee("David", addr);        Employee clonedEmp = new Employee(originalEmp); // 使用拷贝构造器        System.out.println("Original: " + originalEmp);        System.out.println("Cloned:   " + clonedEmp);        clonedEmp.address.street = "Futian Road";        System.out.println("After modification:");        System.out.println("Original: " + originalEmp);        System.out.println("Cloned:   " + clonedEmp);        // 同样实现了深拷贝    }}

Java中浅拷贝与深拷贝的核心区别与适用场景是什么?

讲到深浅拷贝,我经常会想,这就像是复印文件。浅拷贝就好比你复印了一份文件的封面,而里面的内容(比如文件里夹着的一张照片)还是和原件共享的。你动了复印件里的照片,原件里的照片也会变。深拷贝呢,就是连同文件封面带里面的所有内容,包括那张照片,都完完整整地复印了一份新的,互不影响。

核心区别:

数据独立性: 这是最关键的。浅拷贝中,原始对象和拷贝对象会共享内部的引用类型对象。这意味着对拷贝对象内部引用对象的修改,会直接反映到原始对象上。而深拷贝则确保了所有层级的对象都是独立的副本,修改拷贝对象不会影响原始对象。内存占用: 浅拷贝只为顶层对象分配了新内存,内部引用对象仍然是共享的,所以内存开销相对较小。深拷贝需要为所有被复制的对象(包括嵌套对象)都分配新的内存,因此内存开销通常更大。实现复杂性: 浅拷贝通常通过

Object.clone()

或简单的字段赋值即可实现。深拷贝则需要根据对象结构的复杂性,选择递归

clone()

、序列化或拷贝构造器等方式,实现起来通常更复杂,尤其是当对象图非常深或存在循环引用时。

适用场景:

浅拷贝适用场景:

对象内部不包含引用类型字段,或者所有引用类型字段都是不可变(Immutable)的: 例如,一个只包含

String

、

Integer

等基本包装类和原始类型字段的对象。

String

虽然是引用类型,但它是不可变的,所以浅拷贝

String

引用,效果上等同于深拷贝。性能敏感的场景: 如果对象结构简单,且你明确知道不需要完全独立的副本,或者修改共享引用是可接受甚至期望的行为,浅拷贝能提供更好的性能。当你希望副本和原件共享部分状态时: 某些设计模式或特定业务逻辑可能要求对象的部分状态是共享的。

深拷贝适用场景:

当对象包含可变的引用类型字段时: 这是最常见的需求。例如,一个

Order

对象包含一个

List

,如果你希望修改拷贝

Order

的

List

不会影响原始

Order

,就必须使用深拷贝。需要完全独立的数据副本,避免副作用: 比如,你在处理一个复杂的数据结构,需要对其进行一系列操作,但又不想破坏原始数据,这时深拷贝就必不可少。实现“快照”功能: 捕获对象在某一时刻的状态,以便后续恢复或比较。

我个人在项目中,如果不是明确知道对象内部都是不可变类型,或者有特殊共享需求,我通常会倾向于深拷贝。因为浅拷贝带来的“副作用”往往是隐蔽的,在后期维护时可能导致难以追踪的bug。

如何在Java中实现自定义对象的深拷贝,有哪些常见陷阱?

实现自定义对象的深拷贝,我刚才提到了几种方法,每种都有其“脾气”和需要注意的坑。没有银弹,只有最适合你当前场景的方案。

实现方法回顾:

递归实现

Cloneable

接口并重写

clone()

方法:

核心思想: 在每个需要深拷贝的类中,都实现

Cloneable

接口,并重写

protected Object clone()

方法。在重写的方法中,首先调用

super.clone()

获取一个浅拷贝,然后对所有引用类型字段,递归地调用它们的

clone()

方法,并将返回的新对象赋值给当前对象的对应字段。示例: 之前展示的

Employee

和

Address

类的例子。

通过序列化和反序列化:

核心思想: 将对象及其所有可序列化的内部对象写入一个

ByteArrayOutputStream

,再从

ByteArrayInputStream

中读出。这个过程会创建所有对象的新实例。示例: 之前展示的

deepCopy

泛型方法。

通过拷贝构造器或工厂方法:

核心思想: 为需要拷贝的类提供一个特殊的构造器,它接受一个同类型的对象作为参数。在这个构造器中,手动复制所有字段,对于引用类型字段,则调用其自身的拷贝构造器或工厂方法来创建新实例。示例: 之前展示的

Employee(Employee other)

构造器。

常见陷阱:

clone()

方法实现中的陷阱:

未实现

Cloneable

接口:

Cloneable

是一个标记接口,如果一个类没有实现它,但调用了

Object.clone()

,会抛出

CloneNotSupportedException

。很多人会忘记让所有参与拷贝的类都实现这个接口。未调用

super.clone()

:

Object.clone()

是本地方法,负责对象的内存分配和原始字段的复制。如果你直接

new

一个新对象,就失去了

clone()

的语义,而且还需要手动复制所有字段,容易出错。忘记对引用类型字段进行递归深拷贝: 这是最常见的错误,直接导致深拷贝变成了浅拷贝。尤其在对象结构复杂时,容易遗漏某个字段。

Object.clone()

的访问修饰符:

Object.clone()

是

protected

的,这意味着你只能在同一个包内或子类中直接调用它。通常,我们会将重写的

clone()

方法声明为

public

,方便外部调用。

CloneNotSupportedException

的处理: 由于

Object.clone()

声明抛出此异常,你重写时也需要处理或声明抛出。

序列化/反序列化实现中的陷阱:

未实现

Serializable

接口: 所有参与序列化拷贝的对象(包括其内部所有引用对象)都必须实现

Serializable

接口,否则会抛出

NotSerializableException

。

transient

关键字: 被

transient

修饰的字段在序列化时会被忽略,这意味着它们不会被拷贝。如果你需要拷贝这些字段,就不能用

transient

修饰,或者需要自定义序列化逻辑(例如,通过实现

Externalizable

接口或提供

writeObject

/

readObject

方法)。性能开销: 序列化/反序列化过程涉及IO操作,通常比直接的

clone()

或拷贝构造器要慢。对于性能要求极高的场景,可能需要慎重考虑。版本兼容性: 如果序列化的字节流被长期存储或在不同版本的应用之间传输,

serialVersionUID

的管理变得很重要,否则可能出现

InvalidClassException

。不过,对于简单的内存深拷贝,这通常不是大问题。

拷贝构造器实现中的陷阱:

遗漏字段: 拷贝构造器需要手动复制所有字段。如果后期新增了字段,而忘记更新拷贝构造器,那么新字段将不会被拷贝,可能导致数据不一致。未对引用类型字段进行深拷贝: 和

clone()

一样,

以上就是Java中对象的深拷贝和浅拷贝实现方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/70897.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
需求变更怎么处理流程图
上一篇 2025年11月13日 08:28:46
人力需求变更说明怎么写
下一篇 2025年11月13日 08:29:31

相关推荐

  • 怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法

    怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法怎么用豆包AI分析Python内存使用 AI辅助定位内存泄漏的实用方法

    python内存泄漏可通过tracemalloc、objgraph及代码分析定位。1. 使用tracemalloc模块记录内存分配堆栈,生成快照并输出统计结果,交由豆包ai分析可疑内存泄漏点;2. 用objgraph查看常见对象类型及增长趋势,若发现异常增长对象可交由豆包判断是否合理;3. 将疑似泄…

    2026年9月24日 • 用户投稿
    000
  • Java对象数组归并排序逻辑错误解析与修正

    Java对象数组归并排序逻辑错误解析与修正Java对象数组归并排序逻辑错误解析与修正Java对象数组归并排序逻辑错误解析与修正Java对象数组归并排序逻辑错误解析与修正

    本文旨在深入分析Java中对对象数组执行归并排序时常见的逻辑错误,特别是子数组创建时的System.arraycopy误用以及merge方法中循环结构的不当,导致排序结果异常。通过详细的错误剖析,提供了一套修正后的归并排序实现方案,包括辅助数组复制方法和优化的合并逻辑,确保对象数组能够正确、高效地进…

    2026年9月24日 • 用户投稿
    100
  • 抖音双11好物节有哪些优惠活动?双11抖音有什么活动

    抖音双11好物节有哪些优惠活动?双11抖音有什么活动抖音双11好物节有哪些优惠活动?双11抖音有什么活动抖音双11好物节有哪些优惠活动?双11抖音有什么活动抖音双11好物节有哪些优惠活动?双11抖音有什么活动

    一年一度的双11购物狂欢节即将来临,抖音平台也紧跟潮流,推出了抖音双11好物节活动。这次活动可谓是优惠满满,好物多多,让广大消费者在购物的同时,也能享受购物的乐趣。下面,就让我为大家详细介绍一下2025年抖音双11好物节的优惠活动吧! 一、抖音双11好物节活动时间 活动周期:2025年9月16日(中…

    2026年9月24日 • 用户投稿
    000
  • 如何验证厂商宣传的散热技术是否切实有效?

    如何验证厂商宣传的散热技术是否切实有效?如何验证厂商宣传的散热技术是否切实有效?如何验证厂商宣传的散热技术是否切实有效?如何验证厂商宣传的散热技术是否切实有效?

    要验证散热技术是否有效,需结合产品规格、第三方评测、用户反馈及自行测试。首先查看热管数量与材质、均热板设计、风扇风量与静压等真实参数,警惕模糊宣传;其次参考专业媒体在标准环境下的烤机测试数据,如AIDA64或FurMark负载下的温度与频率表现;再通过电商平台或论坛收集长期使用反馈,关注共性问题如噪…

    2026年9月24日 • 用户投稿
    000
  • 主板声卡芯片的实际音质是否与宣传相符?

    答案:主板声卡芯片实际音质受限于电路设计与干扰,厂商宣传的高参数多为理想值,现实表现往往仅“够用”。集成声卡能满足日常需求,但细节、声场和底噪控制不如独立声卡;高端主板虽有改进,仍难敌独立供电、优质元件与屏蔽设计带来的音质优势。判断音质应以实听为准,关注底噪、分离度、动态等表现,并结合高品质音源与设…

    2026年9月24日
    000
  • 抖音账号无故被封禁该如何解决?封禁是否因他人举报而起?详解抖音账号封禁原因!

    抖音账号无故被封禁该如何解决?封禁是否因他人举报而起?详解抖音账号封禁原因!抖音账号无故被封禁该如何解决?封禁是否因他人举报而起?详解抖音账号封禁原因!抖音账号无故被封禁该如何解决?封禁是否因他人举报而起?详解抖音账号封禁原因!抖音账号无故被封禁该如何解决?封禁是否因他人举报而起?详解抖音账号封禁原因!

    一、抖音账号被封的常见原因 (一)是否因他人举报导致封号? 1. 一次举报会怎样?当一个抖音账号被用户举报时,平台通常不会立即采取严厉措施。首次举报多数情况下只会触发系统警告。例如,若发布的视频涉及轻微版权问题或存在争议性言论,虽未明显违规,但经他人举报后,可能会收到平台提醒。2. 多次举报的严重后…

    2026年9月24日 • 用户投稿
    200
  • 如何用豆包 AI 大模型与 AI 聚会游戏设计工具结合,活跃聚会氛围?​

    如何用豆包 AI 大模型与 AI 聚会游戏设计工具结合,活跃聚会氛围?​如何用豆包 AI 大模型与 AI 聚会游戏设计工具结合,活跃聚会氛围?​如何用豆包 AI 大模型与 AI 聚会游戏设计工具结合,活跃聚会氛围?​如何用豆包 AI 大模型与 AI 聚会游戏设计工具结合,活跃聚会氛围?​

    豆包 ai 大模型与 ai 聚会游戏设计工具结合,能有效提升聚会互动性和趣味性。1. 可用豆包 ai 生成个性化问题或话题,如搞笑类、回忆类等,帮助破冰交流;2. 结合聚会游戏工具,利用 ai 生成的关键词或背景设定定制专属小游戏,增强即兴互动;3. 借 ai 生成角色设定和剧情线索,营造角色扮演氛…

    2026年9月24日 • 用户投稿
    100
  • mysql数据库中的自增列如何使用

    自增列是MySQL中用于自动产生唯一数值的整数列,通常作为主键使用。通过AUTO_INCREMENT属性,插入数据时若未指定值,系统会自动分配比当前最大值大1的数值,确保每条记录拥有唯一标识,简化插入操作。创建表时可定义自增列,如:CREATE TABLE users (id INT AUTO_IN…

    2026年9月24日
    100
  • 如何高效管理Debian文件系统

    高效管理debian文件系统可以通过以下几个步骤来实现: 了解文件系统结构: Debian文件系统遵循标准的Linux文件系统层次结构,例如/bin, /etc, /home, /usr, /var等。熟悉这些目录的作用,有助于更好地组织和管理文件。 磁盘空间管理: 使用df -h命令查看磁盘空间使…

    2026年9月24日
    000
  • 高效集成SOAP服务:Spring Boot中WSDL转Java的实践与策略

    高效集成SOAP服务:Spring Boot中WSDL转Java的实践与策略高效集成SOAP服务:Spring Boot中WSDL转Java的实践与策略高效集成SOAP服务:Spring Boot中WSDL转Java的实践与策略高效集成SOAP服务:Spring Boot中WSDL转Java的实践与策略

    本教程旨在指导开发者如何在Spring Boot项目中将WSDL(Web Services Description Language)文件转换为Java类,并成功消费SOAP(Simple Object Access Protocol)Web服务。文章将探讨常见的转换挑战,如wsimport兼容性问…

    2026年9月24日 • 用户投稿
    100
  • 怎样让 AI 家居设计工具与豆包配合打造理想家居?实用教程​

    怎样让 AI 家居设计工具与豆包配合打造理想家居?实用教程​怎样让 AI 家居设计工具与豆包配合打造理想家居?实用教程​怎样让 AI 家居设计工具与豆包配合打造理想家居?实用教程​怎样让 AI 家居设计工具与豆包配合打造理想家居?实用教程​

    使用ai家居设计工具与豆包配合能提升家装效率,具体步骤如下:1. 利用ai工具生成设计方案,上传户型图并设定风格偏好,快速获取多个装修效果图;2. 将ai输出结果整理至豆包,为每个房间建立页面,添加说明、表格及标签以便查阅;3. 结合豆包优化预算和采购计划,记录材料价格并比对市场价,设置提醒避免遗漏…

    2026年9月24日 • 用户投稿
    100
  • Java中自定义与内置类同名冲突的解决方案:精确导入的实践

    Java中自定义与内置类同名冲突的解决方案:精确导入的实践Java中自定义与内置类同名冲突的解决方案:精确导入的实践Java中自定义与内置类同名冲突的解决方案:精确导入的实践Java中自定义与内置类同名冲突的解决方案:精确导入的实践

    本文探讨了Java中自定义类与内置类(如LinkedList)同名时引发的编译错误。当项目中同时存在自定义LinkedList和java.util.LinkedList时,程序可能错误地引用自定义实现,导致方法找不到。教程指出,通过精确导入java.util.LinkedList而非通配符java.…

    2026年9月24日 • 用户投稿
    200
  • AI聊天助手有哪些_好用的AI聊天助手工具大全

    AI聊天助手有哪些_好用的AI聊天助手工具大全AI聊天助手有哪些_好用的AI聊天助手工具大全AI聊天助手有哪些_好用的AI聊天助手工具大全AI聊天助手有哪些_好用的AI聊天助手工具大全

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 豆包:字节跳动推出的免费AI智能助手 问小白:免费AI智能助手,支持DeepSeek满血版 讯飞星火:AI智能助手,支持PPT生成、深度推理 逗逗:AI游戏陪玩,支持原神、黑神话、LOL! 立即…

    2026年9月24日 • 用户投稿
    200
  • AIGC官网检测入口 知网免费查重直达链接

    知网AIGC检测与查重服务面向个人开放,官方入口为https://cx.cnki.net,按2元/千字符收费,提供简洁版与全文版报告,检测结果分四级标识AI生成风险,建议使用前确认学校要求并注意隐私保护。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 …

    2026年9月24日
    500
  • Java字符串处理:高效移除末尾逗号与空格的教程

    Java字符串处理:高效移除末尾逗号与空格的教程Java字符串处理:高效移除末尾逗号与空格的教程Java字符串处理:高效移除末尾逗号与空格的教程Java字符串处理:高效移除末尾逗号与空格的教程

    本教程将详细介绍如何在Java中高效、精确地移除字符串末尾的逗号、空格或其他指定分隔符。我们将探讨使用String.replaceAll()方法结合正则表达式的强大功能,以解决传统replace()方法无法精准定位末尾字符的问题,并提供多种场景下的示例代码与注意事项。 1. 引言:字符串清理的常见挑…

    2026年9月24日 • 用户投稿
    100
  • 下一代GPU的功耗会突破1000W吗?

    下一代GPU的功耗会突破1000W吗?下一代GPU的功耗会突破1000W吗?下一代GPU的功耗会突破1000W吗?下一代GPU的功耗会突破1000W吗?

    消费级GPU尚未突破1000W,RTX 5090约575W–600W;而数据中心AI芯片如英伟达B200已达1000W,GB200模块超1700W,进入“千瓦时代”。 下一代GPU的功耗是否会突破1000W,要分消费级和数据中心两个层面来看。目前来看,消费级显卡尚未达到这一水平,但数据中心级的AI芯…

    2026年9月24日 • 用户投稿
    200
  • sublime怎么设置markdown的图片预览_sublime Markdown图片预览设置

    sublime怎么设置markdown的图片预览_sublime Markdown图片预览设置sublime怎么设置markdown的图片预览_sublime Markdown图片预览设置sublime怎么设置markdown的图片预览_sublime Markdown图片预览设置sublime怎么设置markdown的图片预览_sublime Markdown图片预览设置

    Sublime Text需安装插件实现Markdown图片预览:1. 通过Package Control安装MarkdownEditing、MarkdownPreview或OmniMarkupPreviewer;2. 使用MarkdownPreview在浏览器中预览,确保图片路径正确;3. Omni…

    2026年9月24日 • 用户投稿
    100
  • 马斯克第六次起诉 OpenAI,指控窃取商业机密

    马斯克第六次起诉 OpenAI,指控窃取商业机密马斯克第六次起诉 OpenAI,指控窃取商业机密马斯克第六次起诉 OpenAI,指控窃取商业机密马斯克第六次起诉 OpenAI,指控窃取商业机密

    马斯克再度将 openai 告上法庭,这是他在过去十八个月内第六次针对这家人工智能公司发起法律行动。此次,由马斯克创立的人工智能企业 xai 已向加利福尼亚北区联邦法院提交诉状,指控 openai 大规模挖角其关键技术人才,并涉嫌非法获取商业机密。 随着双方矛盾不断升级,诉讼内容也从最初的合同纠纷逐…

    2026年9月24日 • 用户投稿
    000
  • VibeVoice— 微软推出的开源文本转语音模型

    VibeVoice— 微软推出的开源文本转语音模型VibeVoice— 微软推出的开源文本转语音模型VibeVoice— 微软推出的开源文本转语音模型VibeVoice— 微软推出的开源文本转语音模型

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 微软文字转语音 微软文本转语音,支持选择多种语音风格,可调节语速。 0 查看详情 VibeVoice是什么 vibevoice 是微软最新推出的文本到语音(tts)模型,能够生成具有丰富情感、支…

    2026年9月24日 • 用户投稿
    800
  • AI 赋能硬件!荣耀宣布 Magic8 系列拥有“八大行业领先”

    AI 赋能硬件!荣耀宣布 Magic8 系列拥有“八大行业领先”AI 赋能硬件!荣耀宣布 Magic8 系列拥有“八大行业领先”AI 赋能硬件!荣耀宣布 Magic8 系列拥有“八大行业领先”AI 赋能硬件!荣耀宣布 Magic8 系列拥有“八大行业领先”

    10 月 15 日,荣耀即将正式推出 magic8 系列新机。在发布会前夕,官方持续释放预热信息。据 cnmo 获悉,最新一轮预热中,荣耀强调:magic8 系列配备品牌史上最强的硬件组合,通过 ai 深度赋能硬件系统,打造八大行业领先技术,树立新一代旗舰标杆。 荣耀 Magic8 系列 那么,这“…

    2026年9月24日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信