学习相同的内容每次看都有新的发现,本文主要介绍java 中的转换,但是好多的方法在不同的语言中是通用的
不知道大家有没有深入的学习过Java 的源码,或看看Java的 API 帮助手册
先解决问题,double类型的数字如何转换为 String类型
三种方式:第一种用的比较多
//第一种方式通过ToString() 方法, Double 就是一个包装类
String s1 = Double.toString(dou1);
//第二种方式是通过valueof() 方法, 本质上还是调用 toString() 方法
String s2 = String.valueOf(dou1);
//第三种没有借助包装类
String s3 =""+dou1;
运行代码:获取 类型的的方法是自己写的不是Java源码中自带的
所有代码:
package com.obge.contr;
public class ChangeNtoS {
public static void main(String[] args) {
//定义一个变量并赋值,,变量和常量:一个可以变化,一个不能变换,使用final定义的就不能变换
double dou1 = 3.222;
int i1= 22;
float f1= 2.1f;
byte b1 =1;
long l1 =1;
short st1 =22;
// 将double 类型转换为String 类型 知道 包装类和 基本数据类型,Java 5 增加了自动装箱、拆箱机制,
//第一种方式通过ToString() 方法, Double 就是一个包装类
String s1 = Double.toString(dou1);
String sf1 = Float.toString(f1);
String si1 = Integer.toString(i1);
String sb1 = Byte.toString(b1);
String sl1 = Long.toString(l1);
String sst1 = Short.toString(st1);
//第二种方式是通过valueof() 方法, 本质上还是调用 toString() 方法
String s2 = String.valueOf(dou1);
//第三种没有借助包装类
String s3 =""+dou1;
System.out.println("转换前:");
System.out.println(dou1+"的类型是:"+getType(dou1));
System.out.println("转换后:");
System.out.println(s1+"的类型是:"+getType(s1));
System.out.println(s2+"的类型是:"+getType(s2));
System.out.println(s3+"的类型是:"+getType(s3));
System.out.println(i1+"转换前的类型是:"+getType(i1)+"转换后的类型是:"+getType(si1));
}
//获取变量类型方法
public static String getType(Object o){
//调用该方法返回变量类型 getClass()方法
return o.getClass().toString();
}
}
2、观看源码,看看调用的事什么方法
按住ctrl 键 点击toString 进入方法中,可以直接点击去
declaration 宣告说明 implementation 实现
可以看到,toString 是Double 类的方法,他是一个静态方法,更深处的代码就需要引用jdk 的源码了先了解了解
点击 valueof 中可以看出 这个是String类的方法,本质上还是调用 Double 类的 toString 方法
Integer 的toString 方法略有不同,进行了判断
byte 借助integer
可以自己试试 :
float 和double 差不多 ,long和int 差不多,byte 和short 类型差不多借助integer
这个图挺好
来源:oschina
链接:https://my.oschina.net/u/4339825/blog/3318950