上一篇文章我们着重介了java的各种基本数据类型的特点,这篇文章我们就来探讨引用数据类型以及各种数据类型的转化吧
目录
一、引用数据类型
如上图所示,引用数据结构类型包括数组、类、接口、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);
}
}
如上图所示,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);
}
}
注意:
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);
}
}
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);
}
}
我们可以看到a并没有如我们期望的那样被赋值为200,因为byte类型变量的存储范围为-128~128,200超过了byte的存储范围,因此造成了数据异常。同理,在float型变量x转化为int型变量y时,由于float的范围比int大,会导致原数据中的小数位丢失,影响最终结果。总结如下:
1、范围小的数据类型赋值给范围大的数据类型时,编译其会自动将小的数据类型提升为大的
2、浮点型数据赋值给整型数据时小数位会丢失,造成数值异常
3、同一类的数据类型中,存储范围大的类型赋值给存储范围小的数据时,可能会由于数值超过范围小的类型的存储范围而导致数据异常
因此,我们平时在进行强制类型转换时一定要考虑清楚是否会出现以上情况,在确保数据安全的情下再进行转换。
总结
那么本篇文章就到此为止了,如果觉得这篇文章对你有帮助的话,可以点一下关注和点赞来支持作者哦。作者还是一个萌新,如果有什么讲的不对的地方欢迎在评论区指出,希望能够和你们一起进步✊