Java数据类型和运算符
Java数据类型和运算符
数据类型
在Java中变量的数据类型分为两种,即基本数据类型和引用数据类型。Java中所有的数据类型如下所示:
基本数据类型
- 数值型:分为整数类型byte(字节型),shot(短整型),int(整型),long(长整形)和浮点类型float(单精度浮点数),double(双精度浮点数)。
- 字符型:char
- 布尔型:boolean
整数类型所占存储空间大小以及取值范围如下表所示:
类型名 | 占用空间 | 取值范围 |
byte | 8位(1个字节) |
-2^7~2^7-1 |
short | 16位(2个字节) |
-2^15~2^15-1 |
int | 32位(4个字节) |
-2^31~2^31-1 |
long | 64位(8个字节) |
-2^63~2^63-1 |
两种浮点类型中,double型所表示的浮点数比float型更精确。两种浮点数所占存储空间大小以及取值范围如下表所示:
类型名 | 占用空间 | 取值范围 |
float | 32位(4个字 节) |
1.4E-45~3.4E+38,-1.4E-45~-3.4E+38 |
double | 64位(8个字节) |
4.9E-324~1.7E+308,-4.9E-324~-1.7E+308 |
在为变量赋值时,应注意以下几点:
- 为一个long类型的变量赋值时,在赋值的后面要加上小写字母l(或大写字母L),若赋值未超出int类型的取值范围则小写字母l(或大写字母L)可省略不写。
long num=2200000000L;//所赋值超出int类型的取值范围,后面必须加上字母L。 long num=198L;//所赋值未超出int类型的取值范围,后面可以加上字母L。 long num=198;//所赋值未超出int类型的取值范围,后面可以不加字母L。
- 在Java中,一个小数会被默认为double类型的值,因此在为一个float类型的变量赋值时,赋值后面一定要加上小写字母f(或大写字母F),而为double类型的变量赋值时,复制后面可加可不加小写字母d(或大写字母D)。
float f=123.4f;//为一个float类型变量赋值,赋值后面必须加上f double d=100.1;//为一个double类型变量赋值,赋值后面可以不加d double d=100.1d;//为一个double类型变量赋值,赋值后面可以加上d
- Java中每个char类型的字符变量都会占用2个字节,在给char类型的变量赋值时,需要用一对英文半角格式的单引号' '把字符括起来,如char c='a';,当然了,也可以将char类型的变量赋值为0~65535范围内的证书,计算机会自动将这些整数转化为所对应的字符,如char c=97;就相当于赋值字符a,即char c='a';
- 布尔类型变量用于存储布尔值,该类型的变量只有两个值,即true和false。
boolean flag=true; boolean flag=false;
引用数据类型
- 类:class
- 接口:interface
- 数组
- 枚举:enum
- 注解:annotation
(后续会详细介绍)
Java运算符
Java中运算符分为算数运算符,赋值运算符,比较运算符,逻辑运算符和位运算符。每种运算符及其用法如下表:
算数运算符
操作符 | 描述 | 例子 |
---|---|---|
+ |
加法 - 相加运算符两侧的值 |
A + B 等于 30 |
- |
减法 - 左操作数减去右操作数 |
A – B 等于 -10 |
* |
乘法 - 相乘操作符两侧的值 |
A * B等于200 |
/ |
除法 - 左操作数除以右操作数 |
B / A等于2 |
% |
取余 - 左操作数除以右操作数的余数 |
B%A等于0 |
++ |
自增: 操作数的值增加1 |
B++ 或 ++B 等于 21(区别详见下文) |
-- |
自减: 操作数的值减少1 |
B-- 或 --B 等于 19(区别详见下文) |
赋值运算符
操作符 | 描述 | 例子 |
---|---|---|
= |
简单的赋值运算符,将右操作数的值赋给左侧操作数 |
C = A + B将把A + B得到的值赋给C |
+ = |
加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 |
C + = A等价于C = C + A |
- = |
减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 |
C - = A等价于C = C - A |
* = |
乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 |
C * = A等价于C = C * A |
/ = |
除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 |
C / = A等价于C = C / A |
(%)= |
取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 |
C%= A等价于C = C%A |
<< = |
左移位赋值运算符 |
C << = 2等价于C = C << 2 |
>> = |
右移位赋值运算符 |
C >> = 2等价于C = C >> 2 |
&= |
按位与赋值运算符 |
C&= 2等价于C = C&2 |
^ = |
按位异或赋值操作符 |
C ^ = 2等价于C = C ^ 2 |
| = |
按位或赋值操作符 |
C | = 2等价于C = C | 2 |
比较运算符
运算符 | 描述 | 例子 |
---|---|---|
== |
检查如果两个操作数的值是否相等,如果相等则条件为真。 |
(A == B)为假。 |
!= |
检查如果两个操作数的值是否相等,如果值不相等则条件为真。 |
(A != B) 为真。 |
> |
检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 |
(A> B)为假。 |
< |
检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 |
(A <B)为真。 |
>= |
检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 |
(A> = B)为假。 |
<= |
检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 |
(A <= B)为真。 |
逻辑运算符
操作符 | 描述 | 例子 |
---|---|---|
&& |
称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 |
(A && B)为假。 |
| | |
称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 |
(A | | B)为真。 |
! |
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 |
!(A && B)为真。 |
位运算符
操作符 | 描述 | 例子 |
---|---|---|
& |
如果相对应位都是1,则结果为1,否则为0 |
(A&B),得到12,即0000 1100 |
| |
如果相对应位都是0,则结果为0,否则为1 |
(A | B)得到61,即 0011 1101 |
^ |
如果相对应位值相同,则结果为0,否则为1 |
(A ^ B)得到49,即 0011 0001 |
〜 |
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 |
(〜A)得到-61,即1100 0011 |
<< |
按位左移运算符。左操作数按位左移右操作数指定的位数。 |
A << 2得到240,即 1111 0000 |
>> |
按位右移运算符。左操作数按位右移右操作数指定的位数。 |
A >> 2得到15即 1111 |
>>> |
按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 |
A>>>2得到15即0000 1111 |
Java运算符的优先级
类别 | 操作符 | 关联性 |
---|---|---|
后缀 |
() [] . (点操作符) |
左到右 |
一元 |
+ + - !〜 |
从右到左 |
乘性 |
* /% |
左到右 |
加性 |
+ - |
左到右 |
移位 |
>> >>> << |
左到右 |
关系 |
>> = << = |
左到右 |
相等 |
== != |
左到右 |
按位与 |
& |
左到右 |
按位异或 |
^ |
左到右 |
按位或 |
| |
左到右 |
逻辑与 |
&& |
左到右 |
逻辑或 |
| | |
左到右 |
条件 |
?: |
从右到左 |
赋值 |
= + = - = * = / =%= >> = << =&= ^ = | = |
从右到左 |
逗号 |
, |
左到右 |