int、String、char、Array之间的转换,这一篇够了!!!

前段时间开始刷LeetCode上面的题目,想着数据结构不会,我先做做简单的算法题目吧。好家伙,拿到题目,发现最基础的数据类型转换都不知道,然后进入了小自闭。所以今天就集中整理了一下,最最最基础的四种数据格式的转换,帮助自己学习,也希望对你们有帮助!!!




1、int与String转换

int变为String

int num = 1;
String str;

//1.直接和空字符串相加
str = "" + num;
 
//2.使用Integer的toString()方法
str = Integer.toString(num);
 
//3.使用String的valueOf()方法
str = String.valueOf(num);

String变为int

//字符串一定要符合规范(数字型字符串),否则会抛出异常
String str = "33";
int num;

//1.使用Integer的parseInt方法
int num = Integer.parseInt(str);
 
//2.使用使用Integer的valueOf()方法,再将结果由Integer类型转变为int类型
int num = Integer.valueOf(str).intValue();

补充:对于String变为int的转换中的第二种方法,如果我们想使用对应数字的包装类(毕竟包装类Integer的功能比基本类型int的功能要多很多),就可以不需要直接去掉intValue()。

public static Integer valueOf(String s) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, 10));
}




2、int与char转换

int变为char

//由于char只能占一位,所以num在0-9可转为字符型数字,再往上则为其他字符
int num = 1;
char c;

//1.先加 '0' ,再强转为char
c = (char) (num + '0');

//2.在ASCII表中,'0'和48等价
c = (char) (num + 48);

char变为int

char c ='3';
int num;

//1.和上面的转换方式反着来,减去 '0',由于数据会自动向上转型,所以这里不需要强制转换
num = c-'0';

//2.直接减去48
num = c-48;

补充:如果直接不减去48,就类似于两个数据在ASCII表中转换。'3’字符对应的ASCII转换为对应的同位置的数字。此处为51。

num = c;

ASCII表部分:

Bin(二进制)Oct(八进制)Dec(十进制)Hex(十六进制)缩写/字符解释
0010 1111057470x2F/斜杠
0011 0000060480x300字符0
0011 0001061490x311字符1
0011 0010062500x322字符2
0011 0011063510x333字符3
0011 0100064520x344字符4




3、String与Array转换

String型数组

String变为Array

String  str= "abc";
 
//1.转换为char[]数组
char[] ch = str.toCharArray();

//2.使用String.charAt(i)循环放入
char[] cha= new char[str.length()];
for(int i =0;i<str.length();i++) {
     cha[i] = str.charAt(i);
}

Array变为String

char[] chars ={'','','',''};
String str;

//1.使用copyValueOf方法
str =String.copyValueOf(chars);

//2.直接转换
str = String.valueOf(chars); 

//3.int型数组可以使用StringBuffer
int nums = {1,2,3,4,5,6};
StringBuffer str1 = new StringBuffer();
for (int i = 0; i <ints.length ; i++) {
	str = str.append(ints[i]);
}
str1 = str.toString();

补充:创建数组的三种方式

//1.动态创建,声明并创建内存空间,等待赋值。
int[] arr = new int[5];

//2.动态创建,声明并创建内存空间,并赋值。
int[] a = new int[]{1, 2, 3, 4, 5};

//3.属于静态创建,声明并直接赋值,创建内存空间。
int[] x = {1, 2, 3, 4, 5}; 




4、String与char转换

char变为String

char c = 'a';
String str;

//1.建议使用该方法
str = String.valueOf(c); 

//2.其对应的底层就是方法1
str = Character.toString(c);

//3.已过时,不建议使用
str = new Character(c).toString();

//4.这是最方便的,但是效率是最低的
str = "" + c;

String变为char

char c;
String str = "a";

//1.先将String字符串转换为数组,再
char[] charArray = str.toCharArray();
for(char c : charArray) {
   System.out.println(c);
}


//2.直接遍历获取每一个元素
for (int i = 0; i < str.length(); i++) {
    c = str.charAt(i);
}

补充:如果String字符串只有一个或者只想获取首元素,那么我们可以直接打印str.charAt(0),或者str.toCharArray()[0]




5、其他

本文整理的更多的是Java数据类型本身的方法,而不是使用自己的逻辑运算去变化。如果你想让一个int类型的数字变成一个Array类型的数组,你可以直接new一个数组,然后将数组直接让进去。这偏向于简单的逻辑,不再本文的范围内。对于其它复杂点转换,你还可以转化两次,当然,个人觉得出现的几率比较小!!!


另外补充一个判断数据是什么类型的方法(利用反射的性值,获取对应数据的模板类型):

public class Test {
    public static void main(String[] args) {
        String str = "mobian";
        System.out.println(getType(str));
    }

    //判断数据是什么类型
    public static String getType(Object o) {
        return o.getClass().toString();
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默辨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值