java的数据结构类型(2)

本文介绍了Java中的String类型变量,包括其特点、与其他整型变量的相互转化方法,以及数据类型间的强制转换注意事项。强调了转换时可能遇到的数据范围和精度问题。
摘要由CSDN通过智能技术生成

        上一篇文章我们着重介了java的各种基本数据类型的特点,这篇文章我们就来探讨引用数据类型以及各种数据类型的转化吧

a3a11e5412be485bbc79ec7d6ae344e9.png

目录

一、引用数据类型

String类型变量

1、String类型变量简介

2、String类型变量与整型变量的相互转化

二、数据类型转换

1、转换方法

2、强制类型转换的弊端

总结


 

一、引用数据类型

bde9cdf3bb8344fc84ca77f2053d1231.png

如上图所示,引用数据结构类型包括数组、类、接口、String等,本篇文章我们就主要来探讨String类型,其它的就放在之后的文章再去介绍吧

String类型变量

我们先来回忆一下在C语言中是否有专门的字符串变量?

答案是否定的

而java则专门弄出的字符串变量来存储字符串,它有什么特性和优点呢让我们接着往下看:

1、String类型变量简介

public class Text {
    public static void main(String[] args) {
        String str="hello";
        String str2="world";//ctrl+d快速复制这一行内容

        //+意为拼接
        String str3=str+str2;//helloworld
        System.out.println(str3);
    }
}

0181e00a165a48d89008291f3ae1d98d.png

如上图所示,String型变量不仅可以存储字符串,还可以直接通过“+”实现多个字符串的拼接,这在实际编程中能大大提高编程的效率

2、String类型变量与整型变量的相互转化

整型变量转化为String类型变量主要有两种方法:

1、直接让整型加上一个""

2、用String内置方法valueof实现转化

String类型变量转化为整型变量的方法:

用Integer内置方法parseInt实现转化

具体实现如下图:

public class Text {
    public static void main(String[] args) {
        //整型转字符串
        int num=10;
        //方法1
        String str4=num+"";
        //方法2
        String str5=String.valueOf(num);

        //字符串转整型
        String str6="123";
        int m=Integer.parseInt(str6);//str必须是一个合法的数字

        System.out.println(str4);
        System.out.println(str5);
        System.out.println(str6);

    }
}

7862416bb1ee4a409f9257f08c1acb2a.png

注意:

1、与Integer不同,String不是包装类型,是引用数据类型

2、包装类型指的是基本数据对应的类类型

二、数据类型转换

1、转换方法

        不止int型变量与String型变量可以相互转化,之前介绍的各种基本数据类型除了布尔型变量外均可相互转化,方法如下:

a数据类型 变量名1=(a数据类型)b数据类型变量名

public class Text {
    public static void main(String[] args) {
        //强制类型转换
        int a=10;
        long b=100L;
        a=(int)b;
        System.out.println(a);
    }
}

6d2155d21ff345e68c97bc84a16e44bf.png

2、强制类型转换的弊端

        强制类型转换确实很好用,但是我们要知道这样的强制类型转换并不是万能的,可能会造成数据损失,我们接着往下看:

public class Text {
    public static void main(String[] args) {
        //强制类型转换
        //缺点:你要为结果负责
        //     可能会有数据丢失
        byte a=10;//4
        int b=200;//8

        a=(byte)b;

        //b=a;//可以通过编译
        //a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为int类型,然后赋值
        //a=b;//编译报错,int的存储范围比byte范围大,会有数据异常,不安全

        float x=1.03f;
        int y=3;
        y=(int)x;

        System.out.println(a);
        System.out.println(y);
    }
}

dee2f71b51194a82b9c26cee7810e5e6.png

       我们可以看到a并没有如我们期望的那样被赋值为200,因为byte类型变量的存储范围为-128~128,200超过了byte的存储范围,因此造成了数据异常。同理,在float型变量x转化为int型变量y时,由于float的范围比int大,会导致原数据中的小数位丢失,影响最终结果。总结如下:

1、范围小的数据类型赋值给范围大的数据类型时,编译其会自动将小的数据类型提升为大的

2、浮点型数据赋值给整型数据时小数位会丢失,造成数值异常

3、同一类的数据类型中,存储范围大的类型赋值给存储范围小的数据时,可能会由于数值超过范围小的类型的存储范围而导致数据异常

因此,我们平时在进行强制类型转换时一定要考虑清楚是否会出现以上情况,在确保数据安全的情下再进行转换。

总结

那么本篇文章就到此为止了,如果觉得这篇文章对你有帮助的话,可以点一下关注和点赞来支持作者哦。作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊

4a8d1cb9d9b74844a0b0f3cbd363c688.png

 

 

 

 

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值