Java数据类型和运算符

时间:2024-01-18 17:51:26

一,数据类型分类(2种)

1. 基本数据类型(3种)

  • 数值型:

    • 整数类型(4种):

      1. byte(1字节):范围(-128~127);
      2. short(2字节):范围(-32768~32767);
      3. int(4字节);
      4. long(8字节):若数据定义为long类型超过int范围后面 需加“L”(推荐)或“l”(默认为int,超过int范围编译将会报错,未超过则不会);
    • 浮点类型(2种):

      1. float(4字节):第1位为符号位,接下来8位表示指数,再接下来23位表示尾数;若指定浮点类型为float需加“F”或“f”(默认为double,否则编译提示可能损失精度);
      2. double(8字节):第1位为符号位,接下来11位表示指数,再接下来52位表示尾数;
      3. 浮点数的形式: 
        • a.十进制数形式:必须包含一个小数点(1.68、168.0和 .168),否则当成int类型;
        • b.科学计数法形式:只有浮点类型数值才可以使用,如1.68e2(168.0)、1.68E2和168e2(16800.0);
      4. 特殊浮点数: 
        • a.正无穷大:正数除于0.0,用Double或Float的POSITIVE_INFINITY表示,所有的正无穷大都相等;
        • b.负无穷大:负数除于0.0,用Double或Float的NEGATIVE_INFINITY表示,所有的负无穷大都相等;
        • c.非数:0.0/0.0,用Double或Float的NaN表示,所有的非数均不相等;
  • 字符型:char(2字节)

  • 布尔型:boolean(1字节)

  • 注意: switch语句中只能接受byte、short、int和char 类型变量(JDK1.6以前的版本),JDK1.7时,又增加了String。

2. 引用数据类型

  • 类(class)
  • 接口(interface)
  • 数组([ ])
Java中的六种运算符:
  • 算术运算符
  • 赋值运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 三元运算符
算术运算符:
+:加法运算,求操作数的和
-:减法运算,求操作数的差
*:乘法运算,求操作数的乘积
/:除法运算,求操作数的商
%:求余运算,求操作数相除的余数
++:自增,操作数自加1
--:自减,操作数自减1
赋值运算符:
=:将右边的值赋给左边,例:int a = 1;
+=:左右两边的和相加赋给左边,例:int a = 1; a+=2;结果a的值为3
-=:左边减去右边的差赋给左边,例:int a =5;a-=2;结果a的值为3
*=:两边数值相乘的值赋给左边,例:int a = 2;a*=2;结果a的值为4
/=:左边除以右边的值赋给左边,例:int a = 6;a/=2;结果a的值为3
%=:左边除以右边的余数赋给左边,例:int a =7;a%=2;结果a的值为1
关系运算符
>:大于,例:int a = 1;int b = 2;System.out.print(a > b);其结果为false
<:小于,例:int a = 1;int b = 2;System.out.print(a < b);其结果为true
>=:大于等于,例:int a = 1;int b = 2;System.out.print(a >= b);其结果为false
<=:小于等于,例:int a = 1;int b = 2;System.out.print(a <= b);其结果为true
==:等于,例:int a = 1;int b = 2;System.out.print(a == b);其结果为false
!=:不等于,例:int a = 1;int b = 2;System.out.print(a != b);其结果为true
  其结果都是boolean类型,即要么是true要么是false
逻辑运算符
&&:与、并且(短路),   两个条件同时为真时,结果为真
||:或、或者(短路),   两个条件有一个为真时,结果即为真
!:非,(!+条件)  条件为真时,结果为假
Java中的数据类型转换
1:自动数据类型转换(放大转换)
满足自动数据类型转换条件:
1)两种类型要兼容:如数值类型(整型和浮点型)
2)目标类型大于源类型:例如int型数据可以自动转换为double类型
2:强制数据类型转换(缩小转换)
在变量前加上括号,在括号中指定要强制转换的类型
例:double a = 40.9;
    int b = (int)a;
注:强制转换会损失数值精度,例如double类型变量a,经强制转换为int类型后值变为40

运算符的优先级:

1,算数运算符() ++ -- > * / % + -

2,比较运算符(> < >= <=) > (== !=)
3,逻辑运算符! > & > ^ > |
4,赋值运算符=

算数运算符> 比较运算符(关系运算符) > 条件运算符 >赋值运算符

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
相同优先级中,按结合顺序计算。大多数运算是从左至右计算,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
基本的优先级需要记住:
指针最优,单目运算优于双目运算。如正负号。
先乘除(模),后加减。
先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.
逻辑运算最后计算。
优先级
运算符
名称或含义
使用形式
结合方向
说明
1
后置++
后置自增运算符
变量名++
左到右
 
后置-- 后置自减运算符 变量名--  
[ ]
数组下标
数组名[整型表达式]
 
( )
圆括号
(表达式)/函数名(形参表)
 
.
成员选择(对象)
对象.成员名
 
->
成员选择(指针)
对象指针->成员名
 
2
-
负号运算符
-表达式
右到左
单目运算符
(类型)
强制类型转换
(数据类型)表达式
 
前置++
前置自增运算符
++变量名
单目运算符
前置--
前置自减运算符
--变量名
单目运算符
*
取值运算符
*指针表达式
单目运算符
&
取地址运算符
&左值表达式
单目运算符
!
逻辑非运算符
!表达式
单目运算符
~
按位取反运算符
~表达式
单目运算符
sizeof
长度运算符
sizeof 表达式/sizeof(类型)
 
3
/
表达式/表达式
左到右
双目运算符
*
表达式*表达式
双目运算符
%
余数(取模)
整型表达式%整型表达式
双目运算符
4
+
表达式+表达式
左到右
双目运算符
-
表达式-表达式
双目运算符
5
<<
左移
表达式<<表达式
左到右
双目运算符
>>
右移
表达式>>表达式
双目运算符
6
>
大于
表达式>表达式
左到右
双目运算符
>=
大于等于
表达式>=表达式
双目运算符
<
小于
表达式<表达式
双目运算符
<=
小于等于
表达式<=表达式
双目运算符
7
==
等于
表达式==表达式
左到右
双目运算符
!=
不等于
表达式!= 表达式
双目运算符
8
&
按位与
整型表达式&整型表达式
左到右
双目运算符
9
^
按位异或
整型表达式^整型表达式
左到右
双目运算符
10
|
按位或
整型表达式|整型表达式
左到右
双目运算符
11
&&
逻辑与
表达式&&表达式
左到右
双目运算符
12
||
逻辑或
表达式||表达式
左到右
双目运算符
13
?:
条件运算符
表达式1? 表达式2: 表达式3
右到左
三目运算符
14
=
赋值运算符
变量=表达式
右到左
 
/=
除后赋值
变量/=表达式
 
*=
乘后赋值
变量*=表达式
 
%=
取模后赋值
变量%=表达式
 
+=
加后赋值
变量+=表达式
 
-=
减后赋值
变量-=表达式
 
<<=
左移后赋值
变量<<=表达式
 
>>=
右移后赋值
变量>>=表达式
 
&=
按位与后赋值
变量&=表达式
 
^=
按位异或后赋值
变量^=表达式
 
|=
按位或后赋值
变量|=表达式
 
15
,
逗号运算符
表达式,表达式,…
左到右
从左向右顺序运算
结合性
( ) [ ] -> . ++(后缀自增) --(后缀自减)
left to right
! ~ ++(前缀自增) --(前缀自减) + - * sizeof(type)
right to left
* / %

  

  

  
left
to
right
+ -
<< >>
< <= > >=
== !=
&
^
|
&&
||
? : (条件运算)
right to left
= += -= *= /= %= &= ^= |= <<= >>=
结合性
( ) [ ] -> . ++(后缀自增) --(后缀自减)
left to right
! ~ ++(前缀自增) --(前缀自减) + - * sizeof(type)
right to left
* / %

  

  

  
left
to
right
+ -
<< >>
< <= > >=
== !=
&
^
|
&&
||
? : (条件运算)
right to left
= += -= *= /= %= &= ^= |= <<= >>=