基本数据类型定义转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本数据类型定义转换相关的知识,希望对你有一定的参考价值。

Java四大基本数据类型:

整型、浮点(小数)型、布尔类型、字符类型

 


 

  • 整型:

byte、short、int、long

  • 数据大小范围:

     byte  1个字节  8位(bits)

byte     1个字节  -128~127

short    2个字节  -32768~32767

int   4个字节  -2147483648~2147483647

long   8个字节  -9223372036854775808到9223372036854775807

  • 由来:

计算机是以二进制进行运作的  加减乘除在计算机内都是按照加法运算或者位移运算,如1-1在计算机内就是1+(-1)

生活日常是以十进制表示的

1 byte = 8 bits 最高位是符号位

符号位0代表正数 1代表负数 符号位不做计算 

技术分享

0,111,1111 = 20+21+22+23+24+25+26=27-1=127  20=1   21=2  任何数的0次方都等于1;任何数的1次方都等于它本身;

计算机系统中,数值一律用补码表示和存储,程序也是由补码方式运行,

正数0,111,1111  反码  0,111,1111 补码 0,111,1111    127   正数的原码、反码、补码就是其本身;

负数1,000,0000  反码 1,111,1111 补码 1,1000,0000  -128  负数的反码除符号位以外取绝对值,补码在反码的基础上加(模)1 ;

所以负数能多表示一个数   即 -128~127 

-1~-128   128个数字  1~127  127个数字  0 1个占位

128 + 127 = 255  最后加上一个0占位  即256   表示的最大信息量就是28

  • short以此类推如:

short占2个字节 即16位 最高位符号位不做计算即15位 215  215表示负数最大值  215-1表示正数最大值

负数最大表示范围 -(2(bits-1))     正数最大表示范围 2(bits-1)-1

int、long同理

 


 

  • 浮点型:

单精度  float    4个字节  有效数字8位   表示范围:-3.40E+38 ~ +3.40E+38    单精度处理比双精度快

双精度  double   8个字节   有效数字16位  表示范围:-1.79E+308 ~ +1.79E+308   双精度处理比单精度慢

3.40E+38即 3.40*1038,E是指数英文exponent缩写

 


 

  • 定义变量:

     float hello;   这就是定义了一个变量,表示一个float类型的浮点数,变量名是hello

  • 初始化变量:

int intro = 45;    在定义变量的时候就给值,这就是初始化变量intro

  • 给变量赋值:

先定义了变量long lon,然后再给值lon=2L,这就是给变量赋值

 


 

  • 基本数据类型转换:

基本数据类型精度由低到高排序  byte<short<int<long<float<double

int a = 1.2 //不能被编译 非法操作 高精度不能自动转换成低精度
double a = 3;//低精度可以自动转换为高精度
float a = 3.4;
/*不能被编译,在java中浮点数默认是double类型,违背了高精度不能自动转换低精度的原则*/
float a = 3.4f; //显式声明浮点数为float类型
  • 强制转换:

 高精度不能隐式转换为低精度,但可以显式强转低精度类型

int a = (int)1.6;//输出:1
  • 计算过程中转换:
int a = 3;int b = a + 3.1f+0.9;
/*当一个类型和另一个类型做运算时,运算结果会向高精度转换
   接收的类型精度低于了赋值类型精度,那么将报错*/

 


 

  • 布尔类型:

布尔类型可以表示  真(true)或假(false)  类型是boolean

 


 

  •  字符类型:

字符类型可以表示      单个字符       字符类型是char   

多个字符组成称为字符串 在java中String类型不是基本数据类型   而是类   类是复合类型

一个char类型只能存放1个字符 char是2个字节 可以存放2个字节的1个字符

int test = ‘a‘+‘b‘;//会调用字符所对应的ASCII码数值 进行运算 结果:195
char test = ‘a‘ + ‘b‘;//超出范围找不到对应ASCII码

/*1.会调用ASCII码对应的数值进行运算,再转换成其对应的字符
   2. javac在进行运算操作时直接把char当作一个整数运行
*/
char test1 = ‘a‘-60;//输出:%
int zhong = ‘中‘; //中文是Unicode码而非ASCII码 结果:20013

 


以上是关于基本数据类型定义转换的主要内容,如果未能解决你的问题,请参考以下文章

java定义8个基本数据类型,将数据转换成字符串,并在此将字符串转换为基本数据类型

javascript常用数据类型及数据转换

2018-07-14Java基础+基本数据类型+自动/强制数据类型转换+定义变量+运算符

golang数据类型和各类型转换注意细节图文+代码

java--基本数据类型的转换(自动转换)

Python 自动将dict-list嵌套数据 转换成 带类型定义的对象