java类型转换面试题_JavaSE:数据类型之间的转换(附常见面试题)
数据类型之间的转换
分为以下几种情况:
1)低级到高级的自动类型转换;
2)高级到低级的强制类型转换(会导致溢出或丢失精度);
3)基本类型向类类型转换;
4)基本类型向字符串的转换;
5)类类型向字符串转换
基本数据类型之间的转换规则
1.在一个双操作数以及位运算等算术运算式中,会根据操作数的类型将低级的数据类型自动转换为高级的数据类型,分为以下几种情况:
1)只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;
2)只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;
3)只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;
4)两个操作数(包括byte、short、int、char)都将会被转换成int类型,并且结果也是int类型。
2. 如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,再做其它类型的自动转换。
3. 对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。 如:
short i=99 ;
char c=(char)i;
System.out.println("output:"+c);
4. 不能在布尔值和任何数字类型间强制类型转换;
5. 不同级别数据类型间的强制转换,可能会导致溢出或精度的下降。
6. 当字节类型变量参与运算,java作自动数据运算类型的提升,将其转换为int类型。例如:
byte b;
b=3;
b=(byte)(b*3);//必须声明byte。
包装数据类型与基本数据类型之间的转换
简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。
有了基本类型之后为什么还要有包装器类型呢?我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。
另外当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的包装器类了
1.字符串与其它类型间的转换
⑴其它类型向字符串的转换
①调用类的串转换方法:X.toString();
②自动转换:X+“”;
③使用String的方法:String.volueOf(X);
⑵字符串作为值,向其它类型的转换
①先转换成相应的封装器实例,再调用对应的方法转换成其它类型
例如,字符中“32.1”转换double型的值的格式为:new Float(“32.1”).doubleValue()。也可以用:Double.valueOf(“32.1”).doubleValue()
②静态parseXXX方法
String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );
③Character的getNumericValue(char ch)方法
具体可查阅api。
转换实例
1)基本类型向类类型转换
正向转换:通过类包装器来new出一个新的类类型的变量
Integer a= new Integer(2);
反向转换:通过类包装器来转换
int b=a.intValue();
通过类包装器——>基本数据类型
int i=Integer.parseInt(“123”)
说明:此方法只能适用于字符串转化成整型变量
float f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
boolean b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
double d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
long l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
2)基本类型向字符串的转换
正向转换:
如下:
System.out.println(""+2+3);// “""”把2转成字符串操作;
System.out.println(2+3); // 不存在转换。
System.out.println(2+3+"");// 前两个数值相加后,被“""”转成字符串。
System.out.println(2+""+3);// 同第一个。
输出显示为:23,5,5,23
3)类类型向字符串转换
正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量
int i=Integer.valueOf(“123”).intValue()
说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。
float f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
boolean b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
double d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
long l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
常见面试题
1、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错?
答:对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表达式的类型为int,那么将int赋予给short类型的变量s1会出现类型转换错误。
对于short s1=1;s1+=1来说 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
2、char类型变量能不能储存一个中文的汉子,为什么?
char类型变量是用来储存Unicode编码的字符的,unicode字符集包含了汉字,所以char类型当然可以存储汉字的,还有一种特殊情况就是某个生僻字没有包含在
unicode编码字符集中,那么就char类型就不能存储该生僻字。
3、Integer和int的区别
int是java的8种内置的原始数据类型。Java为每个原始类型都提供了一个封装类,Integer就是int的封装类,int变量的默认值为0,Integer变量的默认值为null
Integer类内提供了一些关于整数操作的一些方法,例如上文用到的表示整数的最大值和最小值。
4、switch语句能否作用在byte上,能否作用在long上,能否作用在string上?
byte的存储范围小于int,可以向int类型进行隐式转换,所以switch可以作用在byte上
long的存储范围大于int,不能向int进行隐式转换,只能强制转换,所以switch不可以作用在long上
switch()变量类型只能是int、short、char、byte和enum类型
case后面只能是常量,可以是运算表达式,但一定要符合正确的类型。不能是变量,即便变量在之前进行了赋值,JVM依然会报错。
string在1.7版本之前不可以,1.7版本之后switch就可以作用在string上了。
不可变对象指对象一旦被创建,状态就不能再改变。任何修改都会创建一个新的对象,如String、Integer及其它包装类。
indexOf():查找一个字符串中,第一次出现指定字符串的位置。
valueOf() 方法用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等。
该方法是静态方法。该方法可以接收两个参数一个是字符串,一个是基数,用于类型转换。
java类型转换面试题_JavaSE:数据类型之间的转换(附常见面试题)相关推荐
- 面试题(2020)微信小程序常见面试题
面试题(2020)微信小程序常见面试题 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 1.微信的小程序的主要文件 WXML-- ...
- C++对象实现原理(附常见面试题)
C++对象实现原理(附常见面试题) 内存排布 最简单的类 带有非虚函数的类 带有虚函数的类 继承和成员对象 多重继承 虚继承 对象的构造 构造函数的隐藏工作 初始化列表 对象的析构 常见面试题 结语 ...
- 【java】字符串和基本数据类型之间的转换
字符串和基本数据类型之间的转换:程序的功能是比较两个数的大小 代码清单如下: package p1; import javax.swing.JOptionPane;public class Java_ ...
- 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(二)
21.在Java中,如何跳出当前的多重嵌套循环? 答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环.(Java中支持带标签的break和continue语句,作用有点类似于C和 ...
- 【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)
[前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 -- [下载]个人结合诸多资料 ...
- java ee笔试题_【JAVA秒会技术之秒杀面试官】JavaEE常见面试题(六)
[前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 -- [下载]个人结合诸多资料,总 ...
- 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(四)
[前言]别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得游手好闲,和你一样会抱怨,而只有你自己相信这些都是真的,最后,也只有你一个人继续不思进取 -- [下载]本人刚学习Jav ...
- Java进阶之深入理解对象与垃圾回收机制常见面试题
内存泄漏和内存溢出辨析 内存溢出:实实在在的内存空间不足导致: 内存泄漏:该释放的对象没有释放,多见于自己使用容器保存元素的情况下. 常量池与String 常量池 常量池有很多说法,包括运行时常量池. ...
- Java 面试题大集合,2019最新最常见面试题加答案
原文地址:https://blog.csdn.net/zl1zl2zl3/article/details/88048480 又到一年跳槽季,课下不准备,面试徒伤悲. 本文汇总了常见面试题及面试技巧,让 ...
最新文章
- ubuntu下如何安装两个版本OpenCV?
- 莆田版GPT-3开源:同等复现预训练模型GPT Neo
- php 图片处理类,分享php多功能图片处理类
- 崔强:如果有知识就做一个内裤外穿飞行的超人
- hdu4847:Wow! Such Doge!(字符串匹配)
- 延展公司与兰石重装签订战略合作协议
- pr如何处理音效_学视频剪辑 PR通关教学课程 教程
- python获取控制台输出_Python | 用Python获取Windows控制台输出
- centos 宝塔面板 mongodb 设置用户账号密码登录
- 号称“完全自主研发”的木兰编程语言开发者道歉后,中科院的回应来了!
- Python将txt文件变为excel文件
- Day02 目录和文件的管理(ADMIN02)
- 如何打开后缀为.xps的文件?
- 辰信领创携手天津麒麟全力保障国产操作系统安全
- 扫描探针显微术入门(3)
- 最新版cleanmymac4.11.3专业的Mac清理软件
- 管培生走下神坛,“高管捷径”破灭
- Android直播软件搭建左滑右滑清屏控件
- 某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件: 1)A和B两人中至少去一人; 2)A和D不能一起去; 3)A、E和F三人中要派两人去; 4)B和
- 阿里巴巴Canal原理剖析