JavaSE核心知识点01基础语法01-02(基本数据类型、运算符、运算符优先级)
🤟致敬读者
- 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉
📘博主相关
- 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息
文章目录
- JavaSE核心知识点01基础语法01-02(基本数据类型、运算符、运算符优先级)
- 1. 基本数据类型
- 1.1 自动类型转换(隐式)
- 1.2 强制类型转换(显式)
- 2. 运算符
- 2.1 算术运算符
- 2.2 赋值运算符
- 2.3 比较(关系)运算符
- 2.4 逻辑运算符
- 2.5 位运算符
- 2.6 三元运算符
- 3. 运算符优先级
📃文章前言
- 🔷文章均为学习工作中整理的笔记。
- 🔶如有错误请指正,共同学习进步。
JavaSE核心知识点01基础语法01-02(基本数据类型、运算符、运算符优先级)
1. 基本数据类型
数据类型:基本数据类型、引用数据类型
基本数据类型:数值型(整数类型:byte、short、int、long,浮点类型:float、double)、布尔型(Boolean)、字符型(Char)
引用数据类型:类(class,其中包含String类型)、接口(interface)、数组([])
1.1 自动类型转换(隐式)
-
特点
代码不需要进行特殊处理,自动完成 -
规则
数据范围从小到大(小值赋给大值,即从小范围转大范围,如long a = 100) -
注意
Boolean类型不能与其他数据类型运算
byte、short、char之间不会相互转换,三者在计算时首先转换为int类型
当任何基本数据类型的值和字符串进行连接运算(+)时,基本数据类型的值自动转为字符串类型
1.2 强制类型转换(显式)
-
特点
代码需特殊格式,不能自动完成 -
规则
数据范围从大到小(从数据范围大的值赋值给范围小的值,如int b = (int)100L) -
注意
针对整数类型(byte、short、int、long)Java的整型常量默认为int型,声明long型常量后面需加L或者l
针对浮点类型(float、double)Java浮点型常量默认为double型,声明float型常量需在其后加F或者f
针对字符类型(char)Java char类型是可以进行运算的,对应有Unicode码
针对布尔类型(boolean)Java布尔类型数据只允许取值true和false,无null
布尔类型不可以转换为其他的数据类型
2. 运算符
2.1 算术运算符
运算符 | 名称 | 举例 |
---|---|---|
+ | 加法 | 1+1=2 |
- | 减法 | 2-1=1 |
* | 乘法 | 1*2=2 |
/ | 除法 | 2/1=2 |
% | 取余 | 5%3=2 |
++ | 自增1 | int i=2;i++ |
-- | 自减1 | int i=2;i-- |
自增自减运算符(++、–)
a++ 先赋值后运算
int a = 1;
int b = a++;
System.out.print(a);//a=2
System.out.print(b);//b=1
++a 先运算后赋值
int a = 1;
int b = ++a;
System.out.print(a);//a=2
System.out.print(b);//b=2
2.2 赋值运算符
运算符 | 名称 | 举例 |
---|---|---|
= | 赋值 | 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 |
2.3 比较(关系)运算符
运算符 | 名称 | 举例 | 结果 |
---|---|---|---|
> | 大于 | a=3;b=2;a>b | true |
< | 小于 | a=3;b=2;a<b | false |
>= | 大于等于 | a=3;b=2;a>=2 | true |
<= | 小于等于 | a=3;b=2;a<=b | false |
== | 等于 | a=3;b=2;a==b | false |
!= | 不等于 | a=3;b=2;a!=b | true |
注意:
>、<、>=、<=只支持左右两边操作数是数值类型
==、!=两边的操作数既可以是数值类型,也可以是引用类型
==比较基本数据类型时,比较的是值,比较引用数据类型时比较的是地址
2.4 逻辑运算符
运算符 | 名称 | 举例 | 结果 |
---|---|---|---|
&& | 与 | a&&b | a和b都为true则返回true |
|| | 或 | a||b | a和b任一位true则返回true |
! | 非 | !a | a为false则返回true |
^ | 异或 | a^b | ab有且仅有一个为true则返回true |
注意:
单&时,左边无论真假右边都进行运算
双&时,左边为真右边参与运算,左边为假右边不参与运算
|
和||
的区别同上,左边为真右边不参与运算
2.5 位运算符
运算符 | 含义 |
---|---|
<< | 空位补0,被移除的高位丢弃,空缺位补0 |
>> | 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1 |
>>> | 被移位二进制最高位无论是0或者是1,空缺位都用0补 |
& | 二进制位进行& 运算,只有1&1 时结果是1,否则是0 |
| | 二进制位进行| 运算,只有0|0 时结果是0,否则是1 |
^ | 相同二进制位进行^ 运算,结果是0,1^1=0,0^0=0 ;不相同二进制位^ 运算结果是1,1^0=0,0^1=1 |
~ | 正数取反,各二进制码按补码各位取反;负数取反,各二进制位按补码各位取反 |
位运算是直接对正数的二进制进行的运算
2.6 三元运算符
语法:
布尔表达式?表达式1:表达式2
布尔表达式为true,运算结果为表达式1,反之,结果为表达式2
int x = 20;
int y = 50;
int z = (x>y)?x:y;
//表示x大于y则取x,否则则取y,即取大值,上面的x20小于y50,故前面的布尔表达式为假,取值为y,z=50
3. 运算符优先级
一图了解运算符优先级
下表从上到下优先级从高到低的排序
从高到低的顺序 | 运算符 |
---|---|
L->R | . () {} ; , |
R->L | ++ -- ~ !(data type) |
L->R | * / % |
L->R | + - |
L->R | >> << >>> |
L->R | > < <= >= instanceof |
L->R | == != |
L->R | & |
L->R | ^ |
L->R | | |
L->R | && |
L->R | || |
R->L | ? : |
R->L | = *= /= %= |
L->R | += -= <<= >>= |
L->R | >>>= &= ^= |= |
📜文末寄语
- 🟠关注我,获取更多内容。
- 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
- 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
- 🔵加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
- 🟣点击下方名片获取更多内容🍭🍭🍭👇