4.数据类型、运算符

本文详细介绍了Java编程中的基本数据类型(包括整数、浮点、字符和布尔)、数据类型转换、运算符(如赋值、算数、关系、逻辑和位运算),以及运算符的优先级,帮助读者理解Java中的基础概念和运算规则。
摘要由CSDN通过智能技术生成

目录


Java专栏目录(点击进入…)



基本数据类型

1.整数类型(4)

数据类型字节位数范围
Byte1字节8位-128~127
Short2字节16位-32768~32767
Int4字节32位-2147483648~2147483647
Long8字节64位
8 bit(位)	=	1 byte(字节)
1024 byte	=	1 kb
1024 kb	=	1 mb
1024 mb	=	1 gb
1024 gb	=	1 t

注意:在UTF-8中汉字占3个字节

Long属于比int高级的数据类型,所以在赋值的时候要在整数后面加上L或l
Long love = 123456L;


2.浮点类型(2)

若想使用float型小数,则需要在小数后面添加F或f
Double类型可以在后面添加D或d,明确数据类型(可以不加)

数据类型字节位数范围
Float4字节32位1.4E~3.4028235E38
Double8字节64位4.9E-324~1.7976931348623157E308

3.字符类型(1)

不同编码产生的字节大小不同

数据类型字节位数范围
Char2字节16位65536个字符(单引号)

转义字符
一种特殊的字符变量,以反斜杠“\”开头,后跟一个或多个字符

转义字符赋值给字符变量时,一样要使用单引号

字符描述
\ddd1~3位八进制数据所表示的字符,如\456
\uxxxx4位十六进制所表示的字符,如\u0052
\’单引号字符
\”双引号字符
\反斜杠字符
\t垂直制表符,将光标移到下一个制表符的位置
\r回车
\n换行
\b退格
\f换页

4.布尔类型(1)

Boolean 1字节 值:ture/flase 二进制:00000001

数据类型转换

不同的类型占用的内存空间不同


隐式转换(自动转换)

byte < short < int < long < float < double
在这里插入图片描述


显式转换(强制转换)

语法:(类型名)要转换的值
例:int a = (int) 45.25;

显示转换导致精度损失

float f = (float) 3.1415923;     // 数据失准
int i = (int) f;                // 小数点丢失
byte b = (byte) 129;          // 数值越界溢出

数据类型的默认值

数据类型默认值说明
byte、short、int、long0整型零
float、double0.0浮点零
char‘’空格字符
booleanfalse逻辑假
引用类型Stringnull空值

运算符

赋值运算符

(=)


算数运算符

+(加) -(减) *(乘) /(除) %(取余) 自增(++) 自减(–)
自增、自减:前置会先将自身先增或减,后置会先参与表达式运算


关系运算符

==(等于) <(小于) >(大于) <=(小于等于) >=(大于等于) !=(不等于)


逻辑运算符

&&(与) ||(或) !(非)


位运算符

操作类型是整型,可以是有符号的也可以是无符号的,位运算符的两大类型:位逻辑运算符和位移运算符

运算符描述
&(与)a&b
|(或)a|b
~(取反)~a
^(异或)a^b
<<(左位移)a<<2
>>(右位移)b>>4
>>>(无符号位移)x>>>2

位逻辑运算符

&、|、^、~ :前三个是双目运算符、后一个是单目运算符
在这里插入图片描述


(1)位与运算符:&

参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位同时为 1,那么计算结果才为 1,否则为 0。因此,任何数与 0 进行按位与运算,其结果都为 0,最左边的符号位也是要参与运算的


(2)位或运算符:|

参与运算的数字,低位对齐,高位不足的补零。如果对应的二进制位只要有一个为 1,那么结果就为 1;如果对应的二进制位都为 0,结果才为 0


(3)位异或运算符:^

参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位相同(同时为 0 或同时为 1)时,结果为 0;如果对应的二进制位不相同,结果则为 1


(4)位取反运算符:~

只对一个操作数进行运算,将操作数二进制中的1改为0,0改为1


运算结果
在这里插入图片描述
在这里插入图片描述
总结:以(0、1和false、true)
&(与):有0则为0,有false则为false
|(或):有1则为1,有true则为true
~(取反):0取1,false取true
^(异或):需要运算


位移运算符

(1)左移运算符:<<

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零

根据左移运算符可以推导出:
左移运算有乘以2的N次方的效果。一个数向左移动1位,就相当于乘以2的1次方,移动两位就相当于乘以2的2次方,也就是乘以4


(2)带符号右移运算符:>>

符号位不变,按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补零


(3)无符号右移运算符:>>>

无符号右移在二进制串移动之后,空位由0来补充,与符号位是0还是1毫无关系;注意:这里的无符号是忽略符号位,也参与移位


在这里插入图片描述

在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同
<<运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零
语法格式:需要移位的数字 << 移位的次数

num << 2:左移运算符。相当于num除以2*2
num >> 1:右移运算符。相当于num乘以2
>>>:无符号右移,忽略符号位,空位都以0补齐

在Java语言中,为了保证移动位数的有效性,以使右移位数不超过32位,采用了取余的操作,即a >>n 等价于 a >> (n%32)

左移<<:该数对应的二进制码整体左移,左边超出的部分舍弃,右边补零(低位补0)

253的二进制码1111 1101,在经过运算253<<2后得到1111 0100

“有符号”右移>>:该数对应的二进制码整体右移,左边的用原有标志位补充,右边超出的部分舍弃。如果值为正,则在高位补0,如果值为负,则在高位补1

无符号右移>>>:不管正负标志位为0还是1,将该数的二进制码整体右移,左边部分总是以0填充,右边部分舍弃。采用0扩展机制,也就是说,无论值的正负,都在高位补0


复合赋值运算符

在这里插入图片描述


三元运算符

**语法:**返回值 = 判断公式 ? 结果1 : 结果2
判断公式:一个返回布尔值的公式

int a = 1;
int b = a<3?2:3      结果:b=2

结果1:如果公式返回的是true,运算符结算返回结果1
结果2:如果公式返回的是false,运算符结算返回的结果2


圆括号

提升计算公式的优先级(和数学中的用法一致)、提升公式的可阅读性

int a =2,b=3;
a*b+5   先计算乘法;后计算加法          结果:11
a*(a+5)  先计算括号内,后计算括号外      结果:16

运算符优先级

优先级描述运算符
1括号()
2自增,自减,逻辑非,正负号,取反++,–,!,±,~
3乘,除,取余*,/,%
4加,减+,-
5左位移,右位移,无符号位移<<,>>,>>>
6大于,小于等于,大于,大于等于,判断继承关系<,<=,>,>=,instanceof
7等于,不等于==,!=
8&
9异或^
10|
11并且&&
12或者||
13赋值=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=,>>>=
  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未禾

您的支持是我最宝贵的财富!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值