how2j.cn

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



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



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

答案-比较字符串

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

16分54秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


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


问答区域    
2019-04-17 字符串比较
tll



字符串比较
public class Eight_CompareString {
    public static void main(String[] args) {
        /**
         * 创建一个长度是100的字符串数组
         * 使用长度是2的随机字符填充该字符串数组
         * 统计这个字符串数组里重复的字符串有多少种
         */
        String[] str = new String[100];
        int count = 0;
        String[] duplicateString = new String[100];     //用于存储相同的字符串
        
        //初始化
        for(int i = 0; i < str.length; i++) {
            str[i] = generateRandomString(2);
            System.out.print(str[i] + "\t");

            if((i + 1) % 20 == 0) {
                System.out.println();
            }
        }

        //查找
        for(int i = 0; i < str.length; i++) {
            if(str[i] != "") {              //为空表示该字符串已经有相同的字符串了
                boolean flag = false;
                for(int j = i + 1; j < str.length; j++) {
                    if(str[i].equals(str[j])) {
                        flag = true;        //判断是否有相同的字符串,如果有则置为true
                        str[j] = "";        //要把所有相同的,除了第一个字符串之外都置为空
                    }
                }
                if(flag == true) {
                    duplicateString[count++] = str[i];
                }
            }
        }
        System.out.printf("总共有%d种重复的字符串\n", count);
        for(int i = 0; i < count; i++) {
            System.out.print(duplicateString[i] + "\t");
        }


    }

    public static String generateRandomString(int length) {
        /**
         * 创建一个长度是length的随机字符串,随机字符有可能是数字,大写字母或者小写字母
         */
        String str = "";
        int num = 10 + 26 + 26;

        for(int i = 0; i < length; i++) {
            int randomNum = (int) (Math.random() * num);
            if(randomNum >= 0 && randomNum <= 9) {
                str += "" + (char) (randomNum + '0');
            } else if (randomNum >= 10 && randomNum <= 35) {
                str += "" + (char) (randomNum - 10 + 'A');
            } else {
                str += "" + (char) (randomNum - 36 + 'a');
            }
        }
        return str;
    }
}

							





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





2019-04-13 作业答案
杨康



本人答案
//相同的字符串拼接 等待分割
   static String sameStr = "";
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();
        }
 
        
        
        chooseSame(ss); 
        if (sameStr.length()>0) {
			sameStr = sameStr.substring(1);
		}
        String[] sameArr = sameStr.split(",");
        
        
        
        System.out.println("分别是:");
        //空数组也可以快速便利
        for (String string : sameArr) {
        	System.out.print(string + " ");
		}
        
        
    }
    
 
    public static void chooseSame(String[] ss)
    {

			String word = ss[0];
			//未比较的字符串拼接 等待分割重新比较
			String newStr = "";
			//这一轮有无相同标签
			boolean hasSame = false;
			for (int j = 1; j < ss.length; j++) {
				String word2 = ss[j];
				if (word.equals(word2)) {
					
					hasSame = true;
				}else
				{
					newStr += ","+word2;
				}
			}
			if (hasSame) {
				sameStr +=","+word;
			}
			
			if (newStr.length()>0) {
				newStr = newStr.substring(1);
			}
			
			String[] newSs = newStr.split(",");
			
			if (newSs.length>1) {
				chooseSame(newSs);
			}
			
    }

							





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





2019-04-05 交作业
2019-03-27 作业
2019-03-27 交作业
2019-03-25 作业 嘤嘤嘤!!
2019-03-06 最后一题想了好久
2019-03-03 -比较字符串 例示5
2019-03-03 -比较字符串 例示5
2019-03-03 比较字符串练习难度可以
2019-03-02 比较字符串练习帮忙看看有没有问题
2019-02-27 比较字符串练习
2019-02-25 交作业
2019-01-30 交作业_比较字符串
2019-01-30 交作业_比较字符串
2019-01-20 交作业
2019-01-18 比较字符串
2019-01-18 写的好笨好长,不过也是自己不看答案写出来的,记录一下。
2019-01-09 交作业
2018-12-28 焦作页
2018-12-28 闹心
2018-12-19 作业,实现了去重,定位加统计单个次数
2018-12-17 findSameArray(String s)中的循环体我搞不懂呀
2018-12-14 哇 做了好久
2018-12-02 作业
2018-12-02 作业
2018-11-21 叫作业
2018-11-16 作业
2018-11-10 我也分享一下我的想法
2018-11-10 问个问题
2018-11-05 交作业,这题好难
2018-10-13 分享下自己的解法
2018-10-08 交作业
2018-09-07 不知道哪儿错了,求大神解答
2018-09-02 作业!
2018-08-31 按在地上摩擦~
2018-08-21 这样做可以吗?
2018-08-21 比较字符串 答案
2018-08-05
2018-08-01 作业提交
2018-07-27 交作业
2018-07-12 交作业
2018-06-22 第一次交作业
2018-06-17 交作业,用逆向思维解出的,详细解答
2018-06-06 交作业
2018-05-28 交作业
2018-05-22 哈哈哈可能也是一种奇葩写法
2018-05-12 我很想理解这个随机生成字符串的函数
2018-05-08 用集合解决
2018-04-25 【交作业】比较字符串
2018-04-22 作业
2018-04-20 统计字符串数组中相同元素出现的次数
2018-04-07 分析一下挺有意思的...我的残缺答案
2018-03-22 交作业,重复两遍就会输出两次
2018-03-21 作业 自己码的
2018-03-18 比较字符串作业
2018-03-04 作业题
2018-03-03 站长,有错误
2018-02-24 最后一题代码,没看答案自己码的。里面加了些注释,方便理解。不知道有没有错误,望指出
2018-02-23 最后一题的答案
2018-02-20 pos值是怎么来的
2018-02-14 最后一问:::通过(选择排序)的双层循环方法+字符串.contains()方法 很简单,欢迎指正。
2018-02-14 最后一问:::通过(选择排序)的双层循环方法+字符串.contains()方法 很简单,欢迎指正。
2018-02-01 有哪里能帮忙优化的不,感觉我的循环太多了。。
2018-01-29 自己没看答案写的。
2018-01-24 我这样可不可以,站长的那个后面代码有点看不太明白
2018-01-24 最后一个for循环问题!
2018-01-22 代码优化
2018-01-22 代码优化
2017-11-26 小试牛刀
2017-11-26 查重复的代码不知道怎么优化啊
2017-11-26 查找重复的算法不知道能不能优化写
2017-11-18 最后一个题的问题
2017-10-25 发一个最后一题的简单实现
2017-08-31 我的代码
2017-07-29 练习答案
2017-07-16 作业
2017-06-15 思路比较清晰,代码还算简单
2017-04-24 一起吃屎,一起喝尿!!!!
2017-04-14 为什么不用Map呢?会容易些
2017-04-07 我写的这样不知道如何,可能复杂度太高
2017-04-01 好像我的字符串数组没有重复
2017-03-29
2017-01-25 不看答案真的写不出来。。。对着答案还研究了半天
2016-06-07 希望能注释进一步讲解43行到52行代码作用。




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

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

上传截图