String-char-int

记录基本数据类型的转换

char与String相互转换

    //Sting -> char[]
    String str = abcdefg”;
    char[] ch = str.toCharArray();
    //Sting -> char
    char b=str.charAt(0);//a


    //char -> String
    //核心为String.valueOf(char)
    char c='c';
    //1.
    String s = String.valueOf(c); //效率最高
    //2.
    String s = Character.toString(c);// Character.toString(char)方法实际上直接返回String.valueOf(char)
    //3.
    String s = new Character(c).toString();
    //4.
    String s = "" + c;// 用+号做连接符,虽然方法简单,但这个效率最低;
    //5.
    String s = new String(c);//String的构造方法实现

    //char[] -> String
    char[] chararr=new char[]{'1','0','1','0'};
    //1.
    String s0 = String.valueOf(chararr); //String.valueOf(char[])
    //2.
    String s1 = new String(chararr);//String的构造方法实现

    System.out.println(s0);
    System.out.println(s1);



String与StringBuffer之间的转换

在这些操作上StringBuilder=StringBuffer

    //String -> StringBuffer
    String str = "Hi Dave!";
    //方式一:构造方法
    StringBuffer buffer = new StringBuffer(str);
    //方式二:通过append方法
    StringBuffer buffer2 = new StringBuffer();
    buffer2.append(str);

    //StringBuffer -> String
    StringBuffer buffer3 = new StringBuffer();
    buffer3.append("Hi Mia!");
    //方式一:通过构造方法
    String str2 = new String(buffer3);
    //方式二:通过toString方法
    String str3 = buffer3.toString();
    //方式三:通过截取子字符串将StringBuffer转换为String
    String str4 = sb.substring(0, buffer3.length());		

char与int之间的转换


    //char -> int
    System.out.println((int) '2');//50  char本身的ansii值
    /*
    往往我们想得到的是
    输入:char '1'
    输出:int 1
    */
    char ch = '9';
    //1.
    if (Character.isDigit(ch)){  //借助String-> int 的Integer.parseInt()方法
	int num = Integer.parseInt(String.valueOf(ch));
	System.out.println(num);
    }
    //2.
    if (Character.isDigit(ch)){  //借助ANSII值做减法
	int num = (int)ch - (int)('0');
	System.out.println(num);
    }

    //int -> char
    /*
    形如
    输入:int 1
    输出:char '1'
    */

    int num= 1;
    char c0 = Character.forDigit(num,10);//Character类自有的转换方法
    char c1 = String.valueOf(num).charAt(0);//int-> String-> char 曲线救国转换
    char c2 = (char)('0' + num);//利用char类可以直接与int类 做相加
    char c3 = (char)(48+ num);//等同与c2,利用char类可以直接与int类 做相加,这里用ANSII码
    System.out.println(c0);
    System.out.println(c1);
    System.out.println(c2);
    System.out.println(c3);
    //int -> char[]
    /*
    形如
    输入:int 1234
    输出:char[] {'1','2','3','4'}
    */
    int num= 1010;//作二进制时表示10,作十进制表示1010,作八进制时表示520,作十六进制时表示4112
    //二进制 1010 真值:10
    //十进制 1010 真值:1010
    //八进制 1010 真值:520
    //十六进制 1010 真值:4112

    //int -> String -> char[]
    String str = Integer.toString(num);//int -> String 的三个方法都ok
    char[] chararr = str.toCharArray();
    for(int i:chararr){//输出数组chararr
        System.out.print((char)i+" ");//1 0 1 0 
        //System.out.print(i+" ");//49 48 49 48 
    }
    System.out.println("");

    //int 1010 -> char[]{'1','0','1','0'} -> int[]{1,0,1,0} 
    int[] intarr=new int[chararr.length];
    for (int i = 0; i < chararr.length; i++) {
         intarr[i] = (int)chararr[i] - (int)('0');//这里利用char -> int的两个方法都可   
    }
    for(int i:intarr){//输出数组chararr
        System.out.print(i+" ");//1 0 1 0 
    }

String与int之间的转换

    //String -> int
    String str="1010";
    int num0=Integer.parseInt(str);//直接使用静态方法,不产生多余对象,但会抛出异常
    int num1=Integer.parseInt(str,2);//按照二进制转换 输出用十进制 1010b=10d 所以输出 10
    int num2=Integer.valueOf(str).intValue();//Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象
    System.out.println(num0);
    System.out.println(num1);
    System.out.println(num2);

    //String -> int[]
    //"1010" -> int[]{1,0,1,0}
    String str = "1010";
    int[] arr = new int[str.length()];
    for (int i = 0; i < str.length(); i++) {
        arr[i] = Integer.parseInt(str.substring(i, i + 1));//substring [i,i+1) 左闭右开 
    }
    for(int i:arr){//输出数组arr
        System.out.print(i+" ");
    }

    //int -> String 
    int num= 1010;
    String s0 = String.valueOf(num);//String的静态方法,只产生一个对象
    String s1 = Integer.toString(num);
    String s2 = "" + num;//会产生两个String对象
    System.out.println(s0);
    System.out.println(s1);
    System.out.println(s2);
    //int[] -> String 
    int[] arr = new int[]{1,0,1,0};
    StringBuffer buffer = new StringBuffer();
    for (int i = 0; i < arr.length; i++) {
        buffer.append(String.valueOf(arr[i]));//这里利用int -> String的三个方法都可  
    }
    System.out.println(buffer);//1010

    //int[] -> char[] -> String
    int[] arr = new int[]{1,0,1,0};
    char[] chararr=new char[arr.length];
    for (int i = 0; i < arr.length; i++) {
         chararr[i] = Character.forDigit(arr[i],10);//这里利用int -> char的四个方法都可   
    }
    String str = String.valueOf(chararr); //char数组转换成String
    //String str = new String(chararr); //char数组转换成String 也可以用 String的构造方法
    System.out.println(str);//1010

2020/08/12 补充 一个很基础的,今天犯错了,牛客网因为这个没有调试出来;

/*
题目要求输出 4 9 两个结果用空格隔开,我写的
System.out.println(1+' '+2);
死活不对,一直0%,其实本来很简单一个问题

最后改为如下 即可
System.out.println(1+" "+2);

*/
        System.out.println(1+' '+2);//' ' 的ANSII 值为32 这里 执行 1+32+2 输出35
        //如果想要输出:1 2 (1 空格 2)这种形式  应当改为如下 即可避免 空格字符''' 进行加法运算
        //今天牛客死活调不出来,就是这里出了问题  
        System.out.print(1);
        System.out.print(' ');
        System.out.println(2);
        //或者如下
        System.out.println(1+" "+2);
        //具体原因如下:+号两侧有一侧为String时,+才是连接符;char与int时 执行加法操作 
        System.out.println(1+2);//3
        System.out.println('1'+'2');//ANSII值相加 49+50=99