首页 > 编程语言 >Java基础——基本数据类型转换

Java基础——基本数据类型转换

时间:2023-09-09 13:01:07浏览次数:47  
标签:类型转换 基本 Java 字节 int double float byte


基本数据类型转换

基本数据类型

数据类型

所占字节

取值范围

boolean

未定

false与true

byte

1个字节

-2^7~2^7-1

char

2个字节

0~2^16-1

short

2个字节

-2^15~2^15-1

int

4个字节

-2^31~2^31-1

long

8个字节

-2^63~2^63-1

float

4个字节

-2^128~+2^128

double

8个字节

-2^1024~+2^1024

方法调用规则

从低位类型到高位类型自动转换;从高位类型到低位类型需要强制类型转换:

  1. 布尔型和其它基本数据类型之间不能相互转换; 
  2. byte型可以转换为short、int、long、float和double; 
  3. short可转换为int、long、float和double; 
  4. char可转换为int、long、float和double; 
  5. int可转换为long、float和double; 
  6. long可转换为float和double; 
  7. float可转换为double;

Java基础——基本数据类型转换_强制类型转换

Java基础——基本数据类型转换_类型转换_02编辑

隐式类型转换

隐式转换也叫作自动类型转换, 由系统自动完成.

从存储范围小的类型到存储范围大的类型.

byte ->short(char)->int->long->float->double

Java基础——基本数据类型转换_强制类型转换_03

在整数型转换浮点型时可能会出现精度丢失

显式类型转换

显示类型转换也叫作强制类型转换, 是从存储范围大的类型到存储范围小的类型.

当我们需要将数值范围较大的数值类型赋给数值范围较小的数值类型变量时,由于此时可能会丢失精度,因此,需要人为进行转换。我们称之为强制类型转换。

double→float→long→int→short(char)→byte

Java基础——基本数据类型转换_强制类型转换_04

int a=128;
		byte b=(byte)a;
		System.out.println(b);

Java基础——基本数据类型转换_补码_05

结果为-128。

为什么结果是-128?需要从最根本的二进制存储考虑。

  • java采用补码存储整数,int型为32位,128的二进制表示为:00000000 00000000 00000000 10000000,
  • byte型只有8位,于是从高位开始舍弃,截断后剩下:10000000,
  • 补码表示的时候第一位是符号位,0正1负,
  • 所以可以知道10000000肯定是一个负数了,再来看它的数值部分,
  • 因为正数127的原码是:0111 1111,则-127的原码是1111 1111
  • (将对应的整数的符号位改为1即得到该负数的原码)
  • -127的反码是:1000 0000
  • (将对应的原码除符号位(最高位)外,其余为全部取反(0变1,1变0))
  • -127的补码是:1000 0001
  • (将对应反码,在末尾加1,即得到补码)
  • -128的补码是:1000 0000
  • (-127在减去1等于-128)

进行运算时的转换

进行数学运算时的数据类型自动提升与可能需要的强制类型转换。

当进行数学运算时,数据类型会自动发生提升到运算符左右之较大者,以此类推。当将最后的运算结果赋值给指定的数值类型时,可能需要进行强制类型转换。例如:

int a=1;
        byte b=0;
        byte c=(byte)(a+b);

Java基础——基本数据类型转换_类型转换_06

a+b会自动提升为int, 因此在给c赋值的时候要强制转换成byte.


标签:类型转换,基本,Java,字节,int,double,float,byte
From: https://blog.51cto.com/u_16252300/7419021

相关文章

  • 无涯教程-JavaScript - IMSECH函数
    描述IMSECH函数以x+yi或x+yj文本格式返回复数的双曲正割。复数的双曲正割被定义为双曲余弦的倒数,即六(z)=1/cosh(z)语法IMSECH(inumber)争论Argument描述Required/OptionalInumberAcomplexnumberforwhichyouwantthehyperbolicsecant.RequiredNotes......
  • java下载文件代码
    privatevoiddownload2(HttpServletResponseresponse,StringzipFilePath,Stringfilename)throwsIOException{//设置响应的内容类型为ZIP文件response.setContentType("application/zip");response.setHeader("Content-Disposition&q......
  • Java注解支持的类型
    我们经常会自定义注解,自定义注解时,可能会需要定义各种数据类型,但是自定义注解可以包含哪些数据类型,是存在限制的。主要有如下几种:Aprimitivetype:基本类型(java的八种基本类型:byte、short、int、long、float、double、char、boolean)String:字符串Class:Class......
  • 程序设计语言基本方式
                ......
  • 针对JavaScript混淆加密,JShaman推出新功能
    JShaman英文版在最新的一次更新时,增加了新功能:JavaScript代码混淆加密完成后,可以显示各功能耗时、处理的AST节点数量,以此可知对代码做了哪些保护处理。如上图所示,在此例中,对代码共进行了23项混淆加密,JSON数据加密8350处、字符串加密189669处、15222次平展控制流、30722处变量名修改......
  • 无涯教程-JavaScript - IMSEC函数
    描述IMSEC函数以x+yi或x+yj文本格式返回复数的割线。复数的割线定义为余弦的倒数。即正割(z)=1/余弦(z)语法IMSEC(inumber)争论Argument描述Required/OptionalInumberAcomplexnumberforwhichyouwantthesecant.RequiredNotesExcel中的复数仅存储......
  • javaDos生成API文档
    JavaDos生成文档/**@authorchenxiao作者@version1.0版本号@since1.0自然号*//***@authorchenxiao*@version1.0*@since1.0*/publicclassStudent{  privateStringname;  privateIntegerage;​  /**  *@authorchenxiao ......
  • LeetCode297:hard级别中最简单的存在,java版,用时击败98%,内存击败百分之九十九
    本篇概览因为欣宸个人水平有限,在刷题时一直不敢面对hard级别的题目,生怕出现一杯茶一包烟,一道hard做一天的窘境这种恐惧心理一直在,直到遇见了它:LeetCode297,建议不敢做hard题的新手们速来围观,拿它练手,轻松找到自信题目简介二叉树的序列化与反序列化序列化是将一个数据......
  • 无涯教程-JavaScript - IMPOWER函数
    描述IMPOWER函数以x+yi或x+yj文本格式返回加到幂的复数。求幂的复数的计算方法如下-$$(x+yi)^n=r^ne^{n\theta}=r^n\cosn\theta+ir^nsinn\theta$$哪里-$$r=\sqrt{x^2+y^2}\:\:和\:\:\theta=\tan^{-1}\left(\frac{y}{x}\right......
  • JavaScript-Number对象
    概述Number对象是数值对应的包装对象,可以作为构造函数使用,也可以作为工具函数使用。作为构造函数时,它用于生成值为数值的对象。varn=newNumber(1);typeofn//"object"上面代码中,Number对象作为构造函数使用,返回一个值为1的对象。作为工具函数时,它可以将任何类型的值转为数值......