Java顺序结构之基本数据类型转换
文章目录
- 基本数据类型转换
- 自动类型转换
- 强制类型转换
- String、StringBuffer、Stringbuilder
基本数据类型转换
在 Java 开发之中,经常会涉及到不同类型数据之间进行相互转换。那 Java 之间又是如何转换数据类型的呢?
Java 中数据类型的转换有两种:
自动转换;
强制转换。
首先我们得需要知道 Java 基本数据类型之间的范围大小。
Java 中整型和浮点型按照范围从小到大:
byte -> short -> int -> long -> float -> double
字符型转换为整型:
char -> int
自动类型转换
自动类型转换 (也叫隐式类型转换) ,其实就是小范围的数据类型向大范围的数据类型转换,你可以想象一下,把一杯水往一个容积大的空桶中倒进,水不会流出来。
注意:自动类型转换的前提条件,必须是把数据类型范围小的数值或变量赋给数据类型范围大的变量。
例子:
int d = 100;
// 当一个 int 类型和一个 long 型相加时,类型会自动转换为 long
long c = 12500000;
long l = c + d;
自动转换也要小心数据溢出问题,看下面的例子。
int d = 1;
int c = 2147483647;
// c+d 本质上依然是 int 型,这里将结果转化为 long
long l = c + d;
System.out.print(l);
执行结果:
-2147483648
结果却输出的是负数,这是因为两个 int 相加得到的结果是 int,相加的结果超出了 int 的代表范围。这种情况,一般把第一个数据转换成范围大的数据类型再和其他的数据进行运算。
int d = 1;
int c = 2147483647;
long e = c;
long l = e + d;
System.out.print(l);
执行结果:
2147483648
我们在之前的实训中了解到了当两个整型做 / 运算时,/ 实际上是求整,那如果我们想要求出准确的结果,我们该怎么做呢?
我们可以将整型转化为浮点型,例如:
int d = 5;
int c = 2;
double e = d; // 将变量d类型转换为double
System.out.print(e/c);
也可以简写为:
int d = 5;
int c = 2;
System.out.print((double)d/c);
执行结果为:
2.5
当范围小的数据与范围大的数据进行运算时,类型会自动转换为范围大的那个类型。所有的 byte 类型、short 类型、char 类型在运算时将被提升到 int 类型。
注意:char 类型比较特殊,char 自动转换成 int、long、float 和 double,但 byte 和 short 不能自动转换为 char,而且 char 也不能自动转换为 byte 或 short。
强制类型转换
强制类型转换 (也叫显式类型转换) ,其实就是大范围的数据类型向小范围的数据类型转换,它需要加强制转换符来实现强制转换。
例子:
double a = 2.31;
int b = (int)a;
System.out.print(b);
执行结果:
2
在强制类型转换中,如果是将浮点类型的值转换为整数,直接去掉小数点后边的所有数字;而如果是整数类型强制转换为浮点类型时,将在小数点后面补零。
强制转换需要注意两点:
把一个浮点数强制转换为整数时,Java 会直接截断浮点数的小数部分,造成数据丢失;
把一个超出数据范围的数值赋给数据类型时,会出现数据溢出的情况,造成数据的缺失。例如:int 类型的 a 的值为 249,将其强转为 byte 类型时结果会变为 -7,数据溢出。
String、StringBuffer、Stringbuilder
(1)字符修改上的区别
(2)初始化上的区别,String可以空赋值,后者不行,报错
①String
String s = null;
String s = “abc”;
②StringBuffer
StringBuffer s = null; //结果警告:Null pointer access: The variable result can only be null at this location
StringBuffer s = new StringBuffer();//StringBuffer对象是一个空的对象
StringBuffer s = new StringBuffer(“abc”);//创建带有内容的StringBuffer对象,对象的内容就是字符串”
小结:(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
Java顺序结构之基本数据类型转换相关推荐
- 练习- Java顺序结构综合练习三之金融投资收益计算
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 任务:编写程序,读入投资额.年利率和投资年限,利用下面公式计算投资的未来价值: 未来价值=投资额×(1+月利率)12∗年数 . ...
- 练习- Java顺序结构综合练习二之温度换算
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 任务: 编写一个程序,依次将摄氏温度为 1°.2°.3°.4°.5° 转化为对应的华氏温度,将该值四舍五入保留两位小数后格式化 ...
- 练习-Java顺序结构综合练习一之银行复利计息收益计算
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 任务: 假定一个用户初始时向一个储蓄帐户中存了 1000 元人民币,年利率为 2.25%.那么月利率为 0.0225/12=0 ...
- java顺序结构类型,Java类的完整构造执行顺序
这里只说一个完整的结果,至于为什么是这样的顺序,可以参考我以前的文章:深入剖析java类的构造方式 如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 如果类有静态成员赋值或者静态 ...
- Java顺序结构之数学函数
数学函数 下面我们来介绍几个 Math 类中常用的方法. Math 类 Java 的 Math 包含了用于执行基本数学运算的属性和方法,如平方.对数.平方根和三角函数等.下表为 Math 类的一些常用 ...
- 小白自学笔记——JAVA基础 2.3基本数据类型转换
基本数据类型之间的运算规则 1.自动类型转换:当容量小的数据类型的变量与大容量的数据类型的变量做运算时,结果自动提升为容量大的数据类型. (说明:容量大小指表示数的范围的大小) - byte,shor ...
- Java顺序结构综合练习一之银行复利计息收益计算
/*** 任务:假定一个用户每月向一个储蓄帐户中存 1000 元人民币,年利率为 2.25%.那么月利率为 0.0225/12=0.001875.* 编写一个程序,输出 6 个月后的账户金额.* 类名 ...
- java 类型转换顺序_Java类型转换,顺序结构及条件结构,循环结构
一.Java类型转换 转换类型: 1.自动类型转换:把小的放到大的里面 2.强制类型转换:把大的放到小的里面 3.把字符串类型转换成其他数据类型(使用对应包装类的parsexxx()方法) 同类型转换 ...
- Java程序流程控制(顺序结构、分支结构、循环结构、if-else、switch-case、for、while、do-while、break、continue、return)
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即: 顺序结构 ...
最新文章
- 中流程图快速制作_GitMind教程 | 业务流程图怎么做?
- 在欲而无欲,居尘不染尘
- figma下载_切换到Figma并在其中工作不必是火箭科学,这就是为什么
- python学习实例(2)
- 李开复:听AI大佬吐槽真实的人工智能
- yii2 HeadersAlreadySentException 报错 解决方案
- linux ppp拨号 USB,linux下ppp拨号上网
- 从孙子算经到中国剩余定理
- cefsharp设置cookie_CefSharp 设置cookie
- 轻松搞明白:软切换和硬切换的区别
- 黑苹果教程(二)自己制作cdr、dmg镜像
- Microsoft Excel 教程:如何在 Excel 中筛选区域或表中的数据?
- 联友科技软件测试,联友科技
- 安装NTFS For Mac时显示文件已损坏怎么办
- 电脑PHP动画制作画板,html5教程制作简单画板代码分享
- python自动生成word报表之使用win32com插入自带可编辑的图表
- 使用moviepy.editor剪辑视频,批量截取视频片段
- 用VML标记语言画图、动画制作
- 数字城市:智慧水库(泉舟时代)
- 2015国电设风力摆练手
热门文章
- UE快速切换系统语言(简体中文<->英文)
- RabbitMQ的服务端和客户端RabbitMQ-c的简单使用。
- 千锋教育2218期2022.11.07
- 产业与金融如何融合创新?百度智能云阐述产融一体化解决方案
- springBoot+poi+aspose实现根据word模板生成文件并转换pdf
- 20佳优秀精美手机移动mobile网站案例设计欣赏
- 调制自动识别c语言实现,一种基于PC机的肺癌细胞自动识别分类系统
- 车牌识别技术衍生出停车计费系统
- linux教程redhat,RedHat Linux操作系统菜鸟成长必看
- 光电器件市场发展现状分析表