写了一下算法题,我发现有些类型转换的地方经常出错,为了更加熟悉的掌握这些练习,我总结嘞一下一些类型转换的方法,巩固一下自己的一些知识,同时方便后面的复习。
分为基本数据类型和引用数据类型,基本数据类型有数值类型(整数类型和浮点类型,整数类型即:byte,short,int,long,浮点类型即:float,double)字符型(char)布尔类型(boolean)引用数据类型有类、接口,枚举(enum)注解(Annotation)
1Byte=8bit(位) 0或1占1bit,英文字母占1bit,一个中文汉字占2bit
类型名 | 占用空间(bit) | 取值范围 |
byte | 8 | -2E7~2E7 -1 |
short | 16 | |
int | 32 | |
long | 64 | |
float | 32 | 1.4E-45~3.4E+38,-1.4E-45~-3.4E+38 |
double | 64 |
说明:一般情况下,不同的字符之间转换是有一定的顺序的,如果你要从float转换到long,那么你必须就要进行强制转换了,但是进行强制转换会掉精度,结果会有误差
long num=(long)a; //a是一个浮点数
二进制以0b开头,八进制是以0开头,后面没有字母,十六进制是以0X开头
1.小数点保留
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); double b=sc.nextInt(); // 保留两位小数 System.out.println(a+"/"+String.format("%.1f",a/b)+"="+(int)b); } }
2.整型转化为字符型
3.字符转化为整型(ASCCI码和数字)
4.字符串与字符数组的相互转化
String str="Eliauk_Duobling"; // 将字符串转化为字符数组 char[] arr1=str.toCharArray(); System.out.println(Arrays.toString(arr1)); // 将字符数组转化为字符数串,转化为部分字符()左闭右开 System.out.println(new String(arr1)); System.out.println(new String(arr1,0,3)); // 字符串转化为字节数组 byte[] arr2=str.getBytes(); System.out.println(Arrays.toString(arr2)); // 字节数组转化为字符串 System.out.println(new String(arr2));
5.不同进制的数字进行转换
// 十进制转化为二进制 String a=Integer.toBinaryString(7); // 十进制转化为八进制 String c=Integer.toOctalString(9); // 十进制转化为16进制 String d=Integer.toHexString(18);
6.字符串数字(不同进制)转化为数字(十进制)
String str="1111"; // parseInt默认情况是转化为十进制为十进制的数 int number=Integer.parseInt(str); System.out.println(number); // radix表示的是数字字符串当前代表的进制,下面的str当前的进制为2进制 int number1=Integer.parseInt(str,2); String a=Integer.valueOf(str,2).toString(); System.out.println(number1); // 转化为double类型 double number2=Double.parseDouble(str);
使用parseInt要注意带点:
str为空串、空,如:parseInt("")
str中包括空格,如:parseInt("23 ")
10进制时,s中包括字符串,如:parseInt(“a32”)
str不以-、+、数字开头、或包含字符串
str超出int允许的范围**[-2147483648,2147483647]**
其他转换基数radix时,超出表示范围