Java基本数据类型和运算符总结

一、数据类型

Java中有八种基本数据类型

分类

数据类型

字节数二进制位数

范围

规律

整数类型

byte

1

-128~127

-27~27-1

short

16

-32768~32767-215~215-1
int32 -2147483648~2147483647-231~231-1
long64 -9223372036854775808 ~ 9223372036854775807-263~263-1

浮点类型

float32 

1.4E-45~3.4028235E38

 
double64 4.9E-324~1.7976931348623157E308 

字节类型

char16 0~65535 0~216-1

布尔类型

boolean

 

 

true或falsetrue或false

《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”

1.整数类型

    1.1取值范围理解

以byte类型为例,其最大取值为:27-1 

0

1

1

1

1

1

1

1

最小取值为:-27

理论上最小取值应为-27-1 ,但是由于0的原码为

0

0

0

0

0

0

0

0

所以为了不造成浪费,规定(-0)

1

0

0

0

0

0

0

0

代表-27

因此byte的取值范围为-27~27-1

    2.进制

常用的整数进制分为二进制、八进制、十进制、十六进制

//以下集中方式表示十进制50
//以0b或0B开头的是二进制
int a = ob01111110;
//以0开头的是八进制
int b = 062;
//十进制
int c = 50;
//0x或0X开头的是十六进制
int d = 0x32

以50为例,其换算方法为

 

    3.浮点数类型

Java的浮点数遵循IEEE 754标准,采用二进制数据的科学技术法来表示浮点数,Java中浮点数默认类型为double。

    float:第1位为符号位,接下来8位表示指数,最后23位表示尾数;

    double:第1位为符号位,接下来11位表示指数,最后52位表示尾数。

三个特殊的浮点数:正无穷大(Float/Double.POSITIVE_INFINITY)、负无穷大(Float/Double.NEGATIVE_INFINITY)、非数(Float/Double.NaN);所有正无穷大的数据都相等,所有负无穷大的数据都相等,非数不与任何数相等(包括自身)。

    4.字符类型

Java语言使用16位的Unicode字符集作为编码方式,支持所有语言。

字符型通常用于单个字符,用单引号「 ' 」括起来。字符型值也可以用十六进制编码来表示,范围是'\u0000~\uFFFF',一共可以表示65536(216-1)个字符,其中前256个字符和ASCII码中的字符完全吻合。

如果把0~65536的整数值赋予char类型的变量,系统自动会把int类型转换成char类型。

 

 char a = '\u4e2d';
 System.out.println(a);//输出字符'中'
char b = '国';
System.out.println((int)b);//输出22269
char c = 97;
System.out.println(c);//输出字符'a'

    5.数值中使用下划线分隔

Java7引入了下划线用以分隔数值,使之更易读懂。

 

int k = 0b0000_0000_0001_1110_0000_0000_1111_1110;
double m = 3.14_15_92_65;
int j = 100_000_000;

 

    6. 自动类型转换

 

    任何基本数据类型和字符串进行连接运算后会自动转换为字符串

    7.强制类型转换

如果需要将上图中箭头右边的数据类型转换为左边的数据类型,则必须要进行强制类型转换。格式如下:

                                (type)value

由于强制类型转换一般是将较长的数据类型转换成较短的数据类型,所以可能会造成位的溢出,从而造成数据转换错误。

 

 

 int a  =  345;
 byte b = (byte)a;
 System.out.println(b);//输出为89

    

                                                                                   int类型的345(101011001)

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

0

1

1

0

0

1

                                                                                  转换为btye类型后成为89(1011001)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

1

1

0

0

1

    如图所示超过byte的长度部分被截断,所以造成转换后的数据不正确。

在一个算数表达式中如果包括多种数据类型,则会其结果的数据类型会被提升。

  • byte、short、char 会被提升至int
  • 多中数据类型会被提升至最高等级的数据类型
  • 如果与字符串进行拼接则会被转换成字符串

二、运算符

    Java中运算符分为:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、类型相关运算符。

1.算术运算符

    常用的有七种基本运算符

    1.1四则运算符

    加法: ;减法: - ;乘法: * ;除法: / ;取余: % ;其中整数之间的除法会对结果进行自然截断(9/2=4)

    1.2 赋值运算符

    赋值运算符: =  将赋值号右边的值装入左边的变量中

    1.3位运算符

    通常情况下,位运算符只用于操作整数类型的变量(操作的是补码

    &:按位与。两位同时为1时返回结果1
    |:按位或。单目运算符,两位其中一位为1时返回结果为1
    :按位非。将操作数除符号位以外逐位取反
    ^:按位异或。两位相同时返回0,不同时返回1
    <<:左移运算符(移位后,在最右侧用0补位)
    >>:右移运算符(移位后,在最左侧以原符号位补位)
    >>>:无符号右移运算符(移位后,在最左侧以0补位)

以上运算符可以与赋值运算符搭配使用(如:+=、|=、%=、<<=)

    1.4比较运算符

    >:大于

    >=:大于等于

    <:小于

    <=:小于等于

    ==:等于

    !=:不等于

对于等于(==)运算符,如果操作数为数值类型,即使数据类型不同,只要两者的值相同,则返回true(如:97=='a'、5.0==5);如果操作数为引用类型,则必须当两个变量指向同一个对象时才能返回true。

    1.5逻辑运算符

    &&:与,两个操作数都为true才返回true,当第一个操作数为false时直接返回false,不用判断第二个操作数,即会短路

    &:与,不会短路

    ||:或,两个操作数其中一个为true时返回true,当第一个操作数为true时直接返回true,不用判断第二个操作数,即会短路

    |:或,不会短路

    !:非

    ^:异或,两个操作数不同时返回true。

    1.6三目运算符

                                     条件 ? 满足返回结果 : 不满足返回结果

    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值