how2j.cn

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



5分14秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器



示例 1 : 是否是同一个对象   
示例 2 : 是否是同一个对象-特例   
示例 3 : 内容是否相同   
示例 4 : 是否以子字符串开始或者结束   
示例 5 : 练习-比较字符串   
示例 6 : 答案-比较字符串   

示例 1 :

是否是同一个对象

edit
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);
		
	}

}
示例 2 :

是否是同一个对象-特例

edit

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);
	}

}
示例 3 :

内容是否相同

edit
使用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 } }
示例 4 :

是否以子字符串开始或者结束

edit

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));//以...结束
         
    }
 
}
示例 5 :

练习-比较字符串

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
创建一个长度是100的字符串数组
使用长度是2的随机字符填充该字符串数组
统计这个字符串数组里重复的字符串有多少种
练习-比较字符串
示例 6 :

答案-比较字符串

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费5个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费5个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

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公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2025-10-22 练习
20020517zjy




我的答案
import java.util.ArrayList;
import java.util.Arrays;

public class Test06 {
	public static void main(String[] args) {
String[] str5=new String[100];
	for(int i=0;i<str5.length;i++) {
	    String random=randomString(2);
	    char[] sc4=random.toCharArray();
	    str5[i]=new String(sc4);
	    
	}
	System.out.println(Arrays.deepToString(str5));
	int cou=0;
	ArrayList<String> coun = new ArrayList<>();
	for(int j=0;j<str5.length-1;j++) {
		for(int i=j+1;i<str5.length-1-j;i++) {
			if(str5[j].equals(str5[i])) {
				cou++;
				coun.add(str5[i]);
			}
		}
		
	}
	System.out.println("重复的有"+cou+"个:"+coun);
	
	}

	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;
	}


}

							





回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2025-09-03 一直生成的是不重复的字符串数组
天将破晓




我都把数组长度改到10000了还是一直不重复
package digit;

public class TestNumber9 {
	
	//获取长度为100的随机字符串数组
	public static void randomSetGet(String CHAR_SET,String[] str){
		for(int i = 0;i<str.length;i++){
			int index1 = (int)(Math.random()*CHAR_SET.length());//获取CHAR_SET长度中的任意随机数字1
			int index2 = (int)(Math.random()*CHAR_SET.length());//获取CHAR_SET长度中的任意随机数字2
			char cha1 = CHAR_SET.charAt(index1);
			char cha2 = CHAR_SET.charAt(index2);
			str[i] = Character.toString(cha1)+ Character.toString(cha2);
			System.out.println(str[i]);
		}
	}
	
	//统计重复的字符串有多少,分别是什么
	public static void countStr(String[] str){
		int count = 0;
		boolean flag = false;
		for(int i = 0;i<str.length;i++){
			if(flag == true){
				count++;
			}
			for(int j = i+1;j<str.length;j++){
				
				if(str[i]==str[j]){
					flag = true;
					System.out.println("重复");
					System.out.println(str[i]);
					System.out.println(str[j]);
					break;	
				}
			}
	
		}
		if(flag == true){
			System.out.println("重复的字符串有"+count+"种");
		}
		else{
			System.out.println("没有重复的字符串");
		}
		
	}
	
	public static void main(String[] args) {
		String[] str = new String[10000];
		String CHAR_SET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		randomSetGet(CHAR_SET,str);
		countStr(str);
	}
	
	
	
}

							





回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2025-02-08 方法有多种,HashMap HashSet 暴力循环都可以
2024-07-26 将来学了Set再回过头来看,真是无脑求解
2024-07-04 正确求解比较字符串数组的问题与误区分析


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 115 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 基础-数字与字符串-比较字符串 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图