网站建设公司企业网站,竞价点击软件排名,做水果的有什么网站,做化学合成的网站有哪些二、字符串类
#xff08;一#xff09;String
String#xff1a;字符串 concat() --- 在末尾追加字符串#xff0c;返回新的字符串 substring(int begindex) --- 从指定下标处截取到字符串末尾#xff0c;并返回新的字符串 substring(int begindex,endindex) --- 从开始…二、字符串类
一String
String字符串 concat() --- 在末尾追加字符串返回新的字符串 substring(int begindex) --- 从指定下标处截取到字符串末尾并返回新的字符串 substring(int begindex,endindex) --- 从开始下标包含处截取到结束下标排他处并返回新的字符串 toLowerCase() --- 转小写并返回新的字符串 toUpperCase() --- 转大写并返回新的字符串 trim() --- 去除首位空格并返回新字符串 replace() --- 替换字符并返回新字符串 replaceFirst() --- 替换第一次出现的字符串并返回新字符串 replaceAll() --- 替换字符串并返回新字符串 indexOf() --- 获取字符串第一次出现的下标 lastIndexOf() --- 获取字符串最后一次出现的下标 charAt() --- 获取指定下标上的字符 equals() --- 判断两个字符串是否相同 equalsIgnoreCache() --- 判断两个字符串是否相同(不区分大小写) startwith() --- 判断是否以某字符串开头 endwith() --- 判断是否以某字符串结束 toCharArry() --- 将字符串转换为字符数组 valueOf() --- 将其他类型转换为字符串类型 二StringBuffer
StringBuffer变长字符串 append() --- 将字符串追加到末尾 insert() --- 将字符串插入到指定下标的位置 replace() --- 从开始下标包含处替换到结束下标排他处的字符串 delete() --- 从开始下标处(包含)删除到结束下标处(排他)的字符串 deleteCharAt() --- 删除指定下标处的字符 reverse() --- 反转字符串 三StringBuilder
使用与StringBuffer相同。
四深入String
1、创建对象
1.描述下列代码创建多个少String对象
String str1 abc;
String str2 abc;
System.out.println(str1 str2);//true 只有一个String对象。因为abc为字面值常量存放在常量池中又常量值不能重复因此只有一个abc字符串对象 2.描述下列代码创建多个少String对象
String str3 new String(abc);
String str4 new String(abc);
System.out.println(str3 str4);//false 有三个对象分别是“abc”new出来的两个String对象 2、字符串拼接问题
1.常量拼接
//两个常量在编译时直接拼接
String str3 abc;
System.out.println(str1 str3);//true ab、c作为常量在编译过程中直接拼接最终为“abc”。从中也可以看出在此过程中一共有三个常量“ab”、“c”、“abc” //两个常量在编译时直接拼接
final String s1 ab;
final String s2 c;
String str4 s1s2;
System.out.println(str1 str2);//true final修饰变量使变量变成常量和上一个情况一样 2.变量拼接
String s3 ab;
String s4 c;
String str5 s3 s4;//底层new StringBuidler(String.valueOf(s3)).append(s4).toString();
System.out.println(str1 str5);//false 两个变量底层创建StringBuilder对象做拼接,则判断两个对象的内存地址是否相同显然不同 3、字符串频繁拼接问题
对于多次拼接的情况下如果使用“”来进行拼接那么当次数达到一定时程序运行的速度将会非常慢
//获取1970.1.1 0:0:0到现在的毫秒数(1000毫秒1秒)//long currentTimeMillis System.currentTimeMillis();
long startTime System.currentTimeMillis();
String str hh;
for (int i 0; i 100000; i) {
str yyyyy;//底层实现
// str str yyyyy;
// str new StringBuilder(String.valueOf(str)).append(yyyyy).toString();
}
long endTime System.currentTimeMillis();
System.out.println(运行时间(endTime-startTime));//13752 对于拼接其底层逻辑是不断创建StringBuilder对象当拼接次数过多时程序运行时间就会过长 采用append方法来解决这个问题
long startTime System.currentTimeMillis();StringBuilder sb new StringBuilder();
sb.append(hhh);
for (int i 0; i 100000; i) {sb.append(yyyy);
}
long endTime System.currentTimeMillis();
System.out.println(运行时间(endTime-startTime));//5 但是使用append方法对于特别大量的数据时还是不能解决该问题。因为appen方法中当元素个数超过数组容量时就会进行扩容扩容创建新的数组浪费时间 最好的解决方法是根据需求一开始就初始化一个比需求大的数组容量从而避免减少底层容器的伸缩性减少底层容器的扩容次数
long startTime System.currentTimeMillis();StringBuilder sb new StringBuilder(10000000);
sb.append(hhh);
for (int i 0; i 100000; i) {sb.append(yyyy);
}
long endTime System.currentTimeMillis();
System.out.println(运行时间(endTime-startTime));//0