字符串优化,与字符串的不可变,字符串对象重载的参数
来源:互联网 发布:淘宝嘻哈店铺 编辑:程序博客网 时间:2024/06/08 04:30
如有收获,请点赞,或是留言,以资鼓励。谢谢
字符串优化?
1:为什么要优化字符串
在开发中,有许多重复的字符串,字符串是对象,这些重复的字符串虽然值相同,但他们也是一个个独立的对象,这样的重复浪费了内存,故而优化。
2:优化怎么样规避一些雷区
前提提要:字符串优化啊,就是把字符串对象放在了常量池,以供大家引用,a="abc"; b="abc"; a的abc放在了常量池,此刻b也等于abc,值相同难道再出一个abc对象?这样不就浪费了,于是b的abc是引用了在常量池a中的那个abc,ab引用的同一个abc。
ab引用同一个abc,ab就不能让他们进行改变,再说你想改变也改变不了,制作字符串的char[]是final,且不提供方法修改,且不能继承写方法修改,所以你不用担心ab引用abc,ab会通过下标把abc值给改了去。
放在常量池的不止有优化的字符串,还有其他,比如int a=3;int b=3;此刻嘛,a==b,想必这种重复的值也是经过优化了嘛,具体有哪些,我也说不上来。
3:怎么样进行的优化。
String a="abc";String b="abc";,此刻abc这个字符串对象一开始就是放在了常量池进行优化,a引用abc,b引用的也是这个abc,所以a==b,true。
String a1=new String("abc");,此刻这个abc即是放在了堆上,自成一片地址交给a1引用,此时String b1=new String("abc");,a==b不成立,a的abc对象是一片地址,b的abc对象是一片地址,不共享。
String a1=new String("abc");String b1=a;,a==b成立,a的abc对象是一片地址,b引用a,也就是引用了abc的地址了,成立
字符串是一个类,此类中的方法有:
获得长度,替换,截取,去空格,前后缀比较,indexof("")返回查找到的字符第一次出现的下标,indexof("",int)从指定下标继续向右查找到又符合的下标,lastindexof(“”)返回最后一次查找到的下标,indexof(“”,int)从指定的位置反向(向左)返回查找到的最后一次下标,转换等等,详见api
但是由于是不可变字符串,这样做避免了重复减少了内存,但正是由于不可变,如果每个字符串内容都不一样呢?比如,循环中
for(int a=0;a<100;aII){
String b=a+i;
这种活不可变1字符串就没啥用了,该占着还是占着内存,于是出现了StringBuff...关键字记不住了,后面讲解。
提示:
字符串的几个构造方法,new String(byet[]),new String(byet[],int),new String(char[]),等,详见api,
它的意思不是,你传进什么参数我给你转换为字符串,而是根据你这个值啊,去编码中寻找对应的,可指定编码。
比如:byte[] a={97};此刻new String(a),打印的是a,byte[] a={9};此刻new String(a),打印的是方框,中间是问号,俗称乱码,因为你没有可用于显示的。
String a = "錢哦啊jkldjla";
byte[] b = a.getBytes();
a = new String(b, "GB2312");
System.out.print(a);
这个,先把繁体简体字母转换位byte数组,对应的数字分别是-27 88 -59 -74 -80 -95 106 107 108 100 106 108 97 这么多,然后在交给字符串,咋现在指定的gb2312(可以识别简体)
是的,繁体不能识别,最后打印的a的结果是?X哦啊jkldjla,这个,所以啊,字符串对象重载的参数,确实可以把字节数组,字符数组还原为字符串,不过的看你是否符合了。还原,就是个字符转换。
- 字符串优化,与字符串的不可变,字符串对象重载的参数
- 字符串是不可变的
- 不可变字符串的学习
- 不可变字符串的扩展
- 字符串:可变字符串与不可变字符串
- Foundation框架-字符串对象的操作(不可变字符串NSString和可变字符串NSMutableString)
- 不可变字符串对象的创建及其基本操作
- Objective-C中可变与不可变字符串的学习
- 不可变字符串 NSString 的基础使用方法
- 字符串NSString和不可变字符串NSMutableString的基础知识
- OC 不可变字符串和可变字符串的一些用法
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- 为什么Java字符串是不可变对象?
- ForkJoin框架(一):ForkJoin框架概述
- HDU
- 将数据通过php语法存入到表里面
- 虚拟机入门二,虚拟机的三种网络模式
- 津津的储蓄计划
- 字符串优化,与字符串的不可变,字符串对象重载的参数
- Linux开机自启动/服务注册的几种方式:
- spark源码之Job执行(1)stage划分与提交
- <转载>AS中导入GitHub开源项目SlidingMenu总结
- Memcached expire 设置错误引起的set(key,exp,value)为true而get(key)为null的问题
- python的第一个小爬虫requests
- 前端知识之HTML----form----内部元素
- 2016 ACM-ICPC Asia Regional Changchun 1004 Triangle(打表)
- 前端知识