public class StringApi { public static void main(String[] args) { String str1 = "1234wangnaixing56789"; //提出字母 System.out.println(str1.substring(4,15));//wangnaixing } }1.2、拼接
public class StringApi { public static void main(String[] args) { String x1 = "123"; String x2 = "456"; int x3 = 789; //整型在做加法的时候,转String,再拼接 String msg = x1+x2+x3; System.out.println(msg);//123456789 } }1.3、复读机
public class StringApi { public static void main(String[] args) { String name = "wangnaixing"; String repeat = name.repeat(3); System.out.println(repeat);//wangnaixingwangnaixingwangnaixing } }1.4、不可变的字符串
字符串如abc不能直接修改,abc称为字符常量。如果要修改只能修改引用指向,比如指向bcd.
public class StringApi { public static void main(String[] args) { String x1 = "abc"; x1 = x1.substring(1,3)+"d"; System.out.println(x1); } }1.5、检测字符串是否相等?
public class StringApi { public static void main(String[] args) { String x1 = "abc"; String x2 = "abc"; System.out.println(x1.equals(x2));//true } }1.6、空串和判空
空串就是长度为0的字符串
public class StringApi { public static void main(String[] args) { String x1 = "";//这是一个空串 System.out.println(x1.length()); //0 } }
public class StringApi { public static void main(String[] args) { String x1 = "";//这是一个空串 if (x1!=null && x1.length()>0){ //判定字符串既不是null可不是空串的逻辑 } } }2、行为 2.1、根据索引得到字符
public class StringApi { public static void main(String[] args) { String x1 = "abcdefgh1jilif"; char c = x1.charAt(3); System.out.println(c);//d } }2.2、根据索引得到码点
public class StringApi { public static void main(String[] args) { String x1 = "abcdefgh1jilif"; int i = x1.codePointAt(3); System.out.println(i);// d字符在编码表的代码值为100 } }3、问题
3.1、你了解char吗?这些很多StringAPI,挺多很简单的,一看就懂。可以通过网站https://docs.oracle.com/javase/9/docs/api/java/lang/String.html 查询使用,可是对于一些概念,码点,Unicode编码机制不是很清晰。导致看不懂API
我们知道字符类型 char 在 Java 中是和 Unicode编码 形成一一对应的映射来存储的,而采取的编码方式则为 UTF-16。
字符串,就是一个个字符串起来,包起来的对象。而字符,计算机并不认识字符,只知道01二进制。字符和二级制需要一个映射关系。所以一开始有了美国的ASCII,但对于别的不是英文母语的国家,就需要更多字符,比如中国这么多的汉字,ASCII就不够用。
于是有了Unicode的编码方案,这是一本大的字典,大到把全世界的字符和二进制数都搭建了关系。
3.2、UTF-8 UTF-16这里的 UTF 是 Unicode transformation format 的缩写,即统一码转换格式。
解决方法:不定长存储,比如,汉这个字占有2个字节,字母A一个字节,采用Unicode编码为了兼容。只能每个字符都要2个字节.UTF就是做这样的转化工作的。
3.3、码点码点就是编码表中某个字符对应的代码值,这个代码值就标识这个字符。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)