数据类型的精度由低到高为: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. hdu 2015校赛1002 Dual horsetail (思维题 )

    Dual horsetail Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  2. Python爬虫 —— 抓取美女图片

    代码如下: #coding:utf-8 # import datetime import requests import os import sys from lxml import etree im ...

  3. 算法(Algorithms)第4版 练习 1.3.26

    方法实现: //1.3.26 /** * remove all of the nodes in the list that have key as its item field * * @param ...

  4. utf8_general_ci和utf8_unicode_ci的比较

    看到很多数据库的设计对于中文字符都是选择选用utf8_general_ci而非utf8_unicode_ci utf8_general_ci和utf8_unicode_ci的区别并不大:utf8_un ...

  5. CentOS7 网络管理工具nmcli

    今天帮别人调试虚拟机的网络问题(CentOS 7系统),习惯性直接改/etc/sysconfig/network-scripts/ifcfg-xxx配置文件,但是不知道为什么重启network后静态i ...

  6. 详解linux上定时函数 setitimer

    setitimer()为Linux的API,并非C语言的Standard Library,setitimer()有两个功能, 一是指定一段时间后,才执行某个function,二是每间格一段时间就执行某 ...

  7. Unity-2017.2官方实例教程Roll-a-ball(二)

    声明: 本文系转载,由于Unity版本不同,文中有一些小的改动,原文地址:http://www.jianshu.com/p/97b630a23234 上一节Unity-2017.2官方实例教程Roll ...

  8. Codeforces 755B. PolandBall and Game 贪心

    题目大意: 有两个人轮流说单词,已经说过的单词不能再说.给出两人掌握的不同的单词,两人可能掌握相同的单词,但是这个单词也只能说一边.问在两人都是最优策略下先手是否必胜. 题解: 我们发现最优策略一定是 ...

  9. 【Lintcode】018.Subsets II

    题目: Given a list of numbers that may has duplicate numbers, return all possible subsets Notice Each ...

  10. WPF TreeView 后台C#选中指定的Item, 需要遍历

               private TreeViewItem FindTreeViewItem(ItemsControl container, object item)         {      ...