String的操作
基础操作,后续在面向对象章节细讲
String 类的构造方法很多。可以通过初始化一个字符串,或者字符数组,或者字节数组等等来创建一个 String 对象
常见方法
- length()
- substring(int)/(int,int)
- charAt(int index):char
- indexOf(int ch) 和 indexOf(int ch, int fromIndex) 方法
- equals(String):boolean比较两个字符串的内容是否相等
String类型的拼接是通过StringBuilder类中的append方法实现的,然后返回toString的结果。是在堆中 的新对象
字符串转数字
- next():String 当光标扫描到第一个分隔符(默认是空格)停止扫描,会创建一个String类的对象, 里面存储的就是扫描的内容(不包含空格分隔符)返回创建的String对象的引用给n
- nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即。它读到行尾)。读取输入 后,nextLine()将光标定位在下一行。所以它和next()的区别就是它没有分隔符,直接扫描全部的键 盘输入内容,并创建对象进行将其引用返回
- 目标类型名.parse类型(String)
- Integer.parsetInt(String):int
-
Double.parsetDouble(String):double
字符串新方法
- String.repeat(int) 根据 int 参数的值重复 String
- String.lines() 拆分由其行终止符在其上调用的 String ,并返回由这些行终止符划分的 Strings Stream 。具体使用以后再说
- String.strip() 、 String.stripLeading() 和 String.stripTrailing() 去除字符串的空格
- String.isBlank() 判断String是否为空或仅包含空格字符
具体实现原理
在JDK1.8以前采用char[]实现,现在采用byte[]的方式实现。可以减少字符串占用的内存,同时减少垃圾 回收次数。 实际开发中单字节的字符使用频率远高于双字节的。在JDK8+版本中Java会根据字符串内容自动设置为 相应的编码,要么 Latin-1要么UTF16,中文是两个字节,纯英文是一个字节。 不使用UTF-8编码字符集是因为UTF-8是变长编码的,有1、2、3、4字节的不同情况,所以对于String随 机访问操作很不方便 UTF-16也是变长编码,是使用2或者4个字节存储字符。对于Unicode编码在0-FFFF之间的字符使用两个 字节存储,而10000-10FFFF之间的字符使用4个字节。但是Java中一个char就是2个字
练习题
从0123456guihgeeqg789随机生成6位数。
public class Test2 {
public static void main(String[] args) {
int a=6;// 验证码长度为6
final String score ="0123456guihgeeqg789";验证码中可以出现的字符 final常量
String b="";
for(int i=0;i<a;i++) {
double c =Math.random();//生成一个[0,1)的伪随机
//int d = (int)(c*9);
//System.out.print(d);
int d = (int)(c*score.length());
char cc = score.charAt(d);
b+=cc;//b=b+其他类型 就是字符串拼接,其他类型数据会自动转换为字符串类型数据
}
System.out.print(b);
}
}