- java之间的类型转换问题并解决实际问题
- 数值类型byte,int,short,float,long,double之间的类型转换
- char与int,float,double等之间的类型转换
- String与int,float,double等之间的类型转换
- 编写一个实验程序,在字符串s中存放一个采用科学技术法正确表示的数值串,将其转化为对应实数。例如,s="1.354e-2",转换的结果是0.01345
- 日期对象(类类型)与Sting之间的类型转换
向上类型转换为自动转换。如某个运算需要将byte变为int,在运算过程中,byte会自动向上转型为int,而不用考虑精度丢失问题。 向下类型转换为强制类型转换。如某个运算需要将int强制类型转变为byte,转换时可能会缺失精度问题,因为int型数值可能超出byte所属的数值范围,也即是溢出问题。当发生溢出时,默认取强制类型转换的类型的最大位/字节数。
简单了解一下其数值在存储区间内的存储方式,用整数的补码进行值的存储。
一个正数的补码是此数的二进制形式。
一个负数的补码与正数不同。该负数求补码的方式是先将该负数取绝对值,再将该绝对值写成二进制的形式,然后按位取反,最后再向取反后的二进制加一。第一位为1即代表该数为负数,为0则为正数。同样二进制求负数时需从后往前进行推导求值。
强制类型转换的格式为:
目标类型 变量名 = (目标类型)值;
具体代码及运行结果为:
package com.code;
public class script12 {
public static void main(String[] args) {
byte z = 123;
int x= 971;
System.out.println((int)z);
System.out.println((byte)x);
}
}
这里971超过了byte的最大容量,byte默认去int的前8位二进制数,然后通过上述二进制求数值进行值的推导。这里不进行详解。
char强制类型转换时会自动向ASCII码表中寻找char字符对应的ASCII值,从而进行赋值。 同样int,float,double等数值转化为char类型时,在ASCII码表中找到ASCII码值对应的字符,从而进行赋值。
强制类型转换的格式为:
目标类型 变量名 = (目标类型)值;
相关代码及运行结果为:
package com.code;
public class script12 {
public static void main(String[] args) {
char a = 'a';
int b = 97;
float f = 97.0f;
System.out.println((int)a);
System.out.println((char)b);
System.out.println((char)f);
}
}
这里只要注意float类型在数值后必须加上f,要不然会报错,因为实数类型的默认类型为double。
这里一般为string字符串转化为数值类型,对于数值类型转化为string字符串没有这种需求。
通过各基本数值类型对应包装类,使用各包装类对应的parse()方法达到String字符串转化为数值类型,格式为:
目标类型 变量名 = 目标类型对应的包装类.parse目标类型(String s);
parse目标类型中的目标类型首字母需大写。代码中可观察。
同时要求String字符串中必须为数值,其他字符识别不了会报错。
当字符串存在其他符号时,可使用String[] split(String regex)方法根据给定的正则表达式拆分此字符串成为一个字符串数组。
正则表达式(Regular Expression)的含义:
正则表达式,又称规则表达式。在代码中常简写为regex、regexp、RE,是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式是对字符串 *** 作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
看题理解:
编写一个实验程序,在字符串s中存放一个采用科学技术法正确表示的数值串,将其转化为对应实数。例如,s=“1.354e-2”,转换的结果是0.01345相关代码及结果为:
package com.other;
public class TransFormDouble {
public static void main(String[] args) {
String s = "1.345e-2";
String[] t = s.split("e"); //正则表达式分割e字符将其转为一个字符串数组
for (String temp:t) {
System.out.println(temp+"\t");
}//遍历查看字符串数组
System.out.println(Double.parseDouble(t[0])*Math.pow(10,Integer.parseInt(t[1])));
}
}
分割和遍历在注释中已提到,输出这里我直接一步到位了,原理是将字符串数组的第一个元素使用Double中的parseDouble()方法将其强制转化为double类型数值,再调用Math类中的pow(double x,double y)方法求次方。其中,使用了Integer中的parseInt()方法强制将字符串数组第二个元素转化成int型。
String format(Date date)
将Date格式化为日期/时间字符串。
Date parse(String source)
将String字符串解析为一个日期。
具体应用在我的一期博客中已做详细说明,
博客链接:点击进入
若觉得内容稍可,请留下你们的
欢迎评论区下方留言讨论!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)