学习相同的内容每次看都有新的发现,本文主要介绍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
这个图挺好