ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

字符串练习

2022-06-20 08:31:47  阅读:122  来源: 互联网

标签:String s1 练习 System println 字符串 out


java17版本

1.1字符串常见操作

  1 package com;
  2 //字符串练习
  3 //熟悉字符串常用操作
  4 //StringBuilder
  5 //StringBuffer
  6 
  7 import java.io.UnsupportedEncodingException;
  8 import java.nio.charset.StandardCharsets;
  9 import java.util.Arrays;
 10 import java.util.Calendar;
 11 import java.util.Locale;
 12 
 13 public class testString {
 14     public static void test1() {
 15 
 16         //1 字符串两种赋值,以及两种运算。
 17         //方式1.共用地址
 18         //字符串常量 对应静态常量池地址
 19             //1.静态:1.共用地址(唯一,和普通静态常量一样)2可以回收(不同于普通静态常量)
 20             //2.常量:初始化后不能改变
 21         String s1 = "ok";//常量池里面 new了一个“OK”静态常量
 22         //方式2.拷贝
 23         //字符串 对应堆的地址,
 24         String s2 = new String("ok");//堆里面 new了一个“OK”变量
 25 
 26         //二者运算有点不同。
 27         //一个是在栈里面
 28         //一个在常量池中
 29         System.out.println(s1 == s1 + "");//false 堆里面新new的
 30         System.out.println(s1 == "ok" + "");//true 常量池里面的OK
 31         //==比较的是地址,地址一样的值一定一样。
 32         //equals()比较的是值--
 33         //地址决定原理,大多时候应该是值判断
 34 
 35         //2 """ """字符串
 36         String s3 = """
 37                 张三
 38                 李四
 39                 王五
 40                 """;
 41         System.out.println(s3);
 42 
 43         //3java转义字符
 44         // 标志:\+字符,如 \n \t(table), \b(backspace) \"
 45         //其它还有 \a , \f, \r ,\v(垂直制表) , \\, \u4e00 \u9fa5等
 46         //注意:非转义字符,写了会报错,如"\m"
 47 
 48         String s4 = "\n张三";
 49         System.out.println(s4);
 50 
 51 
 52 
 53         //4不区分大小写
 54         System.out.println("ABC".equalsIgnoreCase("abc"));
 55 
 56 
 57         //5.字符串格式化
 58         System.out.println(String.format("欢迎:\"%s\"。","张三"));
 59         //对比记忆
 60         //%是格式输出标志
 61         System.out.printf("欢迎:\"%s\"。%n","张三");
 62     }
 63 
 64     //字符串其它常用操作
 65     public static void test2() {
 66         //1.字符串长度,字符串字节个数
 67         String s1 = "ok中国人";
 68         //获取字符串字符个数
 69         System.out.println(s1.length());
 70         //获取字符字节(byte)个数
 71         //UTF-8编码,一个中文字符是3个字节,一个英文字符是1个字节
 72         System.out.println(s1.getBytes(StandardCharsets.UTF_8).length);//
 73         //字符串内部每个字符就是字节存储
 74 
 75         //将字符串重新编码成另一种格式
 76         //出现乱码总是不能正确将一种编码换成另一种
 77         try {
 78             String s2 = new String("张三".getBytes("GBK"), "UTF-8");
 79             System.out.println(s2);
 80             System.out.println(s2.length());
 81             System.out.println(s2.getBytes("GBK").length);
 82         } catch (UnsupportedEncodingException e) {
 83             throw new RuntimeException(e);
 84         }
 85 
 86 
 87         //2 trim()清除空格
 88         System.out.println("--------------------2-----------------------");
 89         //空格 换行 制表位都是空格
 90         s1 = "\t \s hello world\n";
 91         String s2 = s1;
 92         System.out.print(s1 + "长度:");
 93         System.out.print(s1.length() + ".");
 94         System.out.print(s1.trim() + "长度");
 95         System.out.println(s1.trim().length() + ".");
 96 
 97         s1.replace("hello", "Hello");
 98         System.out.println(s2);
 99         System.out.println(s1);
100         System.out.println(s2 == s1);
101 
102         //3 replace “替换”
103         System.out.println("--------------------3-----------------------");
104         //replace 没有改变原来字符串
105         //replace是将替代的字符串作为参数返回了。
106         s1 = "java java java";
107         System.out.println(s1.replace("java", "j"));
108         System.out.println(s1.replaceAll("java", "j"));
109         System.out.println(s1.replaceFirst("java", "j"));
110         System.out.println(s1.replace('j', 'J'));//支持字符
111 //        System.out.println(s1.replaceFirst('j','J'));//不支持字符
112 //        System.out.println(s1.replaceAll('j','J'));//不支持字符
113 
114         //replace支持字符,字符串
115         //replaceFirst和replaceAll支持字符串,正则表达式
116 
117         //注意:
118         //正则表达式也兼容普通字符串查找
119         //正则表达式检索功能强但是效率相对低,耗费更多资源,能不用正则表达式解决的就不用
120         //所以若没有用正则表达式,就用replace代替replaceAll
121 
122         System.out.println("--------------------4-----------------------");
123         //4 repeat重复拷贝几遍返回
124         System.out.println(s1.repeat(2));
125 
126         //5 split()
127         // 参数是正则表达式
128         // 返回一个String[]数组
129         System.out.println("--------------------5-----------------------");
130         System.out.println(s1);
131         String[] strs = s1.split("");
132         //空白分割效果,将每个字符都分割
133         System.out.println(Arrays.toString(strs));//[j, a, v, a,  , j, a, v, a,  , j, a, v, a]
134         //分割符默认用,代替。
135         System.out.println(Arrays.toString(s1.split("a", 3)));//[j, v,  j, v,  j, v]
136         //可以设置,分割的字符数量 分割字符数量= limit-1 是一个正整数
137         //最大是0 最小是1
138 
139         //6 charAt() 返回某个下标位置上的字符
140         System.out.println("--------------------6-----------------------");
141         System.out.println(s1.charAt(1));
142 
143         //7 concat() 字符串连接
144         System.out.println("--------------------7-----------------------");
145         int k = (Calendar.getInstance().get(Calendar.DAY_OF_WEEK) + 6) % 7;
146         System.out.println("星期" + "日一二三四五六".charAt(k));
147         System.out.println("星期".concat("1"));
148 
149         //8 拷贝字符串成一个字符数组 toCharArray()
150         System.out.println("--------------------8-----------------------");
151         char[] ch1 = s1.toCharArray();
152         System.out.println(Arrays.toString(ch1));
153 
154         //9 检查字符串是否包含某个字符串 contains()
155         System.out.println("--------------------9-----------------------");
156         System.out.println(s1.contains("java"));
157 
158         //10 找字符串中某个字符/字符串的位置
159 
160         System.out.println("--------------------10-----------------------");
161         s1 = "abc张三";
162         //找'张'字符位置
163         System.out.println("张位置是" + s1.indexOf('张'));
164 // 参数类型是int, 存在自动类型转换
165         //找字符串“张三”位置
166         System.out.println("张三位置是" + s1.indexOf("张三"));
167         //从第3位置(包含3)开始找"张三"位置,知道前面没有
168         System.out.println("张三位置是" + s1.indexOf("张三", 3));
169         //从后往前边找
170         System.out.println("张三位置是" + s1.lastIndexOf("张三", 1));
171         //-1 没有找到返回值是-1
172         //不论从前往后还是从后往前,元素下标不变
173 
174         //11 截取子串
175         System.out.println("--------------------11-----------------------");
176 
177         //定位+截子串
178         s1 = "pic.jpg";
179         System.out.println("d:\\user\\shop\\pic\\"+"20220619"+s1.substring(s1.lastIndexOf(".")));
180         //注意,截取结果包含了.
181 
182         //截取2
183         // [ ,)
184         System.out.println(s1.substring(2,s1.lastIndexOf(".")));//c 后面不包含
185 
186         //总结:
187         // 返回值都是拷贝的字符串,不是原来的
188         // 查找都是从0开始,返回值 -1表示没有找到
189         // java范围都是左边包含,右边不包含 [,)
190 
191         //12以什么开始,和以什么结尾
192         // endsWith()
193         // startsWith()
194         System.out.println("--------------------12-----------------------");
195         s1 = "abcd ";
196         System.out.println(s1.startsWith("ab"));//true
197         System.out.println(s1.endsWith("cd"));//false
198 
199 
200         //13 isBlank() 字符串是否为空
201         System.out.println("--------------------13-----------------------");
202         System.out.println("".isBlank());
203         System.out.println(" ".isBlank());
204         System.out.println("\n".isBlank());
205         System.out.println("\t".isBlank());
206 
207 
208         //14转变为大写/小写
209         //toLowerCase()小写
210         //toUpperCase()大写
211         System.out.println("--------------------14-----------------------");
212         s1 = "Java";
213         System.out.println(s1.toLowerCase());
214         System.out.println(s1.toUpperCase());
215 
216         //总结:
217         // 返回值都是拷贝的字符串,不是原来的
218         // 查找都是从0开始,返回值 -1表示没有找到
219         // java范围都是左边包含,右边不包含 [,)
220     }
221 
222     //字符串不能修改
223     public static void test3() {
224 
225         String s1 = "张三";
226         String s2 = s1;
227         //拷贝了一个新的字符数组给字符数组
228         char[] chars = s1.toCharArray();
229         System.out.println(s1);
230         chars[0] = '流';
231         System.out.println(s1);
232 
233 //        s1 = char;//不能直接共用地址,
234         s1 = new String(chars);//重新new了一个,也就是拷贝
235         System.out.println(s1);
236         chars[0] = '李';
237         System.out.println(s1);
238 
239         //总结本身字符串就是固定的
240         //不能修改,删除,添加
241     }
242 
243     public static void main(String[] args) {
244 //        test1();//字符串基本操作
245         test2();//其它操作
246 //        test3();
247     }
248 }

1.2 switch 语句

 1 package com.teststring;
 2 
 3 public class TestSwitch {
 4     public static void main(String[] args) {
 5         String str[] = new String[]{".png", ".exe", ".jpg", ".bat", ".txt", ".sql", ".java", ".c", ".cpp"};
 6         for (int i = 0; i < str.length; i++) {
 7             switch (str[i]) {
 8                 case ".png":
 9                 case ".jpg":
10                     System.out.println(str[i]+"结尾,是一个图片。");
11                     break;
12                 default:
13                     System.out.println(str[i]+"结尾,不是一个图片。");
14                     break;
15             }
16         }
17 
18     }
19 }

 

标签:String,s1,练习,System,println,字符串,out
来源: https://www.cnblogs.com/study-liu/p/OOP-java-String.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有