JAVA每日作业day7.1-7.3小总结

news2024/11/23 2:32:32
ok了家人们前几天学了一些知识,接下来一起看看吧

.API

Java API API: Application( 应用 ) Programming( 程序 )
  Interface(接口 )
Java API 就是 JDK 中提供给我们使用的类,这些类将底层
的代码实现封装了起来,我们不需要关心这些类是如何
实现的,只需要学习这些类如何使用即可。
我们在每次查看类中的方法时,都打开源代码进行查
看,这种方式过于麻烦。其实,我们可以通过查帮助文
档的方式,来了解 Java 提供的 API 如何使用。
  • 打开API帮助文档。
  • 点击显示,找到索引,看到输入框。
  • 在输入框里输入,然后回车。
  • 看包。java.lang下的类不需要导包,其他需要。
  • 看类的解释和说明。
  • 看构造方法。
  • 看成员方法

.Object

2.1 Object类概述

java.lang.Object 类是 Java 语言中的根类,每个类都使用
Object 作为超类。所有对象(包括数组)都实现这个类
的方法。
如果一个类没有特别指定父类,那么默认则继承自
Object 类。例如:
public class DemoTest/*extends Object*/
 { // ... }

2.2 toString()方法

方法声明: public String toString() :返回该对象的字符
串表示。
public class Person {
 private String name;
 private int age;

 public Person() {}

 public Person(String name, int age) {
     this.name = name;
     this. Age = age;
 }

// 省略 getXXX() 和 setXXX() }
public class DemoTest {
 public static void main(String[] args) {
 Person p=new Person("张三",23);

 // String str = p.toString();
 // System.out.println(str);
 System.out.println(p.toString());

 //源码中println()方法默认调用了 toString()System.out.println(p); 
    }
 }
由于 toString 方法返回的结果是内存地址,而在开发中,
内存地址并没有实际的应用价值,经常需要按照对象的
属性得到相应的字符串表现形式,因此也需要重写它。
public class Person {
 private String name;
 private int age;

 public Person() { }

 public Person(String name, int age) {this.name = name; this. Age = age;}

// 省略 getXXX() 和 setXXX()

 @Override
 public String toString() { return name+"..."+age; } }
public class DemoTest {
 public static void main(String[] args) {
 Person p=new Person("张三",23);
 System.out.println(p.toString());
 System.out.println(p);
 }

 }
IntelliJ IDEA 中,可以点击 Code 菜单中的
Generate... ,也可以使用快捷键 alt+insert ,点击
toString() 选项。选择需要包含的成员变量并确定。
public class Person {
 private String name;
 private int age;

 public Person() { }

 public Person(String name, int age) { this.name = name; this. Age = age; }

// 省略 getXXX() 和 setXXX()

 @Override
 public String toString() {
 return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
 }
 }

2.3 equals()方法

方法声明: public boolean equals(Object obj) :指示其
他某个对象是否与此对象 相等
equals 方法默认比较两个对象的内存地址是否相同,相
同则返回 true
Object equals() 方法源码:
public boolean equals(Object obj) {
 return (this == obj);
 }
  • this是当前对象,哪个对象调用的equals方法就表示哪个对象
  • obj 表述传递的参数,参数类型 Object ,可以传递任意类型对象。
  • this==obj 比较两个对象的内存地址是否相同
public class Person {
 private String name;
 private int age;

 public Person() { }

 public Person(String name, int age) { this.name = name;this.age = age; }

// 省略 getXXX() 和 setXXX()

 @Override
 public String toString() {
 return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; 
    }
 }
* ==: 既可以比较基本数据类型 , 也可以比较引用数据类型
* 比较基本数据类型 : 比较值是否相等
* 比较引用数据类型 : 比较地址值是否相等
*
* public boolean equals(Object obj) :指示其
他某个对象是否与此对象 相等
*/
public class DemoTest {
public static void main ( String [] args ) {
// 比较基本数据类型
int a = 10 ;
int b = 20 ; System . out . println ( a == b ); //false
// 比较引用数据类型
Person p01 = new Person ( " 张三 " , 23 );
Person p02 = new Person ( " 张三 " , 23 );
System . out . println ( p01 == p02 ); //false
//Object 类的 equals() 方法
System . out . println ( p01 . equals ( p02 )); //false
}
}
实际应用中,比较内存地址是否相同并没有意义,我们
可以定义对象自己的比较方式,比较对象中成员变量的
值是否相同。需要对方法进行重写。
需求:重写 equals() 方法,比较两个对象中姓名和年龄是
否相同,如果姓名和年龄都相同返回 true ,否则返回
false
public class Person {
private String name ;
private int age ;
public Person () {
}
public Person ( String name , int age ) {
this . name = name ;
this . age = age ;
}
// 省略 getXXX() setXXX()
@Override
public boolean equals ( Object obj ) {
// 判断两个对象地址弱相同,即为同一个对象
if ( this == obj ){
return true ;
}
//obj 对象为空,无需比较,返回 false
if ( obj == null ){
return false ;
}
// 如果 Obj Person 类型 则强制转换
if ( obj instanceof Person ){
Person person = ( Person ) obj ;
return
this . name . equals ( person . name ) &&
this . age == person . age ;
}
return false ;
}
@Override
public String toString () {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}' ;
}
public class DemoTest {
public static void main ( String [] args ) {
Person p01 = new Person ( " 张三 " , 23 );
Person p02 = new Person ( " 张三 " , 23 );
System . out . println ( p01 . equals ( p02 )); //true
}
}
IntelliJ IDEA 中,可以使用 Code 菜单中的 Generate…
选项,也可以使用快捷 alt+insert ,并选择 equals() and
hashCode() 进行自动代码生成。

.String

3.1 String类概述

String 类代表字符串, Java 程序中的所有字符串文字
(例如 “abc” )都被实现为此类的实例。
Java 程序中所有的双引号字符串,都是 String 类的对
象。
String 类在 java.lang 包下,所以使用的时候不需要
导包!

3.2 String类的构造方法

public String() 创建一个空字符串对象
public String(String original) 通过给定的内容创建一
String 对象
public String(char[] value) 根据 char 数组中的内容 ,
创建对应的字符串对象
public String(byte[] bytes) 根据 byte 数组中的内容 ,
创建对应的字符串对象
public String(byte[] bytes, int offset, int length)
byte 数组的范围 , 根据指定范围中的内容 , 来创建对应
的字符串对象
直接写字符串字面值也是 String 类对象 例如 : String
str = "abc";
public class DemoTest {
public static void main ( String [] args ) {
//public String() :创建一个空白字符串对象,不含有任何内容
String str01 = new String ();
System . out . println ( "str01=" + str01 );
//public String(String original) 通过给定的内容创建一个 String 对象
String str02 = new String ( "abc" );
System . out . println ( "str02=" + str02 );
//public String(char[] value) 根据char数组中的内容 , 来创建对应的字符串对象
char [] cs = { 'a' , 'b' , 'c' , 'd' };
String str03 = new String ( cs );
System . out . println ( "str03=" + str03 );
//public String(byte[] bytes) 根据byte数组中的内容 , 来创建对应的字符串对象
byte [] bs = { 97 , 98 , 99 , 100 , 101 };
String str04 = new String ( bs );
System . out . println ( "str04=" + str04 );
//public String(byte[] bytes, int offset, int length)
// 指定 byte 数组的范围 , 根据指定范围中的内容, 来创建对应的字符串对象
String str05 = new String ( bs , 1 , 3 );
System . out . println ( "str05=" + str05 );
// 直接写字符串字面值也是 String 类对象
String str06 = "hello" ;
System . out . println ( "Str06=" + str06 );
}
}

3.3 两种方式创建字符串的区别

通过 new 创建的字符串对象,每一次 new 都会申请
一个内存空间,虽然字符串内容相同,但是地址值不
public class DemoTest {
public static void main ( String [] args ) {
String str01 = new String ( "hello" );
String str02 = new String ( "hello" );
System . out . println ( str01 == str02 ); //false 地址值不同
}
}
“ ” 方式给出的字符串,只要字符序列相同 ( 顺序和大
小写 ) ,无论在程序代码中出现几次,都只会建立一个
String 对象
public class DemoTest {
public static void main ( String [] args ) {
String str01 = "hello" ;
String str02 = "hello" ;
System . out . println ( str01 == str02 ); //true
}
}

3.4 字符串常用方法

public int length (): 返回此字符串的长度。
public boolean equals(String s): 比较两个字符串内容
是否相同、区分大小写
public boolean equalsIgnoreCase (String
anotherString) :将此字符串与指定对象进行比较,
忽略大小写。
public String concat (String str): 将指定的字符串连接
到该字符串的末尾。
public char charAt (int index): 返回指定索引处的
char 值。
public int indexOf (String str): 返回指定子字符串第一
次出现在该字符串内的索引。
public String substring (int beginIndex): 返回一个子
字符串,从 beginIndex 开始截取字符串到字符串结
尾。
public String substring (int beginIndex, int
endIndex): 返回一个子字符串 , beginIndex
endIndex 截取字符串。含 beginIndex, 不含
endIndex
public class DemoTest {
public static void main ( String [] args ) {
String str = "woaijava" ;
//public int length (): 返回此字符串的 长度。
int len = str . length ();
System . out . println ( len ); //8
//public boolean equals(String s): 比较两个字符串内容是否相同、区分大小写
boolean lean01 = str . equals ( "woaiJava" ); //false
System . out . println ( lean01 );
//public boolean equalsIgnoreCase(String anotherString)
// 将此字符串与指定对象进行比较,忽略大小写。
boolean lean02 = str . equalsIgnoreCase ( "woaiJava" );
System . out . println ( lean02 ); //true
//public String concat (String str):
将指定的字符串连接到该字符串的末尾。
String newStr = str . concat ( "haha" );
System . out . println ( newStr ); //woaijavahaha
//public char charAt (int index): 返回指定索引处的 char 值。
char c = str . charAt ( 3 );
System . out . println ( c ); //i
// 遍历字符串 w o a i j a
v a
for ( int i = 0 ; i < str . length (); i ++ ){
System . out . print ( str . charAt ( i ) + "\t" );
}
System . out . println ();
//public int indexOf (String str):
// 返回指定子字符串第一次出现在该字符串内的
索引。
beginIndex 开始截
取字符串到字符串结尾。
String sub01 = str . substring ( 4 );
System . out . println ( sub01 ); //java
//public String substring (int beginIndex, int endIndex):
// 返回一个子字符串 , beginIndex 到 endIndex截取字符串。
// beginIndex, 不含 endIndex
String sub02 = str . substring ( 2 , 6 );
System . out . println ( sub02 ); //aija
}
}

3.5 其他方法

public class DemoTest {
public static void main ( String [] args ) {
//boolean isEmpty() 判断字符串是否为空(长度为 0 返回 true ,不为 0 返回 false)
String str01 = null ; // 空 表示什么都没有
String str02 = "" ; // 空字符串对象
String str03 = " " ; // 有一个空格字符的字符 串对象
System . out . println ( "---------------------" );
//System.out.println(str01.isEmpty());//Nul
lPointerException
System . out . println ( str02 . isEmpty ()); //true System . out . println ( str03 . isEmpty ()); //false
System . out . println ( "---------------------" );
//boolean contains(CharSequence s)
断字符串中是否包含 给定的字符串
String str04 = "helloworld" ;
System . out . println ( str04 . contains ( "Hello" ))
; //false
System . out . println ( str04 . contains ( "world" ))
; //true
System . out . println ( "---------------------" );
//boolean startsWith(String prefix) 判断字符串是否以 给定的字符串开头
//boolean endsWith(String suffix) 判断字符串是否以 给定的字符串 结尾。
String str05 = "helloworld.java" ;
System . out . println ( str05 . startsWith ( "world" )); //false
System . out . println ( str05 . startsWith ( "he" )); //true
System . out . println ( str05 . endsWith ( ".java" )) ; //true
System . out . println ( str05 . endsWith ( ".html" )) ; //false
System . out . println ( "---------------------" );
//String toLowerCase() 把字母都转成其对应的小写形式
//String toUpperCase() 把字母都转成其对应的大写形式
String str06 = "AbCdEf" ;
System . out . println ( str06 . toLowerCase ()); //abcdef
System . out . println ( str06 . toUpperCase ()); //ABCDEF
System . out . println ( "---------------------" );
//String replace(char oldChar, char newChar)用新内容替代旧内容,返回新的字符串
String str07 = " 小学生放假了 , 小学生打游戏 了" ; String str08 = str07 . replace ( " 小学生" , "***" );
System . out . println ( str08 ); //*** 放假了,*** 打游戏了
System . out . println ( "---------------------" );
//char[] toCharArray() 将此字符串转换为一个新的字符数组
String str09 = "abcd" ;
char [] cs = str09 . toCharArray ();
System . out . println ( Arrays . toString ( cs )); //[ a, b, c, d]
System . out . println ( "---------------------" );
//byte[] getBytes() 把字符串转换为字节数组
String str10 = "hello" ;
byte [] bs = str10 . getBytes ();
System . out . println ( Arrays . toString ( bs )); //[
104, 101, 108, 108, 111]
System . out . println ( "---------------------" );
// String trim() 移除首尾空格
String str11 = " zhangsan " ;
String str12 = str11 . trim ();
System . out . println ( str12 );
System . out . println ( "---------------------" );
//String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。
// 传入一个普通的字符串 , 没有特殊含义
String str13 = "a,b,c,d,e" ;
String [] sp01 = str13 . split ( "," );
System . out . println ( Arrays . toString ( sp01 )); //[a, b, c, d, e]
// 高级用法 : 传入有特殊含义的字符串 , 其实就是正则表达式
// 正则表达式 : . 匹配任何单字符
String str14 = "a.b.c.d.e" ;
String [] sp02 = str14 . split ( "\\." );
System . out . println ( Arrays . toString ( sp02 ));
}

}

.StringBuilder

4.1 String类字符串拼接问题

public static void main ( String [] args ) {
String str = "hello" ;
str += "world" ;
System . out . println ( str );
}
}
API 中对 String 类有这样的描述:字符串是常量,它们
的值在创建后不能被更改。
根据这句话分析我们的代码,其实总共产生了三个字符
: Hello World HelloWorld
String 类的字符串拼接 , 每一次拼接完都会得到一个新的
字符串对象 , 所以比较耗时 , 也浪费空间。

4.2 StringBuilder类概述

StringBuilder 是一个可变的字符串类 ,我们可以把它
看成是一个容器,这里的可变指的是 StringBuilder 对象
中的内容是可变的。
StringBuilder 类和 String 类的区别
String 类:内容是不可变的
StringBuilder 类:内容是可变的

4.3 StringBuilder类的构造方法

public StringBuilder() 创建一个空白可变字符串对
象,不含有任何内容
public StringBuilder(String str) 根据字符串的内容,
来创建可变字符串对象
public class DemoTest {
public static void main ( String [] args ) {
//public StringBuilder() :创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb01 = new StringBuilder ();
System . out . println ( "sb01=" + sb01 );
System . out . println ( " 长度=" + sb01 . length ());
//public StringBuilder(String str) :根据字符串的内容,来创建可变字符串对象
StringBuilder sb02 = new StringBuilder ( "hello" );
System . out . println ( "sb02=" + sb02 );
System . out . println ( " 长度 =" + sb02 . length ());
}
}

4.4 StringBuilder类常用方法

public StringBuilder append( 任意类型 ) 拼接数据,
并返回对象本身
public StringBuilder insert(int offset, 任意类型 )
指定位置插入数据 , 并返回对象本身
public StringBuilder reverse() 反转字符串 , 并返回对
象本身
public class DemoTest {
public static void main ( String [] args ) {
StringBuilder sb01 = new
StringBuilder ();
//public StringBuilder append( 任意类
) 拼接数据,并返回对象本身
// StringBuilder sb02 = sb01.append("hello");
System.out.println(sb02==sb01);//true
// sb01.append(123);
// System.out.println(sb01);
//public StringBuilder insert(int offset, 任意类型 )
// 在指定位置插入数据 , 并返回对象本身
// sb01.insert(5,"world");
// System.out.println(sb01)
//public StringBuilder reverse() 反转字符串, 并返回对象本身
// StringBuilder sb03 = sb01.reverse();
// System.out.println(sb01==sb03);
// System.out.println(sb01);
// 链式编程
sb01 . append ( "hello" ). append ( 123 ). insert ( 5 , "world" ). reverse ();
System . out . println ( sb01 );
}
}

4.5 StringBuilderString相互转换

StringBuilder 转换为 String
public String toString() :通过 StringBuilder 类中的
toString() 就可以实现把 StringBuilder 转换为 String
String 转换为 StringBuilder
public StringBuilder(String s) :通过 StringBuilder 的构
造方法就可以实现把 String 转换为 StringBuilder
public class DemoTest {
public static void main ( String [] args ) {
//String -->StringBuilder
String str01 = "hello" ;
StringBuilder sb = new StringBuilder ( str01 );
sb . append ( "world" );
//StringBuilder --> String
String s = sb . toString ();
System . out . println ( s );
}
}
ok了家人们睡了明天见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1890188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

仓库货物管理系统

摘 要 随着信息技术的迅猛发展&#xff0c;大数据已经成为推动各行各业变革的重要力量。特别是在物流仓储领域&#xff0c;大数据技术的应用不仅能够显著提升仓库货物管理的效率&#xff0c;还能够优化库存管理、减少成本、提高客户满意度。因此&#xff0c;基于大数据的仓库货…

第二十一章 网络编程

​ 一、网络的相关概念 1. 网络通信 &#xff08;1&#xff09;网络通信&#xff1a;将 数据 通过网络从一台设备传输到另一台设备 &#xff08;2&#xff09;java.net 包下提供了一系列的类或接口&#xff0c;完成网络通信 2. 网络 概念&#xff1a;两台或多台设备通过一定…

git配置ssh-keygen -t rsa -c“xxxx@xxxx.com.cn出现Too many arguments.解决办法

git配置ssh-keygen -t rsa -c"xxxxxxxx.com.cn出现Too many arguments.解决办法 问题描述 配置Git公钥私钥时候输入命令ssh-keygen -t rsa -c"xxxxxxxx.com.cn出现Too many arguments. 解决办法&#xff1a; 提示输入的参数格式不正确&#xff0c;需要注意这几个地…

鸿蒙开发设备管理:【@ohos.settings (设置数据项名称)】

设置数据项名称 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 本模块提供设置数据项的访问功能相关接口的说明及示例。 导入模块 import settings from ohos.settings;settings.getUri…

使用Charles实现Android抓包,附带Charles破解教程

1.下载Charles 网址&#xff1a;下载Charles 安装完成后的界面&#xff1a; 2.配置http抓包 点击该选项 可以看到代理的 ip 和端口号 然后在手机的wifi中配置代理&#xff08;手机和电脑要在同一局域网&#xff09;&#xff0c;代理选择手动&#xff0c;并填入ip和端…

GPT-5即将登场:AI赋能下的未来工作与日常生活新图景

随着OpenAI首席技术官米拉穆拉蒂在近期采访中的明确表态&#xff0c;GPT-5的发布已不再是遥不可及的梦想&#xff0c;而是即将在一年半后与我们见面的现实。这一消息无疑在科技界乃至全社会引发了广泛关注和热烈讨论。从GPT-4到GPT-5的飞跃&#xff0c;被形容为从高中生到博士生…

MySQL 图形化界面

填完信息之后&#xff0c;圆圈处可以验证是否可以连接数据库 展示所有数据库&#xff08;因为有的可能连上&#xff0c;却没有数据库显示&#xff09;

每日一道算法题 组合

题目 77. 组合 - 力扣&#xff08;LeetCode&#xff09; Python 体会一下Python的高开发效率 class Solution:def combine(self, n: int, k: int) -> List[List[int]]:from itertools import combinationsreturn list(combinations(range(1,n1),k)) 第二种解法如下&…

2024高考作文题“人工智能”

今年开年到现在&#xff0c;明显的感受就是&#xff0c;咨询人工智能机器人的客户比往年更多了。什么原因&#xff0c;是因为人工成本太高了&#xff0c;今年整体经济环境变差&#xff0c;招不起人&#xff0c;所以想用AI机器人来降低用工成本吗&#xff1f; 还是说因为语音线路…

上位机第二弹

之前写的代码用上了 现在想想 &#xff0c;北向一侧还挺难搞&#xff0c;设计很巧妙

泽州县和美环保科技有限公司——绿色环保的践行者

在环保产业蓬勃发展的今天&#xff0c;泽州县和美环保科技有限公司以其卓越的技术和强大的实力&#xff0c;成为山西省危废综合处置领域的翘楚。作为雅居乐环保集团的全资子公司&#xff0c;和美环保科技有限公司紧跟集团发展战略&#xff0c;致力于为社会提供全方位的环境服务…

(五十二)第 8 章 动态存储管理(边界标识法)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strr…

基于Java的外卖点餐系统设计与实现

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

Spring源码九:BeanFactoryPostProcessor

上一篇Spring源码八&#xff1a;容器扩展一&#xff0c;我们看到ApplicationContext容器通过refresh方法中的prepareBeanFactory方法对BeanFactory扩展的一些功能点&#xff0c;包括对SPEL语句的支持、添加属性编辑器的注册器扩展解决Bean属性只能定义基础变量的问题、以及一些…

2024中国西安科博会暨硬科技产业博览会11月召开

2024第18届中国西安国际科学技术产业博览会暨硬科技产业博览会 时间&#xff1a;2024年11月3日-5日 地点&#xff1a;西安国际会展中心 主办单位&#xff1a;中国国际科学技术合作协会 陕西省科技资源统筹中心 协办单位&#xff1a;西安市科学技术协会 西安市中小企业协会、…

eventloop 事件循环机制 (猜答案)

// eventloop 事件循环机制// console.log(555);setTimeout(() > {console.log(666);})let p new Promise((resolve,reject)>{// 同步执行console.log(111);resolve();});// promise 的回调函数是异步的微任务p.then(v > {console.log(222);}, r > {console.log(r…

labview技巧——AMC框架安装

AMC工具包的核心概念是队列&#xff0c;队列是一种先进先出&#xff08;FIFO&#xff0c;First In First Out&#xff09;的数据结构&#xff0c;适用于处理并发和异步任务。在LabVIEW中&#xff0c;队列可以用于在不同VI之间传递数据&#xff0c;确保消息的有序处理&#xff0…

学会python——用python编写一个电子时钟(python实例十七)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.电子时钟程序 3.1 代码构思 3.2代码实例 3.3运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性…

偏微分方程笔记

极小位能原理&#xff1a; C 2 C^2 C2 是一个集合符号&#xff0c;表示所有二阶连续可微函数的集合 弱导数 C 2 C^2 C2 是一个集合符号&#xff0c;表示所有二阶连续可微函数的集合。 C 0 ∞ ( I ) C^{\infty}_0(I) C0∞​(I)表示于 I I I上无穷可微&#xff0c;且在端点a&…

硅纪元AI应用推荐 | 国产创作引擎即梦AI助力创作者探索创作新境界

“硅纪元AI应用推荐”栏目&#xff0c;为您精选最新、最实用的人工智能应用&#xff0c;无论您是AI发烧友还是新手&#xff0c;都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能&#xff0c;开启智慧新时代&#xff01; 在人工智能快速发展的今天&#xff0c;各…