java系统找不到指定文件怎么解决
292
2022-09-23
《Java 核心技术 卷1》 笔记:第三章 Java基本的程序设计结构(3)
3.5.6 枚举类型
enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE}
固定取值可以使用枚举变量,如代码所示,具体的大小可以选择 SMALL/MEDIUM/LARGE/EXTRA_LARGE。使用时:Size s = Size.SMALL;
3.6 字符串
字符串是由Unicode组成的序列,使用双引号将字符串的内容括起来。例子:
3.6.1 切割与拼接
3.6.2 不可变字符串
不可变类:无法通过外部类创建对象,修改对象成员变量;无法通过克隆类,修改对象成员变量。
String 类型特性:修改、拼接效率低,复制效率高。原因作者认为实际使用中,很少需要进行字符串切割和拼接。共享、复制的效率更重要。
字符串比较:== 比较同一个对象,equals比较相同值。
3.6.3 代码点和代码单元
这一块在基本书中看到过,但说实话,除了"charAt",其他生产从来没用到过,大概总结一下吧。
这一段写起来意外的久。首先想到,假设生产中要使用码点,那一定是要把一部分拿出来做匹配。码点要遍历,但是怎么取出来呢?我打印个整型有什么用?难道是直接用char?
恭喜我,答错了。码点本来就是多字符,用单字符怎么可能打印出来,抱着深深的疑惑,查了很多资料,可能太过生僻的原因,大家都没有做过多研究,我自己翻了翻代码,找到一个疑似:Character.getName(codePoint),但是打印出的东西,不太对劲。
数学双击大写字母O,应该是这个符号的名称。 但是这玩意似乎没用o(╥﹏╥)o。裂开。于是,重新翻看代码点相关的API,发现有个Character.charCount(cp),居然可以求出码点的长度,那咱直接substring就好了吧。
public class Main { public static void main(String[] args) { String greeting = "Hello"; int n = greeting.length();//unicode字符长度 //第一个字母 char first = greeting.charAt(0);//第一个字母 char last = greeting.charAt(4);//最后一个字母 String complex = "Hello \uD835\uDD46 ,Nice to meet you!"; System.out.println(complex); int cpCount = complex.codePointCount(0,complex.length());//码点长度 int offset = 0; for(int i = 0; i < cpCount; i++){ int index = complex.offsetByCodePoints(0,i); int cp = complex.codePointAt(index); int len = Character.charCount(cp); //疑惑怎么打印,各种资料找不到,后面翻源码发现有个输出,非常的冗余 //System.out.println(Character.getName(cp)); //切字符串,暂时只想到这个笨办法 System.out.print(complex.substring(offset,offset+len)); //因为会对应多个字符,单char打印会出错误的结果// System.out.print((char)cp); offset+=len; } }}
成功打出来!额外小知识,发现一篇有趣的文章,讲述了中文占几个字节,建议去了解一下:邻桌问我一个汉字占几个字节,我头也不抬回答两个,结果被打脸
3.6.4 字符串常用API
就写一些我用过的
名称 | 含义 | 个人评价 |
char charAt (int index) | 某个位置的字符。 | 挺有用的,在需要做字符串截取的时候很有用,自己charAt拼接,比substring效率高。可做一些边界处理。 |
boolean endsWith(String suffix) | 判断字符串是否以某个字符串结尾 | 一般。后缀匹配用的比较少,开头匹配用的多。 |
boolean equals(Object other) | 判断两个字符串是否相等。 | 最常用的,没有之一。 |
int index0f(String str) | 判断某个子串首次在当前字符串出现的位置。 | 还行,用的不多。 |
int lastIndex0f(String str) | 子串,最后一次出现的位置。 | 还行,用的不多。 |
int length( ) | 获得字符串长度 | 很常用。与charAt联用经常有奇效。 |
boolean startsWith(String prefix) | 判断字符串是否以某个字符串开头 | 挺有用的。 |
String substring(int beginIndex) | 从某个索引开始,切割字符串 | 一般,不如两个index通用性强 |
String substring(int beginIndex, int endIndex) | 切割字符串,从哪里开始,从哪里结束 | 很有用,substring(beginIndex,s.length())可以用来替代上面的substring(beginIndex) |
String toLowerCase( ) | 字符串所有字符转小写 | 很有用,签名之类的用。 |
String toUpperCase( ) | 字符串所有字符转大写 | 很有用,签名之类的用。 |
String trim( ) | 去除前后空格 | 没用,ascii码有两种空格,只能去一种,去了个寂寞。 |
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~