数据类型的精度由低到高为:byte < short < char < int < long < float < double

低精度的类型与高精度的类型在进行运算时,低会自动转换为高,而如果非要把结果转为低精度的类型,需要进行强制转换。(犹如小杯里的水倒入大杯子里,可以;但是大杯里的水想要倒入小杯里可能会溢出,那高精度的同理可能会出现精度丢失。)

(1)byte、short、char型参与运算时,低于int型都会自动转换为int型(使用“+=”运算符除外),然后对int型的值进行计算,得到的结果也为int型。这些类型的变量与高于int类型(如:long、float、double)的变量一起运算时,会自动转换为高精度的类型。其中char类型的数据会转换为对应的ASCII码。

举个不常规,但掌握语法的例子:

byte b1=1;
long b2=3;
float b3=b1+b2;//此时b3=4.0 首先b1+b2的结果为long型,赋值给b3时自动转换为float型

byte型示例:

1.

byte b1=1,b2=2;
int b=b1+b2; //如果把两个byte型的值相加,得到的结果是int型

2.

byte b1=1,b2=2;
b1=(byte)(b1+b2); //如果要得到byte型的结果,需强转为byte型[注意转换的是结果,不要忘记给b1+b2加括号]

3.

short a=128;   // a=128
byte b=(byte)a; // b=-128

short类型占2个字节,a对应的二进制为:00000000 10000000,由于byte占1个字节,在强制转换为byte时只能存下低字节部分:10000000,10000000是-128的补码,所以b为-128。

short型示例:

1.

short s1=1,s2=2;
s1=s1+s2; //编译错误,如果把两个short型的值相加,得到的结果是int型

改正:

short s1=1,s2=2;
s1=(short)(s1+s2); //如果要得到short型的结果,需强转为short型

3.

short s1=1;
s1=s1+1; //编译错误,s1会转换为int型,结果也为int型,而s1定义类型为short型

改正:

short s1=1;
s1=(short)(s1+1);

例外情况:

“+=”运算符,不会产生类型的转换,Java编译器会对其进行特殊处理。

short s1=1;
s1+=1; //能够编译通过

char型示例:

char c1='a',c2='b';
int c=c1+c2; //得到的结果是int型
c1=(char)(c1+c2); //得到的结果是int型,如果想得c1为字符,需要char强制转换

(2)boolean类型不与其它类型转换,其值只有true和false,注意不像C语言可以为0或非0代表真或假。

示例:

int i=1;
if(i)
System.out.println("true");
else
System.out.println("false");

编译错误,if条件只能是boolean类型的值(true或false),而 i 的类型为 int。

(3)整型字面值默认为int型,若用long型定义,需要在字面值末尾加l或L。

如:long l=5543876532345678653L;   或  long l=5543876532345678653l;

浮点型字面值默认为double型,若用float型定义,需进行类型转换。

float型变量初始化这三种形式均可:1.float f=1.0f; 2.float f=1.0F;  3.float f=(float)1.0;


Java基础笔记(五)——数据类型转换的更多相关文章

  1. Java基础练习1(数据类型转换)

    1.下列代码的输出结果是:()(单选) public static void main(String[] args){ double money = 3.0; money -= 2.9; System ...

  2. Java从零开始学五(数据类型转换)

    一.数据类型转换 分为“自动类型转换”和“强制类型转换” 二.自动类型转换 低级别------>高级别 byte b=7; int i=b; System.out.println("i ...

  3. Java实习生常规技术面试题每日十题Java基础(五)

    目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...

  4. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  5. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  6. Java 读书笔记 (五) 目标数据类型转换

    数据类型转换必须满足如下规则: 不能对boolean类型进行类型转换 不能把对象类型转换成不相关类的对象  //那不同类的对象可以用同一个名字命名吗?根据作用域原则,可以吧? 把容量大的转换为容量小的 ...

  7. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  8. Java基础笔记05-06-07-08

    五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...

  9. Java基础笔记(1)----语言基础

    变量 变量:是内存中的一块存储空间,是存储数据的基本单元. 使用:先声明,后赋值,在使用. 声明:数据类型 + 变量名 = 值.(例:int a = 5:) 数据类型 分类:如图: 详解: Strin ...

  10. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

随机推荐

  1. <关于J2EE环境的搭建>在Fedora21下的Tomcat,Mysql,jdk以及Intellij的搭建过程

    题外话:一开始很不情愿写这种没有技术含量的博文,但是网上对于fedora21下的整个J2EE环境的搭建过程的文章实在是少之又少,那我就破个例吧:-p (一)JDK的下载及环境变量的设置 如果你对JDK ...

  2. 9.1 NOIP普及组试题精解(1)

    9-1 series1.c #include <stdio.h> int main() { float s=0.0,k; int n; printf("输入数字k(1~15):& ...

  3. struct tm 和 time_t 时间和日期的使用方法(转

    关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) .概念 在C/C++中,对字符串的操作有很多值得注意的问题,同样,C ...

  4. OpenCv-Python 图像处理基本操作

    1. 图片加载.显示和保存 import cv2 img = cv2.imread("01.jpg") imgGrey = cv2.imread("01.jpg" ...

  5. Stop logging "internal dummy connection" in Apache

    Apache 2.x keeps child processes alive by creating internal connections which appear in the log file ...

  6. 「P4996」「洛谷11月月赛」 咕咕咕(数论

    题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...

  7. Trie 树内存消耗问题

    大家都知道,Trie树(又称字典树)是一种树型数据结构,用于保存大量的字符串.它的优点是:利用字符串的公共前缀来节约存储空间. 相对来说,Trie树是一种比较简单的数据结构,比较易于理解.话说上帝是公 ...

  8. wxPython学习资料

    [译]wxPython布局管理简介 https://www.pystack.org/wxpython_sizer/ 设计器.代码分离 http://book.douban.com/review/578 ...

  9. 904E

    $dp$ 凉凉.jpg 看到题就想决策单调性,想了一个多小时也没想出来,排名$200+$,$gg$ 事实上,我们只可能每$c$个或每一个分一段,假设我们分了一段长为$c$,如果添加一个新元素,如果新的 ...

  10. wireshark里无网络接口解决办法

    管理员模式下开启npf服务,该服务能捕获网络接口,net start npf