zoukankan      html  css  js  c++  java
  • 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")。

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

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

    1.2 String与StringBuilder、StringBuffer之间的转换

    1.2.1 String转换成StringBuilder与StringBuffer

    有两种方法:

     1 //法一
     2 StringBuilder stringbuilder = New StringBuilder("abcd");
     3 StringBuilder stringbuilder = New StringBuilder(str1);
     4 
     5 StringBuffer stringbuffer = New StringBuffer("efgh");
     6 StringBuffer stringbuffer = New StringBuffer(str2);
     7 //法二
     8 StringBuilder stringbuilder = New StringBuilder();
     9 stringbuilder.append(str1);
    10 
    11 StringBuffer stringbuffer = New StringBuffer();
    12 stringbuffer.append(str2)
    1.2.2 StringBuilder与StringBuffer转换成String
    String str1 = stringbuffer.toString();
    String str2 = stringbuilder.toString();

    二. String与int

    2.1 将字串String转换成整数int

    有两个方法:

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

    2.2 将整数int转换成字串String

    有三种方法:

    1 //法一
    2 String s = String.valueOf(i);
    3 //法二
    4 String s = Integer.toString(i);
    5 //法三
    6 String s = "" + i;

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

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

    有两种方法:

    1 //法一
    2 char[] strChar = str.toCharArray();
    3 //法二
    4 int[] strChar = new int[str.length()];
    5 for(int i = 0;i < str.length(); i++){
    6   strChar[i] = (int)str.charAt(i);
    7 }

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

    有两种方法:

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

    四. String与byte[]

    4.1 String转换成byte[]

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

    4.2 byte[]转换成String

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

    五. String[]与List

    5.1 String[]转换成List

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

     1 //法一
     2 String[] userid = {"aa","bb","cc"};
     3 List<String> userList = Arrays.asList(userid);
     4 //法二
     5 String[] userid = {"aa","bb","cc"};
     6 List<String> userList = new ArrayList<String>();
     7 Collections.addAll(userList, userid);
     8 //法三 最笨的方法
     9 String[] userid = {"aa","bb","cc"};
    10 List<String> userList = new ArrayList<String>(userid.length);
    11 for(String uid: userid){
    12     userList.add(uid);
    13 }

    5.2 List转换成String[]

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

     1 //法一
     2 List<String> strList = new ArrayList<String>();
     3 strList.add("aa");
     4 strList.add("bb");
     5 Object[] objs = strList.toArray();
     6 //如果要变成String数组,需要强转类型。
     7 String[] strs = (String[]) strList.toArray();
     8 //也可以指定大小:
     9 final int size = strList.size();
    10 String[] strs = (String[])strList.toArray(new String[size]);
    11 
    12 //法二 笨方法
    13 List<String> strList = new ArrayList<String>();
    14 strList.add("aa");
    15 strList.add("bb");
    16 String[] strs = new String[strList.size()];
    17 Iterator iter = strList.iterator();
    18 int i = 0;
    19 while(iter.hasNext()){
    20     strs[i] = (String) iter.next();
    21     i++;
    22 }

    六. 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

  • 相关阅读:
    欧拉回路和欧拉路径
    nth_element函数
    Java读写Excel
    如何指定tomcat中session过期时间
    Java 正则表达式
    Java与模式阅读笔记(1)依赖倒转原则
    Linux vi 命令详解
    native2ascii & ascii2native
    Linux 下zip包的压缩与解压
    linux设置邮件自动转发
  • 原文地址:https://www.cnblogs.com/Eason-S/p/5738604.html
Copyright © 2011-2022 走看看