• 由于Java是强类型语言,所以有时候在进行运算时,需要用到类型转换

  • 整型、常量、字符类型数据可以混合运算。

  • 运算中,不同类型的数据先转化为同一类型,然后再进行运算。

  • 类型转换等级有低级到高级的划分,主要根据数据类型的内存容量 来划分,容量越大等级越高,并且浮点型比整型优先级高

  • 当低等级数据类型向高等级数据类型进行类型转换时,会进行自动类型转换

  • 当高等级数据类型向低等级数据类型进行类型转换时,必须进行强制类型转换

类型转换等级:

  1. /* 低级 ------------------------------------------> 高级 */
  2. /* byte -> short,char -> int -> long -> float -> double */

类型转规则:

  1. 不能对boolean类型进行类型转换。
  2. 不能把对象类型转换成不相关类的对象。
  3. 在把高等级的类型转换为低等级的类型时必须使用强制类型转换。
  4. byte类型到char类型、short类型与char类型之间不能进行自动类型转换。

一、自动类型转换

  • 数值范围小的基本数据类型,可以自动类型转换为数值范围大的基本数据类型。

注意:

  1. byte类型向char类型转换时,不能进行自动类型转换。
  2. short类型和char类型相互之间转换,不能进行自动类型转换。
  3. char类型向更高等级类型转换时,可以进行自动类型转换。

示例:

  1. byte byteNumber = (byte)1;
  2. short shortNumber = byteNumber;
  3. char charNumber = (char) shortNumber;
  4. int intNumber = charNumber;
  5. long longNumber = intNumber;
  6. float floatNumber = longNumber;
  7. double doubleNumber = floatNumber;
  8. System.out.println(doubleNumber);//1.0

二、强制类型转换

  • 用于显式地转换一个数值的类型,转换的数据类型必须是兼容的。

语法:'(' + type + ')' + value

示例:(byte)128

效果:

  1. System.out.println((byte)128);//-128

注意:强制类型转换过程中可能导致溢出损失精度,例如:

  1. /* 因为byte类型内存容量是8位,最大值为127,所以当int类型的值128强制转换为byte类型时,就会导致溢出 */
  2. System.out.println((byte) 128);//-128
  3. /* 浮点数到整数的转换是通过舍弃小数得到的,而不是四舍五入,所以会损失精度 */
  4. System.out.println((int) 99.9);//99
  5. System.out.println((int) -99.99f);//-99

Java基础语法:类型转换的更多相关文章

  1. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  2. 019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例

    019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例 本文知识点:Java中的数据类型转换案例 学习视频有误,导致没法写文,文章内容 ...

  3. 018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念

    018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念 本文知识点:Java中的数据类型转换 类型转换 类型转换分类 2类,分别是: ...

  4. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  5. Java基础语法(上篇)

                     Java基础语法(上篇) 知识概要: (1)关键字的表示与规范       (2)标示符              (3)注释                (4 ...

  6. java基础语法(一)

    java基础语法(一) 1.类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成 对象(Object).对象又叫做实例(Instance). 2.类由两大部分构成:属性 ...

  7. Java基础语法入门01

    Java基础语法入门01 学习java你要先进行去了解JDK,JRE,JVM JDK Java开发工具包 JRE Java语言开发的运行环境 JVM Java虚拟机,用于Java语言的跨平台所用. 当 ...

  8. Java匹马行天下之JavaSE核心技术——Java基础语法

    Java基础语法 一.   认识Java 1. Java 简介 java 是一种高级的面向对象的程序设计语言,使用Java语言编写的程序时跨平台的.从pc到手机,都有Java开发的程序和游戏,Java ...

  9. JavaSE入门学习7:Java基础语法之语句(下)

    继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...

  10. 第2天 Java基础语法

    第2天 Java基础语法 今日内容介绍 变量 运算符 变量 变量概述 前面我们已经学习了常量,接下来我们要学习变量.在Java中变量的应用比常量的应用要多很多.所以变量也是尤为重要的知识点! 什么是变 ...

随机推荐

  1. 洛谷 P2880 [USACO07JAN]Balanced Lineup G (ST表模板)

    题意:给你一组数,询问\(q\)次,问所给区间内的最大值和最小值的差. 题解:经典RMQ问题,用st表维护两个数组分别记录最大值和最小值然后直接查询输出就好了 代码: int n,q; int a[N ...

  2. Codeforces Round #666 (Div. 2) C. Multiples of Length (构造,贪心)

    题意:有一个长度为\(n\)的序列,可以操作\(3\)次,每次选取一段区间,然后区间的元素加减区间长度的倍数,\(3\)次操作后使得序列所有元素为\(0\),问具体操作情况. 题解:假如我们能选择一整 ...

  3. Codeforces Round #653 (Div. 3) D. Zero Remainder Array (数学,模拟)

    题意:有一组数,刚开始时\(x=0\),每次可以让\(x\)++或让某一个元素+=\(x\)后\(x\)++,每个元素只能加一次\(x\),问最少操作多少次使得所有元素能被\(k\)整除. 题解:每个 ...

  4. C++实现邻接表

    对于无向图(V0,V1),(V1,V2),(V2,V3),(V0,V2)对应的邻接表表示就是 在代码中,你要单独对V1.V2.V3创建一种结构体类型.在对后面的节点0,1,2,3创建一种结构体类型 代 ...

  5. 【应急响应】Windows应急响应入门手册

    0x01 应急响应概述   首先我们来了解一下两个概念:应急响应和安全建设,这两者的区别就是应急响应是被动响应.安全建设是主动防御.  所谓有因才有果,既然是被动的,那么我们在应急响应的时候就得先了解 ...

  6. 或许你知道Python的shell,那jshell呢?

    Java 10以后,java官方推出了类似python的shell操作的jshell,你的指令可以及时反馈,对于新手学习而言非常有用.如果你和我一样刚学Java,建议你使用高版本,和我一起开始使用js ...

  7. jdk8下的接口和抽象类

    接口 在java8中,接口可以定义变量和方法,其中变量必须为 public && static && final: 方法必须为public && (ab ...

  8. 自动化将 word 转为 pdf,再将pdf转为图片!

    参考: https://blog.csdn.net/ynyn2013/article/details/49120731 https://www.jianshu.com/p/f57cc64b9f5e 一 ...

  9. K8S(16)集成实战-使用spinnaker进行自动化部署

    K8s集成实战-使用spinnaker进行自动化部署 1 spinnaker概述和选型 1.1 概述 1.1.1 主要功能 Spinnaker是一个开源的多云持续交付平台,提供快速.可靠.稳定的软件变 ...

  10. Leetcode(1)-两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target ...