how2j.cn

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



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



示例 1 : 创建字符串   
示例 2 : final   
示例 3 : immutable   
示例 4 : 字符串格式化   
示例 5 : 字符串长度   
示例 6 : 练习-随机字符串   
示例 7 : 答案-随机字符串   
示例 8 : 练习-字符串数组排序   
示例 9 : 答案-字符串数组排序   
示例 10 : 练习-穷举法破解密码   
示例 11 : 答案-穷举法破解密码   

字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象
常见创建字符串手段:
1. 每当有一个字面值出现的时候,虚拟机就会创建一个字符串
2. 调用String的构造方法创建一个字符串对象
3. 通过+加号进行字符串拼接也会创建新的字符串对象
package character; public class TestString { public static void main(String[] args) { String garen ="盖伦"; //字面值,虚拟机碰到字面值就会创建一个字符串对象 String teemo = new String("提莫"); //创建了两个字符串对象 char[] cs = new char[]{'崔','斯','特'}; String hero = new String(cs);// 通过字符数组创建一个字符串对象 String hero3 = garen + teemo;// 通过+加号进行字符串拼接 } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package character;
 
public class TestString {
 
    public static void main(String[] args) {
        String garen ="盖伦"; //字面值,虚拟机碰到字面值就会创建一个字符串对象
         
        String teemo = new String("提莫"); //创建了两个字符串对象
         
        char[] cs = new char[]{'崔','斯','特'};
         
        String hero = new String(cs);//  通过字符数组创建一个字符串对象
         
        String hero3 = garen + teemo;//  通过+加号进行字符串拼接
    }
}
String 被修饰为final,所以是不能被继承的
package character; public class TestString { public static void main(String[] args) { MyString str = new MyString(); } /*这里会报错,因为String不能被继承*/ static class MyString extends String{ } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package character;
 
public class TestString {
 
    public static void main(String[] args) {
        MyString str = new MyString();
         
    }
     
        /*这里会报错,因为String不能被继承*/
    static class MyString extends String{
         
    }
     
}
immutable 是指不可改变的
比如创建了一个字符串对象
String garen ="盖伦";
不可改变的具体含义是指:
不能增加长度
不能减少长度
不能插入字符
不能删除字符
不能修改字符
一旦创建好这个字符串,里面的内容 永远 不能改变

String 的表现就像是一个常量
package character; public class TestString { public static void main(String[] args) { String garen ="盖伦"; } }
1
2
3
4
5
6
7
8
9
package character;
  
public  class TestString {
  
    public static void main(String[] args) {
        String garen ="盖伦";
         
    }
}
示例 4 :

字符串格式化

edit
如果不使用字符串格式化,就需要进行字符串连接,如果变量比较多,拼接就会显得繁琐
使用字符串格式化,就可以简洁明了
更多的格式化规则,参考格式化输出
package character; public class TestString { public static void main(String[] args) { String name ="盖伦"; int kill = 8; String title="超神"; //直接使用+进行字符串连接,编码感觉会比较繁琐,并且维护性差,易读性差 String sentence = name+ " 在进行了连续 " + kill + " 次击杀后,获得了 " + title +" 的称号"; System.out.println(sentence); //格式化字符串 //%s表示字符串,%d表示数字,%n表示换行 String sentenceFormat ="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n"; String sentence2 = String.format(sentenceFormat, name,kill,title); System.out.println(sentence2); } }
length方法返回当前字符串的长度
可以有长度为0的字符串,即空字符串
package character; public class TestString { public static void main(String[] args) { String name ="盖伦"; System.out.println(name.length()); String unknowHero = ""; //可以有长度为0的字符串,即空字符串 System.out.println(unknowHero.length()); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package character;
   
public class TestString {
   
    public static void main(String[] args) {
  
        String name ="盖伦";
         
        System.out.println(name.length());
         
        String unknowHero = "";
         
        //可以有长度为0的字符串,即空字符串
        System.out.println(unknowHero.length());
          
    }
}
示例 6 :

练习-随机字符串

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
创建一个长度是5的随机字符串,随机字符有可能是数字,大写字母或者小写字母

给点提示: 数字和字符之间可以通过互相转换
char c = 'A';
short s = (short) c;

通过这个手段就能够知道字符 a-z A-Z 0-9 所对应的数字的区间了

需要用到ASCII码对照表
示例 7 :

答案-随机字符串

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
示例 8 :

练习-字符串数组排序

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
创建一个长度是8的字符串数组
使用8个长度是5的随机字符串初始化这个数组
对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)

1: 不能使用Arrays.sort() 要自己写
2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序
示例 9 :

答案-字符串数组排序

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
示例 10 :

练习-穷举法破解密码

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
1. 生成一个长度是3的随机字符串,把这个字符串作为当做密码

2. 使用穷举法生成长度是3个字符串,匹配上述生成的密码

要求: 分别使用多层for循环 和 递归解决上述问题
示例 11 :

答案-穷举法破解密码

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费5个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费5个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2024-07-03 抽象为单独的方法,对字符串随机创建数组、排序、打印
虚心求学




1.利用Math.Random()的方法创建随机字符; 2.根据字母(char)的ASCII值(int)大小进行排序; 排序结果: 排序前 排序后 1 udboN 1 CRSKK 2 CRSKK 2 GlWgS 3 MyHnb 3 kVkjy 4 SmaNm 4 MyHnb 5 GlWgS 5 rVJge 6 TdLqp 6 SmaNm 7 kVkjy 7 TdLqp 8 rVJge 8 udboN


6 个答案

Lzzlove789
答案时间:2025-04-08
第一第二题

Lzzlove789
答案时间:2025-04-08
第一第二题

Zzz112138
答案时间:2024-08-30
生成的密码是: nS5 (For)找到密码: nS5 (递归)找到密码: nS5

Zzz112138
答案时间:2024-08-30
排序前 01 j112z 02 qezqI 03 49rh7 04 6x2Xf 05 xMy9a 06 0jawX 07 GeKLk 08 KA8FH 排序后 01 0jawX 02 49rh7 03 6x2Xf 04 GeKLk 05 j112z 06 KA8FH 07 qezqI 08 xMy9a

虚心求学
答案时间:2024-07-03
解密程序运行结果: is decoding 56155 解出的答案为:Unv,原密码为Unv 共进行了56156步

虚心求学
答案时间:2024-07-03
破解密码试题的答案。 以上、以下均为个人理解,恳请各位批评指正。



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢


2024-06-03 好像感觉就我生成随机字符串最麻烦(笑哭)
13457882007




懒了, 第一第二题都直接放在一起弄了


1 个答案

Lzzlove789
答案时间:2025-04-08
第三题



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢


2023-05-07 三个不同的答案
2023-01-30 为什么把数组换成StringBuilder就找不到了
2022-09-08 字符串排序


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

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢