string-java里,double类型可以直接转换为String的机制有什么

问题描述

java里,double类型可以直接转换为String的机制有什么
package string;

public class Example1 {

public static void main(String[] args) {    String str;         double n = 18;    double m = 2;    str = n + ""+"" + m;    System.out.println(str);}

}
在上述代码中,str是怎么把m和n转换为String的?

解决方案

String的加法有重载,遇到别的类型,会调用toString。没那么复杂。

解决方案二:
public static void main(String[] args) {
String str = """";

         double n = 18;         double m = 2;        //第一种方法,使用toString()不能直接m.toString(),会报错,        //可以把m 强转为Double后,再使用toString()         System.out.println(((Double)m).toString()+“”+((Double)n).toString());        //第二种方法是使用 String.valueOf(m),把m直接转为String,         //推荐这个方式。         str = String.valueOf(n) +""""+ String.valueOf(m);            System.out.println(str);}
 本人已测试通过!!!

解决方案三:
首先double是基本数据类型,是没有什么toString方法的,代码中的类型转换并没有调用任何方法,出现此种结果是由字符串的特性和编译器的优化决定的。可以反编译对应的class文件,发现在程序执行之前str的值就已经固定了,为18+2。因为mnstr会被编译器解释成final类型的,所以程序执行前值就知道了,此种计算编译器完全可以完成,虚拟机不必浪费资源进行计算。

解决方案四:
上面的回答中编译后的文件内容有误,抱歉。现更正如下:
首先double是基本数据类型,是没有什么toString方法的,出现此种结果是由字符串的特性决定的。在Java中字符串支持“+”运算符,该运算符对字符串的运行结果是将所有的内容以字面值的形式拼接起来,所以会出现18.0+2.0的结果。18.0和2.0是编译器处理后的n与m的值。
看一下反编译的内容:

红色圈起来的地方说明在代码中调用了StringBuilder类的append()方法和toString()方法。
对于原先的错误回答,请各位见谅。

解决方案五:
和编译器有关!本人猜测,首先编译器new n m两个double对象,然后new str时将double转为string,然后编译器处理为stringbuilder连接

解决方案六:
java 所有数据都是类对象
double 有 tosting 方法
所以 每个内部类型 都可以自动转换成字符串只要需要
哪怕是常数也可以

解决方案七:
java 所有数据都是类对象
double 有 tosting 方法
所以 每个内部类型 都可以自动转换成字符串只要需要
哪怕是常数也可以

解决方案八:
我觉得是先将double类型自动装箱为Double类型,然后调用Double类型的toString方法。

解决方案九:
tostring方法

解决方案十:
java 所有数据都是类对象
double 有 tosting 方法
所以 每个内部类型 都可以自动转换成字符串只要需要
哪怕是常数也可以

时间: 2022-12-14

string-java里,double类型可以直接转换为String的机制有什么的相关文章

Java的double类型探索.

一.double类型的存储表示 Java的浮点类型表示完全按照IEEE754标准(Standards of IEEE 754 floating point numbers),有兴趣可以上IEEE标准网站(www.ieee.org)查阅.该标准的内容基本上描述了浮点类型的存储格式(Storage Layout),下面我从中总结几段,来概括该标准,详细信息请查阅标准原文. 1.什么是浮点数. 计算机上表达实数有两中方法:定点表示(fixed-point)和浮点表示(floating-point).定

误差-Java的double类型在运算时,结果有的时候不能精确显示。我知道是进制导致的。

问题描述 Java的double类型在运算时,结果有的时候不能精确显示.我知道是进制导致的. 下图讲解,我懂. 但是,在做题的时候............. 才发现,我也只能确定0.1不能被精确显示,具体该如何解这样的题呢? 其实我进一步思考了.我以为就看尾数是不是5.比如0.5.0.05.因为2的-x次方的尾数都是5.是5就能精确显示,不是就不能.但是后来发现.................计算误差"> 说明不能只靠最终结果来判断...............那该怎么判断啊? 问题补充

java中double类型运算结果异常的解决方法_java

问题: 对两个double类型的值进行运算,有时会出现结果值异常的问题.比如: System.out.println(19.99+20); System.out.println(1.0-0.66); System.out.println(0.033*100); System.out.println(12.3/100); 输出: 39.989999999999995 0.33999999999999997 3.3000000000000003 0.12300000000000001 解决方法: J

java中double类型的值如何实现科学计数法

问题描述 java中double类型的值如何实现科学计数法 java中,一个double类型的数值,如何在显示的时候是科学计数法 解决方案 它达到一定的值,就会显示成科学计数格式,当然你可以自己这个格式化方法任意转 解决方案二: 小数位数多了自动科学计数法表示的吧.

java 将byte中的有效长度转换为String的实例代码_java

 一般的我们使用byte接收读取到的数据,若数据没有达到byte定义的大小时,我们直接将byte转换为String则会出现乱码的情况,在这种情况下应该基于read的返回值来转换byte,否则将产生乱码的情况, 下面是一个简单的示例: package com.javaio.myinputstream; public class MyConsole { public static void main(String argv[]) throws Exception { System.out.print

java中Double类型的运算精度丢失的问题 (小数点多出99999999999999)

 在使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1. 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情. 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,经常会因为精度丢失而导致程序处理流程出错.  首先贴一个使用的代码: /** * 将double类型数据转为字符串(如将18.4转为1840,如果需要1840.0,把int强转去掉即可) * @par

c++-vector<string>类型如何转换成string

问题描述 vector<string>类型如何转换成string vector vstrrow; vstrrow[0]如何转换成string类型啊 求各位大神帮忙 解决方案 vector<string> vec;//定义个一个字符串容器 string str; str = "abc"; vec.push_back(str);//把字符串str压进容器 vec.push_back("def");//把字符串"def"压进容器

java-请教大神,再JAVA里 怎么把rgba转换成#类型呢??

问题描述 请教大神,再JAVA里 怎么把rgba转换成#类型呢?? 我现在得到的是一个 string 类型 rgba(102 0 255 0.506)怎么把这个转换成 # 这样的类型呢?我的意思是转换成 #33333 这样的? 解决方案 RGBA你有没有查过资料?最后的那个数值是alpha.是透明度.这个alpha和RGB本身是相互独立的.rgb(abc)对应的是(a<<16 | b<<8 | c)得到的表达式应该是:#ffffff 这样的,6个十六进制数表示的. 你写的#3333

class-现有Double类型的数据,如何转换为保留两位小数的数,返回值的类型仍然是Double类型的。

问题描述 现有Double类型的数据,如何转换为保留两位小数的数,返回值的类型仍然是Double类型的. 各位大虾,现有Double类型的数据,如何转换为保留两位小数的数,返回值的类型仍然是Double类型的,而不是字符串类型. 解决方案 double a=1.2345; a=int(a*100)/100.0; 解决方案二: 在java里面没有四舍五入,c,c++才有. java a=int(a*100+0.5)/100.0; 这种很快捷 C 直接输出system.out.printf("%2.