Java之——“String类”(内容较多,结合目录察看分类)

前言

在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面向对象的思想,而字符串应用又非常广泛,因此Java语言专门提供了String


String类

  • 前言
  • 一、常用方法
    • (1)字符串构造
    • (2)获取字符串长度和判断空串
    • (3)`String`对象的比较
      • 1.对象引用的理解
      • 2. `==` 比较是否引用同一个对象
        • <1>普通情况
        • <2>特殊情况
      • 3. `boolean equals(Object anObject)`方法:按照字典序比较
      • 3.`int comepareTo(String s)`方法:按照字典序进行比较
      • 4.`int comepareToIgnoreCase(String str)`方法
    • (4)字符串的查找
    • (5)字符串的转化
      • 1.数值和字符串转化`valueOf`方法
      • 2.大小写转化
      • 3.字符串转数组(常用)
      • 4.格式化
    • (6)字符串的替换
    • (7)字符串的拆分
    • (8)字符串的截取
    • (9)字符串去除空格
    • (10)字符串的不可变性
    • (11)字符串的修改
  • 二、`StringBuffer`和`StringBuilder`
    • (1) `StringBuff append(String str)`尾部追加
    • (2)`StringBuffer reverse()`字符串逆转
    • (3)方法大汇总

一、常用方法

(1)字符串构造

  • 区别于C语言,Java中字符串没有以\0结尾的说法

String类提供的构造方式非常多,常用的就以下三种

public class demo1 {public static void main(String[] args) {//使用常量串构造->直接赋值String s1 = "hello";System.out.println(s1);//直接new String对象->本质String s2 = new String("hello");System.out.println(s2);//使用字符数组进行构造char[] array = {'h','e','l','l','o'};String s3 = new String(array);System.out.println(s3);}
}
//输出结果
hello
hello
helloProcess finished with exit code 0
  • 【注意】String是引用类型,内部并不存储字符串本身,在jdk1.8中,字符串实际保存在char类型的数组中

(2)获取字符串长度和判断空串

在Java中,我们获取字符串长度非常简单,只需使用xxx.length()即可;还有一种方法可以判断字符串是不是空的,使用xxx.isEmpty,如果字符串长度为0,返回ture,否则返回flase。代码理解如下

       String a1 = new String("hello");String a2 = new String("world");String a3 = new String("");System.out.println(a1.length());System.out.println(a2.isEmpty());System.out.println(a3.isEmpty());
//输出结果
5
false
trueProcess finished with exit code 0
  • 【注意】一个字符串等于null代表字符串不指向任何对象,并不代表字符串为空,只有字符串中什么也不写才为空!

(3)String对象的比较

1.对象引用的理解

在此代码中,b1和b2引用的是不同对象,b1和b3引用的是同一对象

        String b1 = new String("hello");String b2 = new String("world");String b3 = b1;

这是为什么呢?让我们一起来了解它们的存储吧!

  • 只要new一个对象就会在堆区开辟一块空间
    在这里插入图片描述

2. == 比较是否引用同一个对象

<1>普通情况

对于内置类型,“= =“比较的是变量中的值;对于引用类型”= =“比较的是引用中的地址

//基本类型int a = 10;int b = 20;int c = 10;System.out.println(a == b);//falseSystem.out.println(a == c);//ture//引用类型String c1 = new String("hello");String c2 = new String("world");String c3 = new String("hello");String c4 = c2;System.out.println(c1 == c3);//falseSystem.out.println(c2 == c3);//falseSystem.out.println(c2 == c4);//ture//输出结果
false
true
false
false
trueProcess finished with exit code 0
  • 任何情况下只要等号两边是引用类型一定要注意看比较的是什么?如果要比较两个引用所指向的内容是否一致,一定要重写equals方法,因为不重写就会默认调用objectequals方法(比较的是地址)。我们建议自定义类型一定要重写hashcodeequals方法
<2>特殊情况

在如下情况下,比较的结果为true,这是为什么呢?

        String d1 = "abcde";String d2 = "abcde";System.out.println(d1 == d2);//输出结果
trueProcess finished with exit code 0

这就涉及到了常量池的原理,在这里我们简单介绍
常量池的作用:提高存储效率,避免反复存储相同数据
常量池的原理

  1. 存储双引号引起来的字符串,存的是字符串的常量值
  2. 先看常量池是否存在当前字符串
  3. 如果没有则存进去
  4. 如果有则获取当前这个字符串在常量池中的地址

在这里插入图片描述

3. boolean equals(Object anObject)方法:按照字典序比较

字典序:字符大小的顺序
String类重写了父类Object中equals方法,Objectequals默认按照==比较,String重写equals方法后,按照如下规则进行比较,比如:s1.equals(s2)
equals比较的是String对象中的逐个字符,只要里面放的内容相同,就返回true

内部原理

public boolean equals(Object anObject) {
// 1. 先检测this 和 anObject 是否为同一个对象比较,如果是返回trueif (this == anObject) {return true;}// 2. 检测anObject是否为String类型的对象,如果是继续比较,否则返回falseif (anObject instanceof String) {// 将anObject向下转型为String类型对象String anotherString = (String)anObject;int n = value.length;// 3. this和anObject两个字符串的长度是否相同,是继续比较,否则返回    falseif (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;// 4. 按照字典序,从前往后逐个字符进行比较while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}
}
return false;

==equals的比较

String e1 = new String("hello");String e2 = new String("hello");String e3 = new String("hi");//s1,s2,s3引用的是三个不同对象,因此==比较的结果全部为falseSystem.out.println(e1 ==e2);//falseSystem.out.println(e1 ==e3);//false//equals比较的是String中的逐个字符,里面放置的内容相同,返回trueSystem.out.println(e1.equals(e2));//trueSystem.out.println(e1.equals(e3));//false//输出结果
false
false
true
falseProcess finished with exit code 0

3.int comepareTo(String s)方法:按照字典序进行比较

equals不同的是,equals返回的是boolean类型,而compareTo返回的是int类型,具体的比较方式为:先按照字典次序大小比较,如果出现不等的字符,直接返回这两个字符的大小差值,如果前k个字符相等(k为两个字符长度最小值),返回两个字符串长度差值
比较逻辑

  1. 如果两个字符串长度是一样的,那么第一个不一样的字符大小就是整个字符串的大小
  2. 如果两个字符串长度不一样那么先比较两个长度的差值,在这个差值范围内,有不一样字符就能够比较出大小,如果是一样的,那么谁长谁就大

代码理解

String f1 = new String("abc");String f2 = new String("ac");String f3 = new String("abc");String f4 = new String("abcdef");System.out.println(f1.compareTo(f2));//不同输出字符差值-1System.out.println(f1.compareTo(f3));//相同输出0System.out.println(f1.compareTo(f4));//前k个字符完全相同,输出长度差值-3//输出结果
-1
0
-3Process finished with exit code 0

4.int comepareToIgnoreCase(String str)方法

int comepareTo方式相同,但是忽略大小写比较

代码理解

        String f1 = new String("abc");String f2 = new String("ac");String f3 = new String("ABc");String f4 = new String("abcdef");System.out.println(f1.compareToIgnoreCase(f2));//不同输出字符差值-1System.out.println(f1.compareToIgnoreCase(f3));//相同输出0System.out.println(f1.compareToIgnoreCase(f4));//前k个字符完全相同,输出长度差值-3//输出结果
-1
0
-3Process finished with exit code 0

(4)字符串的查找

字符串查找也是字符串中非常常见的操作,String类提供的常用查找方法:

  1. char charAt(int index):返回index位置上字符,如果index为负数或者越界,抛出IndexOutOfBoundsException异常
  2. int indexOf(int ch):返回ch第一次出现的位置,没有返回-1
  3. int indexOf(int ch, int fromIndex):从fromIndex位置开始找ch第一次出现的位置,没有返回-1
  4. int indexOf(String str):返回str第一次出现的位置,没有返回-1
  5. int indexOf(String str, int fromIndex):从fromIndex位置开始找str第一次出现的位置,没有返回-1
  6. int lastIndexOf(int ch):从后往前找,返回ch第一次出现的位置,没有返回-1
  7. int lastIndexOf(int ch, int fromIndex):从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返回-1
  8. int lastIndexOf(String str):从后往前找,返回str第一次出现的位置,没有返回-1
  9. int lastIndexOf(String str, int fromIndex):从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返回-1

用语言理解看起来很难懂,但是用代码理解会非常简单

        String g1 = "aaabbbcccaaabbbccc";System.out.println(g1.charAt(3));//'b'获取指定位置的字符System.out.println(g1.indexOf('c'));//6 获取指定字符出现的位置System.out.println(g1.indexOf('c',10));//15System.out.println(g1.indexOf("bbb"));//3System.out.println(g1.indexOf("bbb",10));//12System.out.println(g1.lastIndexOf('c'));//17System.out.println(g1.lastIndexOf('c',10));//8System.out.println(g1.lastIndexOf("bbb"));//12System.out.println(g1.lastIndexOf("bbb",10));//3
//输出结果
b
6
15
3
12
17
8
12
3Process finished with exit code 0

注意:上述方法都是实例方法

(5)字符串的转化

1.数值和字符串转化valueOf方法

        //数字转字符串String h1 = String.valueOf(1234);String h2 = String.valueOf(12.34);String h3 = String.valueOf(true);String h4 = String.valueOf(new student("lili",10));System.out.println(h1);System.out.println(h2);System.out.println(h3);System.out.println(h4);//字符串转数字,注意,Integer、Double等是Java中的包装类型int k1 = Integer.parseInt("1234");double k2 = Double.parseDouble("12.34");System.out.println(k1);System.out.println(k2);//输出结果
1234
12.34
true
student{name='lili', age=10}
1234
12.34Process finished with exit code 0

2.大小写转化

在Java中,String是不可变的,hello->HELLO这个转换不是在原来的字符串上进行改变,它是生成了一个新的对象

        String m1 = "hello";String m2 = "HELLO";//小写转大写System.out.println(m1.toUpperCase());//大写转小写System.out.println(m2.toLowerCase());//输出结果
HELLO
helloProcess finished with exit code 0

3.字符串转数组(常用)

        String j1 = "hello";//字符串转数组char[] ch = j1.toCharArray();for (int i = 0; i < j1.length(); i++) {System.out.println(ch[i]);}System.out.println();//数组转字符串String j2 = new String(ch);System.out.println(j2);//输出结果
h
e
l
l
ohelloProcess finished with exit code 0

4.格式化

        String p = String.format("%d-%d-%d",2025,2,18);System.out.println(p);//运行结果
2025-2-18Process finished with exit code 0

(6)字符串的替换

使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下

  1. String replaceAll(String regex, String replacement):替换所有的指定内容
  2. String replaceFirst(String regex, String replacement):替换首个内容

由于字符串是不可变对象,替换不修改当前字符串,而是产生一个新的字符串

        String r1 = "helloworld";System.out.println(r1.replaceAll("l","ooooooo"));System.out.println(r1.replaceFirst("l","ooooooooo"));//输出结果
heoooooooooooooooworoooooood
heoooooooooloworldProcess finished with exit code 0 

(7)字符串的拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串,可用方法如下

  1. String[] split(String regex):将字符串全部拆分,分割之后的结果要存储到数组当中
  2. String[] split(String regex, int limit):将字符串以指定的格式,拆分为limit组

代码示例:实现字符串的拆分处理

        String q1 = "hello world hello everyone";String[] result = q1.split(" ");for(String q2 : result){System.out.println(q2);}//输出结果
hello
world
hello
everyoneProcess finished with exit code 0

代码示例:字符串的部分拆分

        String q3 = "hello world hello everyone";String[] result1 = q3.split(" ",2);for(String q4 : result1){System.out.println(q4);}//输出结果
hello
world hello everyoneProcess finished with exit code 0
  • 拆分是特别常用的操作,一定要重点掌握,另外有些特殊字符作为分隔符可能无法正确切分,需要加上转义字符

代码示例:拆分IP地址

        String q5 = "192.168.1.2";String[] result2 = q5.split("\\.");for (String q6 : result2){System.out.println(q6);}//输出结果
192
168
1
2Process finished with exit code 0

注意事项:

  1. 字符”|”,“*”,“+”都得加上转义字符,前面加上“\”
  2. 而如果是”\“,那么就得写成”\\“
  3. 如果一个字符串中有多个分隔符,可以用”|“作为连字符

代码示例:多次拆分

        String q8 = "name=zhangsan&age=18";String[] result4 = q8.split("&|=");for (String q9 : result4) {System.out.println(q9);}//输出结果
name
zhangsan
age
18Process finished with exit code 0

(8)字符串的截取

从一个完整的字符串之中截取出部分内容,可用方法如下

  1. String substring(int beginIndex):从指定索引截取到结尾
  2. String substring(int beginIndex, int endIndex):截取部分内容

代码示例:观察字符串的截取

        String str = "helloworld";System.out.println(str.substring(5));System.out.println("===============");System.out.println(str.substring(0,5));//运行结果
world
===============
helloProcess finished with exit code 0

注意事项

  1. 这里如果传入的是0下标,那么默认返回的是原来的对象,但是如果传入的是其他对象,此时返回新的对象
  2. 索引从0开始
  3. 注意左闭右开的写法

(9)字符串去除空格

这是一个很实用的方法,trim方法会去掉字符串开头和结尾的空白字符,空格,换行,制表符等,保留中间空格

        String str2 = "     hello      world";System.out.println(str2.trim());//输出结果
hello      worldProcess finished with exit code 0

(10)字符串的不可变性

String是一种不可变对象,字符串中的内容是不可改变,字符串不可被修改,是因为:

  1. String类在设计时就是不可改变的,String类实现描述中已经说明了
  2. String类中的字符实际保存在内部维护的value字符数组中
  3. String类被final修饰,表明该类不能被继承
  4. valuefinal修饰,表明value自身的值不能改变,即不能使用其他字符数组,但是引用空间中的内容可以修改,value的指向不能改变
  5. 有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象
  6. final修饰类表明该类不想被继承,final修饰引用类型表明该引用变量不能引用其他对象,但是其引用对象中的内容是可以修改的

(11)字符串的修改

注意:尽量避免直接对String类型对象进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率非常低下

        String ret3 = "hello";ret3 += "world";System.out.println(ret3);

这种方式不推荐使用,因为其效率非常低,中间创建了好多临时变量

我们来看一下运行速度

public class demo2 {public static void main(String[] args) {long start = System.currentTimeMillis();String s = "";for(int i = 0; i < 10000; ++i){s += i;}long end = System.currentTimeMillis();System.out.println(end - start);start = System.currentTimeMillis();StringBuffer sbf = new StringBuffer("");for(int i = 0; i < 10000; ++i){sbf.append(i);}end = System.currentTimeMillis();System.out.println(end - start);start = System.currentTimeMillis();StringBuilder sbd = new StringBuilder();for(int i = 0; i < 10000; ++i){sbd.append(i);}end = System.currentTimeMillis();System.out.println(end - start);}}//输出结果
24
1
0Process finished with exit code 0

我们可以看到在对String类进行修改时效率是非常慢的,因此:尽量避免对String的直接修改,如果要修改尽量使用StringBuffer或者StringBuilder

二、StringBufferStringBuilder

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilderStringBuffer类。这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法

(1) StringBuff append(String str)尾部追加

在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、double、float、int、long、Object、String、StringBuff的变量

        StringBuilder sb1 = new StringBuilder("hello");StringBuilder sb2 = sb1;sb1.append(" ");sb1.append("world");sb1.append(" ");sb1.append(123);System.out.println(sb1);//hello world 123System.out.println(sb2);//hello world 123System.out.println(sb1 == sb2);//true//输出结果
hello world 123
hello world 123
trueProcess finished with exit code 0

(2)StringBuffer reverse()字符串逆转

        StringBuilder sb3 = new StringBuilder("hello");System.out.println(sb3.reverse());//输出结果
ollehProcess finished with exit code 0

(3)方法大汇总

public class demo3 {public static void main(String[] args) {StringBuilder sb1 = new StringBuilder("hello");StringBuilder sb2 = sb1;
// 追加:即尾插-->字符、字符串、整形数字sb1.append(' '); // hellosb1.append("world"); // hello worldsb1.append(123); // hello world123System.out.println(sb1); // hello world123System.out.println(sb1 == sb2); // trueSystem.out.println(sb1.charAt(0)); // 获取0号位上的字符 hSystem.out.println(sb1.length()); // 获取字符串的有效长度14System.out.println(sb1.capacity()); // 获取底层数组的总大小sb1.setCharAt(0, 'H'); // 设置任意位置的字符 Hello world123sb1.insert(0, "Hello world!!!"); // Hello world!!!Hello world123System.out.println(sb1);System.out.println(sb1.indexOf("Hello")); // 获取Hello第一次出现的位置System.out.println(sb1.lastIndexOf("Hello")); // 获取Hello最后一次出现的位置sb1.deleteCharAt(0); // 删除首字符sb1.delete(0,5); // 删除[0, 5)范围内的字符String str = sb1.substring(0, 5); // 截取[0, 5)区间中的字符以String的方式返回System.out.println(str);sb1.reverse(); // 字符串逆转str = sb1.toString(); // 将StringBuffer以String的方式返回System.out.println(str);}
}//输出结果
hello world123
true
h
14
21
Hello world!!!Hello world123
0
14
world
321dlrow olleH!!!dlrowProcess finished with exit code 0

从上述例子可以看出:StringStringBuffer最大的区别就在于String的内容无法修改,而StringBuffer的内容可以修改,频繁修改字符串的情况考虑使用StringBuffer
注意:StringStringBuffer类不能直接转换,如图想要相互转换可以采用以下原则:

  • String变为StringBuffer:利用StringBuffer的构造方法或者append()方法
  • StringBuffer变为String:调用toString()方法

StringBuilder未采用同步处理,一般在普通情况下使用;StringBuffer采用同步处理,一般在多线程情况下使用

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++篇】树影摇曳,旋转无声:探寻AVL树的平衡之道

文章目录 从结构到操作&#xff1a;手撕AVL树的实现一、AVL树介绍1.1 什么是AVL树1.2 平衡因子的定义1.3 平衡的意义1.4 AVL树的操作 二、AVL树的节点结构2.1 节点结构的定义&#xff1a; 三、插入操作3.1 插入操作概述3.2 步骤1&#xff1a;按二叉查找树规则插入节点3.3 步骤2…

限制Doris端口访问,解决REST API漏洞

方案一&#xff1a;通过Linux防火墙规则限制 目标&#xff1a;限制Doris的端口&#xff0c;只允许指定的ip访问此端口&#xff0c;其他禁止 1、设置规则 1.1、准备工作 注意&#xff1a;以上命令顺序不能错&#xff0c;先禁止后允许&#xff0c;另外此处只是临时设置。 # …

本地部署MindSearch(开源 AI 搜索引擎框架),然后上传到 hugging face的Spaces——L2G6

部署MindSearch到 hugging face Spaces上——L2G6 任务1 在 官方的MindSearch页面 复制Spaces应用到自己的Spaces下&#xff0c;Space 名称中需要包含 MindSearch 关键词&#xff0c;请在必要的步骤以及成功的对话测试结果当中 实现过程如下&#xff1a; 2.1 MindSearch 简…

蓝桥杯15 填空题

1.握手问题&#xff1a; 思路&#xff1a;首先当所有人都握过手&#xff0c;由于一次握手相当于两个人都握手过&#xff0c;所以容易发现这是一个组合问题&#xff0c;为&#xff08;50*49&#xff09;/2&#xff0c;而其中有7个人没有相互握过手&#xff0c;那么减去&#xff…

SSH/RDP 无法访问?云服务器让远程管理更简单

在日常运维和管理云服务器时&#xff0c;远程连接&#xff08;SSH 访问 Linux 服务器&#xff0c;RDP 访问 Windows 服务器&#xff09;是不可或缺的操作。然而&#xff0c;不少用户在使用阿里云 ECS 或其他云服务器时&#xff0c;会遇到远程连接失败、超时或拒绝访问的问题&am…

【OS安装与使用】part6-ubuntu 22.04+CUDA 12.4运行MARL算法(多智能体强化学习)

文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明2.2 应用步骤2.2.1 下载源码并安装2.2.2 安装缺失的依赖项2.2.3 训练执行MAPPO算法实例 三、疑问四、总结 一、待解决问题 1.1 问题描述 已配置好基础的运行环境&#xff0c;尝试运行MARL算法。 1…

Flutter - 初体验

项目文件目录结构介绍 注&#xff1a;创建 Flutter 项目名称不要包含特殊字符&#xff0c;不要使用驼峰标识 // TODO 开发中运行一个 Flutter 三种启动方式 Run 冷启动从零开始启动Hot Reload 热重载执行 build 方法Hot Restart 热重启重新运行整个 APP 先看效果&#xff0c…

vue 手写分页

【先看效果】 &#xff08;1&#xff09;内容小于2页 不展示页码 &#xff08;2&#xff09;1 < 内容页数< 限定展示页码 展示&#xff1a;页码、上下页&#xff1b;隐藏&#xff1a;首页、末页图标&#xff0c;上、下一区间码。即&#xff1a;&#xff08;页数&#…

window安装MySQL5.7

1、下载MySQL5.7.24 浏览器打开&#xff1a; https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-winx64.zip 2、解压缩 下载下来的是一个压缩包&#xff0c;解压到你想放到的目录下面&#xff0c;我放的是“C:\MySQL” 3、配置MySQL环境变量 计算机右键 - 属性 …

Android Studio安装配置及运行

一、下载Android Studio 官网下载&#xff1a;下载 Android Studio 和应用工具 - Android 开发者 | Android Developers 跳转到下载界面&#xff0c;选择同意条款&#xff0c;并点击下载&#xff0c;如图&#xff1a; 二、详细安装 双击下载的文件 三、配置Android Studio …

电力通信物联网应用,国密网关守护电力数据安全

电力国密网关是用于保护电力调度数据网路由器和电力系统的局域网之间通信安全的电力专用网关机&#xff0c;主要为上下级控制系统之间的广域网通信提供认证与加密服务&#xff0c;实现数据传输的机密性、完整性。 国密算法网关功能特点 身份认证&#xff1a;对接入的设备和用户…

低代码与开发框架的一些整合[2]

1.分析的项目资源说明 经过近期的的不断分析与运行对比&#xff0c;最终把注意力集中在了以下几个框架&#xff1a; 01.dibootdiboot.diboot: 写的更少, 性能更好 -> 为开发人员打造的低代码开发平台。Mybatis-plus关联查询&#xff0c;关联无SQL&#xff0c;性能高10倍&a…

帆软报表FineReport入门:简单报表制作[扩展|左父格|上父格]

FineReport帮助文档 - 全面的报表使用教程和学习资料 数据库连接 点击号>>JDBC 选择要连接的数据库>>填写信息>>点击测试连接 数据库SQLite是帆软的内置数据库, 里面有练习数据 选择此数据库后,点击测试连接即可 数据库查询 方法一: 在左下角的模板数据集…

elf_loader:一个使用Rust编写的ELF加载器

本文介绍一个使用Rust实现的ELF加载器。 下面是elf_loader的仓库链接&#xff1a; github&#xff1a; https://github.com/weizhiao/elf_loaderhttps://github.com/weizhiao/elf_loader crates.io&#xff1a; https://crates.io/crates/elf_loaderhttps://crates.io/cra…

python入门 介绍及变量的使用

1.python介绍 python 是一门计算机语言 常见的计算机语言&#xff1a;python、java、C语言。。。 什么是计算机语言&#xff1a;就是让计算机知道你想干什么&#xff0c;把你的需求使用它能听懂的语言说出来 中国也有一门计算机语言&#xff1a;易语言 能认为是语言的本质上…

Scala基础学习

主要用来处理数据&#xff0c;不处理web&#xff0c;没有类似spring的框架 1. Scala简介 我们基于的scala版本 2.12.10 scala是运行在 JVM 上的多范式&#xff08;规范&#xff09;编程语言&#xff0c;同时支持面向对象和面向函数编程。&#xff08;真实数据与操作过程解耦…

贪心算法

int a[1000], b5, c8; swap(b, c); // 交换操作 memset(a, 0, sizeof(a)); // 初始化为0或-1 引导问题 为一个小老鼠准备了M磅的猫粮&#xff0c;准备去和看守仓库的猫做交易&#xff0c;因为仓库里有小老鼠喜欢吃的五香豆&#xff0c;第i个房间有J[i] 磅的五香豆&#xf…

复现论文:DPStyler: Dynamic PromptStyler for Source-Free Domain Generalization

论文&#xff1a;[2403.16697] DPStyler: Dynamic PromptStyler for Source-Free Domain Generalization github: TYLfromSEU/DPStyler: DPStyler: Dynamic PromptStyler for Source-Free Domain Generalization 论文: 这篇论文还是在PromptStyler:Prompt-driven Style Gener…

AI 编程助手 cursor的系统提示词 prompt

# Role 你是一名极其优秀具有10年经验的产品经理和精通java编程语言的架构师。与你交流的用户是不懂代码的初中生&#xff0c;不善于表达产品和代码需求。你的工作对用户来说非常重要&#xff0c;完成后将获得10000美元奖励。 # Goal 你的目标是帮助用户以他容易理解的…

TikTok账户安全指南:如何取消两步验证?

TikTok账户安全指南&#xff1a;如何取消两步验证&#xff1f; 在这个数字化的时代&#xff0c;保护我们的在线账户安全变得尤为重要。TikTok&#xff0c;作为全球流行的社交媒体平台&#xff0c;其账户安全更是不容忽视。两步验证作为一种增强账户安全性的措施&#xff0c;虽…