Java语言描述--实现基本数值类型与String之间的类型转换及求解实际问题

Java语言描述--实现基本数值类型与String之间的类型转换及求解实际问题,第1张

文章目录
    • java之间的类型转换问题并解决实际问题
    • 数值类型byte,int,short,float,long,double之间的类型转换
    • char与int,float,double等之间的类型转换
    • String与int,float,double等之间的类型转换
    • 编写一个实验程序,在字符串s中存放一个采用科学技术法正确表示的数值串,将其转化为对应实数。例如,s="1.354e-2",转换的结果是0.01345
    • 日期对象(类类型)与Sting之间的类型转换

java之间的类型转换问题并解决实际问题 数值类型byte,int,short,float,long,double之间的类型转换

向上类型转换为自动转换。如某个运算需要将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与int,float,double等之间的类型转换

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与int,float,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型。

日期对象(类类型)与Sting之间的类型转换

String format(Date date)
将Date格式化为日期/时间字符串。

Date parse(String source)
将String字符串解析为一个日期。

具体应用在我的一期博客中已做详细说明,

博客链接:点击进入

若觉得内容稍可,请留下你们的



欢迎评论区下方留言讨论!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/794296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存