首先,对于String类有一点是毫无疑问的:对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象。

一. String与StringBuilder、StringBuffer

1.1 三者之间的比较

1.1.1 添加字符串
string1 += string2;

  String类后面添加字符串,在以上例子中,相当于将原有的string1变量指向的对象内容取出与string2变量指向的对象作相加操作再存进另一个新的String对象当中,再让string1变量指向新生成的对象。(其中string2也可以是一个字符串)。

StringBuilder str = new StringBuilder(string1);
StringBuffer str = new StringBuffer(string1);

  StringBuilder与StringBuffer类后面添加字符串,在以上例子中,并没有创建新的对象,append操作是在原有对象的基础上进行的,如果添加动作要执行多次的话,StringBuilder与StringBuffer在全部过程中只创建了一个对象,所占的资源要比String方式小得多。

1.1.2 性能及使用场景

  String、StringBuilder、StringBuffer三者的执行效率:  StringBuilder > StringBuffer > String

  当然这个是相对的,不一定在所有情况下都是这样。比如String str = "hello"+ "world"的效率就比 StringBuilder st = new StringBuilder().append("hello").append("world")要高。(String类的str在编译期间被JVM优化成了"helloworld")。

  因此,这三个类是各有利弊,应当根据不同的情况来进行选择使用:

  1.   当字符串相加操作或者改动较少的情况下,建议使用 String str="hello"这种形式;
  2.   当字符串相加操作较多的情况下,建议使用StringBuilder;
  3.   如果采用了多线程,则使用StringBuffer。

1.2 String与StringBuilder、StringBuffer之间的转换

1.2.1 String转换成StringBuilder与StringBuffer

有两种方法:

 //法一
StringBuilder stringbuilder = New StringBuilder("abcd");
StringBuilder stringbuilder = New StringBuilder(str1); StringBuffer stringbuffer = New StringBuffer("efgh");
StringBuffer stringbuffer = New StringBuffer(str2);
//法二
StringBuilder stringbuilder = New StringBuilder();
stringbuilder.append(str1); StringBuffer stringbuffer = New StringBuffer();
stringbuffer.append(str2)
1.2.2 StringBuilder与StringBuffer转换成String
String str1 = stringbuffer.toString();
String str2 = stringbuilder.toString();

二. String与int

2.1 将字串String转换成整数int

有两个方法:

 //法一
int i = Integer.parseInt([String]);
int i = Integer.parseInt([String],[int radix]);
//法二
int i = Integer.valueOf(my_str).intValue();

2.2 将整数int转换成字串String

有三种方法:

 //法一
String s = String.valueOf(i);
//法二
String s = Integer.toString(i);
//法三
String s = "" + i;

三. String与字符数组(char[])

3.1 String转换成字符数组(char[])

有两种方法:

 //法一
char[] strChar = str.toCharArray();
//法二
int[] strChar = new int[str.length()];
for(int i = 0;i < str.length(); i++){
strChar[i] = (int)str.charAt(i);
}

3.2 字符数组(char[])转换成String

有两种方法:

 char data[] = {'h', 'e', 'l', 'l', 'o'};
//法一
String str1 = new String(data);
//法二
String str2 = String.valueOf(data);

四. String与byte[]

4.1 String转换成byte[]

 byte[] midbytes=isoString.getBytes("UTF8");
//为UTF8编码
byte[] isoret = srt2.getBytes("ISO-8859-1");
//为ISO-8859-1编码,其中ISO-8859-1为单字节的编码

4.2 byte[]转换成String

 String isoString = new String(bytes,"ISO-8859-1");
String srt2=new String(midbytes,"UTF-8");

五. String[]与List

5.1 String[]转换成List

有以下三种方法,其实String[]可以是任意类型的数组。

 //法一
String[] userid = {"aa","bb","cc"};
List<String> userList = Arrays.asList(userid);
//法二
String[] userid = {"aa","bb","cc"};
List<String> userList = new ArrayList<String>();
Collections.addAll(userList, userid);
//法三 最笨的方法
String[] userid = {"aa","bb","cc"};
List<String> userList = new ArrayList<String>(userid.length);
for(String uid: userid){
userList.add(uid);
}

5.2 List转换成String[]

有以下两种方法,其实String[]可以是任意类型的数组

 //法一
List<String> strList = new ArrayList<String>();
strList.add("aa");
strList.add("bb");
Object[] objs = strList.toArray();
//如果要变成String数组,需要强转类型。
String[] strs = (String[]) strList.toArray();
//也可以指定大小:
final int size = strList.size();
String[] strs = (String[])strList.toArray(new String[size]); //法二 笨方法
List<String> strList = new ArrayList<String>();
strList.add("aa");
strList.add("bb");
String[] strs = new String[strList.size()];
Iterator iter = strList.iterator();
int i = 0;
while(iter.hasNext()){
strs[i] = (String) iter.next();
i++;
}

六. String与Date

详见:http://www.cnblogs.com/bmbm/archive/2011/12/06/2342264.html

参考:http://www.cnblogs.com/dolphin0520/p/3778589.html

http://zhangyuefeng1983.blog.163.com/blog/static/1083372520126693524870/

http://www.cnblogs.com/bmbm/archive/2011/12/06/2342264.html

最新文章

  1. C# 复制指定节点的所有子孙节点到新建的节点下
  2. 【只需3步】源码手动安装Apache以及配置(亲测可行)
  3. 攻城记:Thinkphp框架的项目规划总结和踩坑经验
  4. Ansible :一个配置管理和IT自动化工具
  5. Linux数组array基础
  6. curl post参数,接口接收不到数据问题
  7. Python Tutorial 学习(四)--More Control Flow Tools
  8. jQuery在html有效,在jsp无效的原因
  9. 【转】【Egit】如何将eclipse中的项目上传至Git
  10. 深度探索C++对象模型之C++对象模型笔记
  11. 21、手把手教你Extjs5(二十一)模块Form的自定义的设计
  12. ios -Unity3D的EasyAR集成到已经有项目中。
  13. BZOJ.4842.[NEERC2016]Delight for a Cat(费用流)
  14. minecraft初探
  15. SQL Server CTE 递归查询全解
  16. 7.2内存管理-ARC
  17. rnn-nlp-单词预测
  18. Monkey 命令收集相关 --追加Monkey自动化测试开源工具
  19. ELK之nginx日志使用json格式输出
  20. 极快瑞的函数式编程,Jquery涉及的一些函数

热门文章

  1. 2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 二分+贪心
  2. 第一周python入门
  3. android mvp设计模式
  4. 成功抓取csdn阅读量过万博文
  5. JS动态增加删除UL节点LI及相关内容示例
  6. WEB APP 开发标签
  7. tp三级联动
  8. 第二百三十一节,Bootstrap 介绍
  9. 【BZOJ】2060: [Usaco2010 Nov]Visiting Cows 拜访奶牛(树形dp)
  10. 【Raspberry Pi】读取DHT11温度湿度波折