运算符
算数运算符
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21 |
-- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19 |
//这里演示算数运算符
//+ 、- 、* 、 / 、 % 、++ 、--
public class OperatorDemo{
public static void main(String[] args){
int a = 30;
int b = 20;
System.out.println( a + b ); //50
System.out.println( a - b ); //10
System.out.println( a * b ); //600
System.out.println( a / b ); //1
System.out.println( a % b ); //10
System.out.println( a++ ); //30
System.out.println( ++a ); //32
System.out.println( b-- ); //20
System.out.println( --b ); //18
}
}
-
++a 先加后赋值 先加一后运算
-
a++ 先赋值后加 先运算后加一
-
—b 先减后赋值 先减一后运算
-
b— 先赋值后减 先运算后减一
关系运算符
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
//这里演示关系运算符
//>大于 >= 大于等于 < 小于 <=小于等于 == 等于 != 不等于
//关系运算符的运算结果一定是布尔类型(true/false)
public class OperatorDemo1{
public static void main(String[] args){
int a = 30;
int b = 20;
System.out.println( a > b ); //true
System.out.println( a >= b ); //true
System.out.println( a < b ); //false
System.out.println( a <= b ); //false
System.out.println( a == b ); //false
System.out.println( a != b ); //true
}
}
逻辑运算符
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为 |
功能 | |
---|---|
||(短路或) | 都为false,则false。有一个为true便不再继续判断了 |
|(逻辑或) | 都为false,则false。所有的条件都判断 |
&&(短路与) | 都为true,则true。有一个为false便不再继续判断了 |
&(逻辑与) | 都为true,则true。所有的条件都判断 |
!(非) | 变成相反的样子 |
^(异或) | 相同则为false,不相同则为true |
//这里演示逻辑运算符
//||(短路或) |(逻辑或) &&(短路与) &(逻辑与) !(非) ^(异或)
//逻辑运算符的运算结果一定是布尔类型(true/false)
public class OperatorDemo2{
public static void main(String[] args){
boolean a = true;
boolean b = false;
System.out.println( a || b ); //true
System.out.println( a | b ); //true
System.out.println( a && b ); //false
System.out.println( a & b ); //false
System.out.println( ! b ); //true
System.out.println( a ^ b ); //true
}
}
条件运算符
三目运算符 boolean?值1:值2; 前面为true取值1赋值取值2
//这里演示条件运算符
//三目运算符 boolean?值1:值2; 前面为true取值1赋值取值2
public class OperatorDemo3{
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println( a > b ? a : b ); //20
System.out.println( a < b ? a : b ); //10
System.out.println( a > b ? ++a : --b ); //19
System.out.println( a < b ? a-- : b++ ); //10
}
}
赋值运算符
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | 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 |
//这里演示赋值运算符
//基本赋值运算符:=
//扩展赋值运算符:+= 、-= 、*= 、/= 、%=
public class OperatorDemo4{
public static void main(String[] args){
int a = 10;
int b = 31;
System.out.println( a ); //a=10
System.out.println( a += b ); //a=a+b=10+31=41
System.out.println( a -= b ); //a=a-b=41-31=10
System.out.println( a *= b ); //a=a*b=10*31=310
System.out.println( a /= b ); //a=a/b=310/31=10
System.out.println( b %= a ); //b=b%a=31%10=1
}
}
//byte类型加减需要强制类型转换
public class OperatorDemo5{
public static void main(String[] args){
byte by = 50;
byte by1 = 40;
// byte by2 = by + by1; //报错 错误: 不兼容的类型: 从int转换到byte可能会有损失 原因是在运算中把by,by1默认int类型,需要强制类型转换
byte by2 = (byte)(by + by1);
System.out.println(by2);
}
}
字符串连接运算符
// " "作为字符串的连接
//char类型会转为对应的ASCII码
public class OperatorDemo6{
public static void main(String[] args){
String str1 = "我爱学习";
String str2 = "学Java,月薪过万";
System.out.println(str1 + str2);
System.out.println("-----------------------");
char ch1 = 'a';
char ch2 = 'b';
System.out.println(ch1 + ch2);
System.out.println("-----------------------");
char ch3 = 65;
char ch4 = (char)(ch3 + 32) ;
System.out.println(ch3);
System.out.println(ch4);
}
}
位运算符
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是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运算符优先级
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | expr++ expr-- | 从左到右 |
一元 | ++expr --expr + - ~ ! | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | > >= < <= | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
字节与字符的区别
字节(Byte)是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位。
字符(Character)计算机中使用的字母、数字、字和符号,比如'A'、'B'、'$'、'&'等。
一般在英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示。
字节与字符:
- ASCII 码中,一个英文字母(不分大小写)为一个字节,一个中文汉字为两个字节。
- UTF-8 编码中,一个英文字为一个字节,一个中文为三个字节。
- Unicode 编码中,一个英文为一个字节,一个中文为两个字节。
- 符号:英文标点为一个字节,中文标点为两个字节。例如:英文句号 . 占1个字节的大小,中文句号 **。**占2个字节的大小。
- UTF-16 编码中,一个英文字母字符或一个汉字字符存储都需要 2 个字节(Unicode 扩展区的一些汉字存储需要 4 个字节)。
- UTF-32 编码中,世界上任何字符的存储都需要 4 个字节。
ASCII编码
ASCII编码即美国信息交换标准代码(American Standard Code for Information Interchange)是一套共有128个字符的编码,它基于阿拉丁字母,主要作用是用来表示英语和西欧语言字符。ASCII规范编码第一次公布于1967年,ascii码在1986年完成最后一次更新。ASCII码对照表等同于国际标准 ISO/IEC 646,ASCII码对照表是世界最通用的信息交换标准。
32 - 127,共96个。ASCII码对照表32~127之间的ASCII码表示的符号,在我们的键盘上都可以被找到。其中:32表示空格,127表示删除命令。
十进制 | 八进制 | 十六进制 | 二进制 | 符号 | HTML实体 | 说明 |
---|---|---|---|---|---|---|
32 | 040 | 20 | 00100000 | 空格 | ||
33 | 041 | 21 | 00100001 | ! | ! | 感叹号 |
34 | 042 | 22 | 00100010 | " | " | 双引号 |
35 | 043 | 23 | 00100011 | # | # | 井号 |
36 | 044 | 24 | 00100100 | $ | $ | 美元符 |
37 | 045 | 25 | 00100101 | % | % | 百分号 |
38 | 046 | 26 | 00100110 | & | & | 与 |
39 | 047 | 27 | 00100111 | ' | ' | 单引号 |
40 | 050 | 28 | 00101000 | ( | ( | 左括号 |
41 | 051 | 29 | 00101001 | ) | ) | 右括号 |
42 | 052 | 2A | 00101010 | * | * | 星号 |
43 | 053 | 2B | 00101011 | + | + | 加号 |
44 | 054 | 2C | 00101100 | , | , | 逗号 |
45 | 055 | 2D | 00101101 | - | - | 连字号或减号 |
46 | 056 | 2E | 00101110 | . | . | 句点或小数点 |
47 | 057 | 2F | 00101111 | / | / | 斜杠 |
48 | 060 | 30 | 00110000 | |||
49 | 061 | 31 | 00110001 | 1 | 1 | 1 |
50 | 062 | 32 | 00110010 | 2 | 2 | 2 |
51 | 063 | 33 | 00110011 | 3 | 3 | 3 |
52 | 064 | 34 | 00110100 | 4 | 4 | 4 |
53 | 065 | 35 | 00110101 | 5 | 5 | 5 |
54 | 066 | 36 | 00110110 | 6 | 6 | 6 |
55 | 067 | 37 | 00110111 | 7 | 7 | 7 |
56 | 070 | 38 | 00111000 | 8 | 8 | 8 |
57 | 071 | 39 | 00111001 | 9 | 9 | 9 |
58 | 072 | 3A | 00111010 | : | : | 冒号 |
59 | 073 | 3B | 00111011 | ; | ; | 分号 |
60 | 074 | 3C | 00111100 | < | < | 小于 |
61 | 075 | 3D | 00111101 | = | = | 等号 |
62 | 076 | 3E | 00111110 | > | > | 大于 |
63 | 077 | 3F | 00111111 | ? | ? | 问号 |
64 | 100 | 40 | 01000000 | @ | @ | 电子邮件符号 |
65 | 101 | 41 | 01000001 | A | A | 大写字母 A |
66 | 102 | 42 | 01000010 | B | B | 大写字母 B |
67 | 103 | 43 | 01000011 | C | C | 大写字母 C |
68 | 104 | 44 | 01000100 | D | D | 大写字母 D |
69 | 105 | 45 | 01000101 | E | E | 大写字母 E |
70 | 106 | 46 | 01000110 | F | F | 大写字母 F |
71 | 107 | 47 | 01000111 | G | G | 大写字母 G |
72 | 110 | 48 | 01001000 | H | H | 大写字母 H |
73 | 111 | 49 | 01001001 | I | I | 大写字母 I |
74 | 112 | 4A | 01001010 | J | J | 大写字母 J |
75 | 113 | 4B | 01001011 | K | K | 大写字母 K |
76 | 114 | 4C | 01001100 | L | L | 大写字母 L |
77 | 115 | 4D | 01001101 | M | M | 大写字母 M |
78 | 116 | 4E | 01001110 | N | N | 大写字母 N |
79 | 117 | 4F | 01001111 | O | O | 大写字母 O |
80 | 120 | 50 | 01010000 | P | P | 大写字母 P |
81 | 121 | 51 | 01010001 | Q | Q | 大写字母 Q |
82 | 122 | 52 | 01010010 | R | R | 大写字母 R |
83 | 123 | 53 | 01010011 | S | S | 大写字母 S |
84 | 124 | 54 | 01010100 | T | T | 大写字母 T |
85 | 125 | 55 | 01010101 | U | U | 大写字母 U |
86 | 126 | 56 | 01010110 | V | V | 大写字母 V |
87 | 127 | 57 | 01010111 | W | W | 大写字母 W |
88 | 130 | 58 | 01011000 | X | X | 大写字母 X |
89 | 131 | 59 | 01011001 | Y | Y | 大写字母 Y |
90 | 132 | 5A | 01011010 | Z | Z | 大写字母 Z |
91 | 133 | 5B | 01011011 | [ | [ | 左中括号 |
92 | 134 | 5C | 01011100 | \ | \ | 反斜杠 |
93 | 135 | 5D | 01011101 | ] | ] | 右中括号 |
94 | 136 | 5E | 01011110 | ^ | ^ | 音调符号 |
95 | 137 | 5F | 01011111 | _ | _ | 下划线 |
96 | 140 | 60 | 01100000 | ` | ` | 重音符 |
97 | 141 | 61 | 01100001 | a | a | 小写字母 a |
98 | 142 | 62 | 01100010 | b | b | 小写字母 b |
99 | 143 | 63 | 01100011 | c | c | 小写字母 c |
100 | 144 | 64 | 01100100 | d | d | 小写字母 d |
101 | 145 | 65 | 01100101 | e | e | 小写字母 e |
102 | 146 | 66 | 01100110 | f | f | 小写字母 f |
103 | 147 | 67 | 01100111 | g | g | 小写字母 g |
104 | 150 | 68 | 01101000 | h | h | 小写字母 h |
105 | 151 | 69 | 01101001 | i | i | 小写字母 i |
106 | 152 | 6A | 01101010 | j | j | 小写字母 j |
107 | 153 | 6B | 01101011 | k | k | 小写字母 k |
108 | 154 | 6C | 01101100 | l | l | 小写字母 l |
109 | 155 | 6D | 01101101 | m | m | 小写字母 m |
110 | 156 | 6E | 01101110 | n | n | 小写字母 n |
111 | 157 | 6F | 01101111 | o | o | 小写字母 o |
112 | 160 | 70 | 01110000 | p | p | 小写字母 p |
113 | 161 | 71 | 01110001 | q | q | 小写字母 q |
114 | 162 | 72 | 01110010 | r | r | 小写字母 r |
115 | 163 | 73 | 01110011 | s | s | 小写字母 s |
116 | 164 | 74 | 01110100 | t | t | 小写字母 t |
117 | 165 | 75 | 01110101 | u | u | 小写字母 u |
118 | 166 | 76 | 01110110 | v | v | 小写字母 v |
119 | 167 | 77 | 01110111 | w | w | 小写字母 w |
120 | 170 | 78 | 01111000 | x | x | 小写字母 x |
121 | 171 | 79 | 01111001 | y | y | 小写字母 y |
122 | 172 | 7A | 01111010 | z | z | 小写字母 z |
123 | 173 | 7B | 01111011 | { | { | 左大括号 |
124 | 174 | 7C | 01111100 | | | | | 垂直线 |
125 | 175 | 7D | 01111101 | } | } | 右大括号 |
126 | 176 | 7E | 01111110 | ~ | ~ | 波浪号 |
127 | 177 | 7F | 01111111 | � | 删除 |