首页 技术 正文
技术 2022年11月15日
0 收藏 805 点赞 3,448 浏览 2438 个字
package StringTest;public class TestString {
public static void main(String[] args){
// String str="aaaddd";
// String str2=str.substring(2,5);
// System.out.println(str);
// System.out.println(str2);
//编译器做了优化,直接在编译的时候将字符串进行拼接
String str1="hello"+"java";
String str2="hellojava";
System.out.println(str1==str2);
String str3="hello";
String str4="java";
//编译的时候不知道变量中存储的是什么,所以没办法在编译的时候优化
String str5=str3+str4;
System.out.println(str2==str5);
System.out.println(str2.equals(str5)); /*
输出:
true
false
true 进行字符串比较时,必须使用equals()函数 */
}
}
package StringTest;/*
*测试StringBuilder、StringBuffer可变字符序列
*
* */
public class TestStringBuilder {
public static void main(String[] args){
String str; //StringBuilder线程不安全,效率高(一般使用这个);StringBuffer线程安全,效率低。
StringBuilder sb=new StringBuilder("abcdef"); System.out.println(Integer.toHexString(sb.hashCode())); //转换成哈希字符串输出
System.out.println(sb); sb.setCharAt(2,'M'); //把下标为2的字符替换为"M"
System.out.println(Integer.toHexString(sb.hashCode())); //转换成哈希字符串输出
System.out.println(sb); /*
输出:
1b6d3586
abcdef
1b6d3586
abMdef 结果显示:StringBuilder定义的字符串在改变字符时不会产生多个对象,在原字符中直接替换,节约内存
*/ }
}
package StringTest;public class TestStringBuilder2 {
public static void main(String[] args){
StringBuilder sb=new StringBuilder(); for(int i=0;i<26;i++){
sb.append((char)('a'+i)); //26个英文字母
}
System.out.println(sb);
sb.reverse(); //字符倒序
System.out.println(sb); sb.setCharAt(3,'高'); //改字符
System.out.println(sb); sb.insert(0,'我').insert(6,'爱'); //链式调用。核心就是:该方法调用了return this,把自己传回来。
System.out.println(sb); sb.delete(10,23); //删除区间内的字符(字符下标)
System.out.println(sb);
/*
输出:
abcdefghijklmnopqrstuvwxyz
zyxwvutsrqponmlkjihgfedcba
zyx高vutsrqponmlkjihgfedcba
我zyx高v爱utsrqponmlkjihgfedcba
我zyx高v爱utsedcba
*/
}
}
package StringTest;
/*
测试可变字符序列和不可变字符序列使用的陷阱
*/public class TestStringBuilder3 {
public static void main(String[] args){
/*
使用String进行字符串的拼接
*/
String str8="";
long num1=Runtime.getRuntime().freeMemory();//获取系统剩余内存
long time1=System.currentTimeMillis(); //获取系统的当前时间
for(int i=0;i<5000;i++){
str8=str8+i; //相当于产生了10000个对象,绝对不能出现
}
long num2=Runtime.getRuntime().freeMemory();
long time2=System.currentTimeMillis();
System.out.println("String占用内存:"+(num1-num2));
System.out.println("String占用时间:"+(time2-time1)); StringBuilder sb1=new StringBuilder("");
long num3=Runtime.getRuntime().freeMemory();
long time3=System.currentTimeMillis();
for(int i=0;i<5000;i++){
sb1.append(i); //直接将字符加到sb1后面,不会产生多余的对象。
}
long num4=Runtime.getRuntime().freeMemory();
long time4=System.currentTimeMillis();
System.out.println("StringBuilder占用内存:"+(num3-num4));
System.out.println("StringBuilder占用时间:"+(time4-time3));
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,556
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,406
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898