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


问答区域    
2023-02-06 想了好久,
learn杜




先算出来,再进行比较
package Stringclass;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class class8work{
	static String a;
	static String[] str1 = new String[2];
	public static void strw() {
		Random r = new Random();
		List<String> ls = new ArrayList<>();
		for (int i = 48; i < 58; i++) {
			ls.add(String.valueOf((char)i));
		}
		for (int j = 65; j < 91; j++) {
			ls.add(String.valueOf((char)j));
		}
		for (int k = 97; k < 122; k++) {
			ls.add(String.valueOf((char)k));
		}
		
			String rr1 = ls.get(r.nextInt(ls.size()));
			String rr2 = ls.get(r.nextInt(ls.size()));
			String rr3 = rr1+rr2;
			//
			a=rr3;
		    //System.out.print(rr3);

	}
		public static void main(String[] args) {
			String[] str = new String[100];
			for (int i = 0; i < 100; i++) {
			 strw();
			 str[i]=a;
			
			}
				for (int j = 0; j < str.length; j++) {
				System.out.print(str[j]);
				System.out.printf(" ");
			}
			boolean ye  = false;
			int counts = 0;
			for (int i = 0; i < str.length-1; i++) {
				for (int j = i+1; j < str.length; j++) {
					if(str[i].equals(str[j])) {
						//ye = true;
						counts++;
						System.out.println(str[i]);
						break;
					}
				}
			}
			
			System.out.println(counts);

			
		}
}

							


4 个答案

CharlieLong
答案时间:2023-09-12
创建一个长度是100的字符串数组 使用长度是2的随机字符填充该字符串数组 统计这个字符串数组里重复的字符串有多少种

爱学Java的小林
答案时间:2023-06-11
答案

五周
答案时间:2023-05-07
package com.ds.string; import java.util.Arrays; /** * @Author: DS * @Date: 2023/5/7 14:07 */ public class String11 { public static void main(String[] args) { String[] ss=new String[100]; int[] nums =new int[100000]; Arrays.fill(nums,0); for (int i = 0; i < 100; i++) { ss[i]=new String05().generator(2); int temp=ss[i].charAt(0)*1000+ss[i].charAt(1); if(nums[temp]==1){ System.out.print(ss[i]+" "); nums[temp]=-1; }else if(nums[temp]!=-1){ nums[temp]=1; } } } }

伊亻
答案时间:2023-02-09
nQ 1o xT sB 4X P9 Lq zJ lb CE rv IJ Kc UO 9L Oi Vo Ws 1B Uf Q0 ws ki Hj YQ Gh yJ JD bF wR h5 Nn gq by WS h6 yH NR Xv BB kB xQ hU 2S WU bo H3 wV Rm SH p6 lr Ri VB eb G2 bz DZ 1d dJ dJ Tu b0 Ii Hj qz g4 FI 4W Xn BP iC JA Q4 LH Fe vn 62 2m bF Oh qK Yi Rr KV T7 VU C5 gK zm 5k wb JN ne BH T6 xX Fh Ko Fa 一共有2种重复字符串 它们是:Hj dJ



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





2023-01-30 这样可以吗
Bingod




可以吗
package string_;

import java.util.Arrays;

public class Test03 {
    public static void main(String[] args) {
        String[]str=new String[100];
        for (int i = 0; i <str.length; i++) {
           str[i]=generateString(2);
        }
        int count=0;//默认有0对相同的数组
        String[] strings=new String[count];
        for (int i = 0; i <str.length-1; i++) {
            for (int j =i+1; j <str.length; j++) {
                if(str[i].equals(str[j])){
                    strings=Arrays.copyOf(strings, strings.length + 1);
                    strings[count]=str[i];
                    count++;
                }
            }
        }
        System.out.println("总共共有"+count+"种重复的字符串");
        System.out.println("分别是");
        for (String s :strings) {
            System.out.println(s);
        }
    }
    public static String generateString(int n){
        StringBuilder stringBuilder = new StringBuilder();
        for (int i ='0'; i <='9'; i++) {
            stringBuilder.append((char)i);
        }
        for (int i ='A'; i <'Z'; i++) {
            stringBuilder.append((char)i);
        }
        for (int i ='a'; i <='z'; i++) {
            stringBuilder.append((char)i);
        }
        String s = stringBuilder.toString();
        char[]chars=new char[n];

        for (int j = 0; j <chars.length; j++) {
            int i = (int) (Math.random() * s.length());
            char c = s.charAt(i);
            chars[j]=c;
        }
        String s1 = new String(chars);
        return s1;
    }
}

							





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





2022-10-23 示例5-参考答案
2022-08-26 练习5-比较字符串参考
2022-07-26 练习答案,自己做的


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

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

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

上传截图