String与其他类型的转换
首先,对于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")。
因此,这三个类是各有利弊,应当根据不同的情况来进行选择使用:
- 当字符串相加操作或者改动较少的情况下,建议使用 String str="hello"这种形式;
- 当字符串相加操作较多的情况下,建议使用StringBuilder;
- 如果采用了多线程,则使用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
String与其他类型的转换的更多相关文章
- C# enum、int、string三种类型互相转换
enum.int.string三种类型之间的互转 #代码: public enum Sex { Man=, Woman= } public static void enumConvert() { in ...
- C++11中string与数值类型的转换
C++中string与数值类型的相互转换记录 string转int.double.long string s = "123.456"; // string -> int co ...
- js中关于string转date类型的转换
var date_up = input.split("-");//input表示string类型(时间例如:2017-11-12 10:07:36.653) var date_do ...
- String与Int类型的转换
http://blog.sina.com.cn/s/blog_4f9d6b1001000bfo.html int -> String int i=12345; String s="&q ...
- Java不同类型字符转换String/int/Float/////
1.int & String int i=5678;String s=""; int->String: s=i+"";或 s=String.val ...
- 【枚举类型】Restful API请求--转换String为枚举类型
IBaseEnum.java public interface IBaseEnum { public String getName(); } FuncEnum.java import com.sssl ...
- 03.枚举和string以及int类型之间的转换
练习1: 将枚举类型强转成int类型 namespace _04.枚举类型的练习01 { //声明一个QQState类型的枚举 public enum QQState { OnLine, OffL ...
- golang数据基本数据类型和string类型的转换
基本类型之间的转换 golang在不同类型的变量之间赋值时需要显式转换,也就是说golang中数据类型不能自动转换. 表达式T(v)将值v转换为类型T 1.数据类型的转换可以是从范围小——>范围 ...
- 总结:String类型与Int类型的转换【实现插入操作主键自增】
1.String类型(此类型是数字格式的字符串类型)转换成Int类型 String str = "10000"; 转换成Int类型: int num = Integer.parse ...
随机推荐
- 微信小程序4 - 几个ES6基础写法
1. 默认参数 function demo(param){ param=param || {};} 新的写法,很直观 function demo(param={}){} 2. 简化方法,如你所见,de ...
- Python_uuid 学习总结
1. 背景知识: UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, ...
- 第二百三十四节,Bootstrap表单和图片
Bootstrap表单和图片 学习要点: 1.表单 2.图片 本节课我们主要学习一下 Bootstrap 表单和图片功能,通过内置的 CSS 定义,显示各 种丰富的效果. 一.表单 Bootstrap ...
- json中的日期格式转换(扩展new date()显示格式)
在java spring mvc 开发过程中,通过json 格式,向前端传递数据,日期格式发生了转变, 在前台数据展示时,要进行一定格式的转换才能正常显示: 我在开发中使用了easy ui 和my ...
- 嵌入式驱动开发之dsp 算法优化vlib emcv---算法优化
http://www.opencv.org.cn/forum.php?mod=forumdisplay&fid=9
- 嵌入式驱动开发之phy---fine Mac与Phy组成原理的简单分析
关键字rj45.pci-e 1. general 下图是网口结构简图.网口由CPU.MAC和PHY三部分组成.DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数 ...
- String painter (hdu 2476 DP好题)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2476 题目大意: 给出两个等长的串S, T, 要将S变成T, 每次可以把S的连续的一段变成相同的字母 ...
- 微软公布带外安全更新MS14-068
11月19日,微软公布了带外更新MS14-068以解决Windows 系统中的一个安全漏洞,该补丁安全等级为"严重". MS14-068 | Kerberos 中的漏洞可能同 ...
- 修改了JS代码,刷新网页后,加载的JS还是原来旧的?
本地修改JS脚本后,刷新网页看一下修改后的执行效果,结果调试显示加载的JS还是原来旧的,反复刷新均无效,郁闷! 解决办法:清理一下浏览器缓存(长经验了!) Ctrl+Shift+Del 清除G ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.4——使用Espresso测试Activity
问题: 你想要使用Google的Espresso测试Activity. 解决方案: 在Gradle配置里面增加Espresso,书写测试脚本. 讨论: Espresso测试库已经被添加进“Androi ...