本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
5分14秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 示例 1 : 是否是同一个对象 示例 2 : 是否是同一个对象-特例 示例 3 : 内容是否相同 示例 4 : 是否以子字符串开始或者结束 示例 5 : 练习-比较字符串 示例 6 : 答案-比较字符串
str1和str2的内容一定是一样的!
但是,并不是同一个字符串对象 package character;
public class TestString {
public static void main(String[] args) {
String str1 = "the light";
String str2 = new String(str1);
//==用于判断是否是同一个字符串对象
System.out.println( str1 == str2);
}
}
package character; public class TestString { public static void main(String[] args) { String str1 = "the light"; String str2 = new String(str1); //==用于判断是否是同一个字符串对象 System.out.println( str1 == str2); } } str1 = "the light"; str3 = "the light"; 一般说来,编译器每碰到一个字符串的字面值,就会创建一个新的对象 所以在第6行会创建了一个新的字符串"the light" 但是在第7行,编译器发现已经存在现成的"the light",那么就直接拿来使用,而没有进行重复创建 package character;
public class TestString {
public static void main(String[] args) {
String str1 = "the light";
String str3 = "the light";
System.out.println( str1 == str3);
}
}
package character; public class TestString { public static void main(String[] args) { String str1 = "the light"; String str3 = "the light"; System.out.println( str1 == str3); } }
使用equals进行字符串内容的比较,必须大小写一致
equalsIgnoreCase,忽略大小写判断内容是否一致 package character;
public class TestString {
public static void main(String[] args) {
String str1 = "the light";
String str2 = new String(str1);
String str3 = str1.toUpperCase();
//==用于判断是否是同一个字符串对象
System.out.println( str1 == str2);
System.out.println(str1.equals(str2));//完全一样返回true
System.out.println(str1.equals(str3));//大小写不一样,返回false
System.out.println(str1.equalsIgnoreCase(str3));//忽略大小写的比较,返回true
}
}
startsWith //以...开始 endsWith //以...结束 package character;
public class TestString {
public static void main(String[] args) {
String str1 = "the light";
String start = "the";
String end = "Ight";
System.out.println(str1.startsWith(start));//以...开始
System.out.println(str1.endsWith(end));//以...结束
}
}
package character; public class TestString { public static void main(String[] args) { String str1 = "the light"; String start = "the"; String end = "Ight"; System.out.println(str1.startsWith(start));//以...开始 System.out.println(str1.endsWith(end));//以...结束 } }
创建一个长度是100的字符串数组
使用长度是2的随机字符填充该字符串数组 统计这个字符串数组里重复的字符串有多少种
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
16分54秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 package character;
public class TestString {
public static void main(String[] args) {
String[] ss = new String[100];
// 初始化
for (int i = 0; i < ss.length; i++) {
ss[i] = randomString(2);
}
// 打印
for (int i = 0; i < ss.length; i++) {
System.out.print(ss[i] + " ");
if (19 == i % 20)
System.out.println();
}
for (String s1 : ss) {
int repeat = 0;
for (String s2 : ss) {
if (s1.equalsIgnoreCase(s2)) {
repeat++;
if (2 == repeat) {
// 当repeat==2的时候,就找打了一个非己的重复字符串
putIntoDuplicatedArray(s1);
break;
}
}
}
}
System.out.printf("总共有 %d种重复的字符串%n", pos);
if (pos != 0) {
System.out.println("分别是:");
for (int i = 0; i < pos; i++) {
System.out.print(foundDuplicated[i] + " ");
}
}
}
static String[] foundDuplicated = new String[100];
static int pos;
private static void putIntoDuplicatedArray(String s) {
for (int i = 0; i < pos; i++){
if (foundDuplicated[i].equalsIgnoreCase(s))
return;
}
foundDuplicated[pos++] = s;
}
private static String randomString(int length) {
String pool = "";
for (short i = '0'; i <= '9'; i++) {
pool += (char) i;
}
for (short i = 'a'; i <= 'z'; i++) {
pool += (char) i;
}
for (short i = 'A'; i <= 'Z'; i++) {
pool += (char) i;
}
char cs[] = new char[length];
for (int i = 0; i < cs.length; i++) {
int index = (int) (Math.random() * pool.length());
cs[i] = pool.charAt(index);
}
String result = new String(cs);
return result;
}
}
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2024-07-26
将来学了Set再回过头来看,真是无脑求解
2 个答案
Zzz112138 跳转到问题位置 答案时间:2024-09-03 一共生成100个随机字符串
NX kI 8d Hd i5 dB W0 H5 Xx sN au 10 2S 6r 7L iP cQ rA y9 7x
9E eV 41 kd d7 QU 5C Op 7f AY 58 9b 5K N2 0G 36 kL uC iy 34
L5 Hb ql Os AE l9 89 r9 1G NN 2S 4k E8 4g 4V Kf nH jW A5 pI
VZ 4d D3 83 0f UX 4d ND 2w Yc U5 95 0K ve ND Ug n2 6D 46 vF
s4 m8 dS eM 6O 1V 8K k9 d9 LK TR hB 6Y 3e 4X P2 ce jf p0 bx
共找到3个重复字符串
分别是:
2S[12] 4d[61] ND[67]
Zzz112138 跳转到问题位置 答案时间:2024-09-03 一共生成100个随机字符串
1t V2 41 F0 bZ Jp Y2 d1 6Y x3 T6 ry J0 sW r6 m1 fE 7S KL 5W
31 ko q7 f2 cV b9 n7 YJ 7z 5B z0 b1 uh Tg G0 YK 53 WH 4B 1A
EI cB kc 9B 85 wj Fn E5 ua Hd g6 Wy 6K 6D jG 62 M7 k2 qA bl
0k xG 75 eE aR Hf j5 k4 L4 Ci 14 5B 3Y ch th Cb u8 x4 ZS Pl
69 78 ry QE wd W8 4l Lt 1Z qa kw k4 Y4 NX mA 0W Sy Ca D5 1i
共找到3个重复字符串
分别是:
ry[11] 5B[29] k4[67]
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2024-07-04
正确求解比较字符串数组的问题与误区分析
2 个答案
Old-k 跳转到问题位置 答案时间:2024-07-08 虚心求学 跳转到问题位置 答案时间:2024-07-04 在第二层循环,这么判断就对了
if(i==j)continue; if(strs[i].equalsIgnoreCase(strs[j])){ if(j<i)break; count++;
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2024-07-03
练习5
2023-02-06
想了好久,
2023-01-30
这样可以吗
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 112 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|