1字符串转数字
String s = "123";
byte b = Byte.parseByte(s);
short t = Short.parseShort(s);
int i = Integer.parseInt(s);
long l = Long.parseLong(s);
Float f = Float.parseFloat(s);
Double d = Double.parseDouble(s);
boolean bo = Boolean.parseBoolean(s);
char c = Character.parseCharacter(s);
2数字转字符串
int i = 7;
// 其中 value 为任意一种基本数据类型。
String s = String.valueOf(value);
特别注意:null不能调用方法,而""可以调用方法
String str2 = i + "";//第二种Integer it = i;
String str3 = it.toString();//第三种
3进制转换
// 十进制转成十六进制:
Integer.toHexString(int i);// 十进制转成八进制
Integer.toOctalString(int i);
//十进制转成二进制
Integer.toBinaryString(int i);
//十六进制转成十进制Integer.valueOf("FFFF",16).toString();
//八进制转成十进制
Integer.valueOf("876",8).toString();
//二进制转十进制
Integer.valueOf("0101",2).toString();
4一步到位进制转换(前提是数据类型转换得完成)
java.lang.Integer类
parseInt(String s, int radix)使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
examples
先将数字转字符串
parseInt("0", 10) returns 0parseInt("473", 10) returns 473
parseInt("+42", 10) returns 42
parseInt("-0", 10) returns 0
parseInt("-FF", 16) returns -255
5测试
package w3day4;
/**
* @Title
* @Author Eastlin
* @Description:
*/
public class MyTest {
public static void main(String[] args) {
int[] nums=new int[]{-11,12,13,14};
int[] bases=new int[]{2,8,10,16};
//进制转换有两种选择-----直接转换和间接转换
//二、八、十、十六进制转十进制
for (int i = 0; i <4 ; i++) {
String str=String.valueOf(nums[i]);
System.out.print(Integer.parseInt(str, bases[i])+"\t\t");
}
System.out.println();
//十六进制转成十进制
System.out.println(Integer.valueOf("FFFF",16).toString());
System.out.println("--------------------------------------------------------------------------");
// 十进制转成十六进制:
System.out.println(Integer.toHexString(15));
// 十进制转成八进制
System.out.println(Integer.toOctalString(15));
//十进制转成二进制
System.out.println( Integer.toBinaryString(15));
}
}

6 float,double精度丢失原因
精度丢失原因是为什么? 因为我们要看到的是十进制浮点数,而确定的基本数据类型的二进制位数有限无法表示出能力之外的数据。
1/3为什么是无理数?因为这个是相对十进制而言,但是它相对3进制而言是0.1它不是无理数。 同理有些数据对十进制是有理数,但对二进制可能就是无理数,所以就丢失精度了。
因为计算机是以二进制存储,表示却是以十进制。以十进制传入,打印输出可能就出现丢失精度;反之概率更小。因为位数有限。
package w3day4;
/**
@Title
@Author Eastlin
@Description:
screentogif 可以搞动态图片
*/ //double会丢失精度的原因,有的有理数,在计算机二进制表示下就成了无理数
//应该是太长了,可能还是有理数;IEEE754会对1舍入,0直接舍去
public class DoubleTest { public static void main(String[] args) { double i=1/3.0; System.out.println(i);
double a=0.0;
for(int j=1;j<=9;j++) {
a += 0.1;
System.out.print(a+"\t\t");
}
System.out.println();
double b=0.1*9;
System.out.println(a==b);
}
}
//IEEE754标准 //32位,符(1)+"移码"(8)+尾数(23) //符号0正1负
//移码=127+真值 //尾数=真值-1,尾数省略小数点前一位的1