Java基础之(十)基本类型的类型转换
2016-07-22 22:27
555 查看
1.自动类型转换
如果系统支持把某种基本数据类型的值直接赋给另一种基本数据类型的变量,则这种方式被称为自动类型转换。当把一个表数范围小的数值或变量直接赋给另一个表数范围大的变量时,系统将可以进行自动类型转换。就如同有两瓶水,当把小瓶里的水倒给大瓶里的水时不会有任何问题。public class AutoTest { public static void main(String[] args) { int a = 6; //int类型可以自动转换为float类型 float f = a; System.out.println(f); byte b = 9; //下面代码将出错,byte类型不能自动转换为char类型 //char c = b; double d = b; System.out.println(d); } }
输出结果: 6.0 9.0
不仅如此,当把任何基本类型的值和字符串值进行连接运算时,基本类型的值将自动转换为字符串类型,虽然字符串类型不是基本类型,而是引用类型。因此如果希望把基本类型的值转换为对应的字符串时,可以把基本类型的值和一个空字符串进行连接。看下面这个例子:
public class PrimeAndString { public static void main(String[] args) { //下面代码是错误的,因为5是一个整数,不能直接赋值给一个字符串 String str1 = 5; String str2 = 3.5f + ""; //下面输出3.5 System.out.println(str2); //下面输出7Hello! System.out.println(3+4+"Hello!"); //下面输出Hello!34,因为Hello!+3会把3当成字符串处理,而后再把4当成字符串处理 System.out.println("Hello!" + 3 + 4); } }
上面程序中有一个“3+4 + Hello!”表达式,这个表达式先执行“3+4”运算,这是执行两个整数之间的运算,得到结果7,然后执行“7+“Hello!””运算,此时会把7当成字符串处理,从而得到7Hello!。反之对于“Hello!”+3运算,得到一个Hello!3字符串,再和4进行连接运算,4也被转换为字符串进行处理。
2.强制类型转换
语法格式:(targetType)value;例子如下:
public class NarrowValue { public static void main(String[] args) { int i = 23; //强制把一个int类型转换为byte类型的值 byte b = (byte)i; //输出23 System.out.println(b); double d = 3.33; //强制把一个double类型转换为int类型的值 int j = (int)d; //输出3 System.out.println(j); } }
通常情况下,字符串不能直接转换为基本数据类型,但通过基本数据类型的包装类则可以实现把字符串转换为基本数据类型。例如把字符串转换为int类型:
{ public static void main(String[] args) { String a = "45"; //使用Integer方法将一个字符串转换为int类型 int i = Integer.parseInt(a); //输出45 System.out.println(i); } }
java为8种基本数据类型都提供了对应的包装类:
boolean—>Boolean;
byte —>Byte;
short —>Short;
int —>Integer;
long —>Long;
char —>Character;
float —>Float;
double —>Double;
包装类都提供了一个parseXxx(String str)静态方法来将字符串转换为基本类型。
相关文章推荐
- JAVA 面向对象 隐藏和封装
- Java多线程——sychronized
- Java相关环境变量配置总结
- SpringMVC工作原理解读--DispatcherServlet类源码解读(初级)
- JAVA 中 Arrays.sort 中的排序的方法
- JAVA常用的类库
- java学习之路-基础语法-运算符
- Struts1知识点、注意事项总结
- 基数排序简单Java实现
- springMVC和Shiro框架整合使用简单示例
- Java ConcurrentModificationException异常原因和解决方法
- linphone-LinphoneCoreFactory.java文件分析
- Java编程思想学习笔记_4(异常机制,容器)
- java非阻塞笔记一
- JAVA面向对象-----this的概述
- JAVA面向对象-----this的概述
- 《Java源码分析》:LinkedHashSet
- spring对配置属性的读取方式configure way
- Eclipse生成项目javadoc说明文档
- Caused by: java.sql.BatchUpdateException: ORA-01438: 值大于为此列指定的允许精度如何解决