- 变量:计算机语言中能储存计算结果或能表示值的抽象概念
- 运算符:运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。
导航
1.变量(8种数据类型)
1.1整型变量(int)
1.2长整型变量(long)
1.3 双精度浮点型变量(double)
1.4 单精度浮点型变量(float)
1.5 字符类型变量(char)
1.6 字节类型变量(Byte)
1.7 短整型变量(short)
1.8 布尔类型变量(boolean)
1.9 字符串类型变量(String)
1.10 变量的命名规则
2.运算符
2.1 算术运算符
2.2 关系运算符
2.3 逻辑运算符
2.3.1逻辑与 &&
2.3.2逻辑或 ||
2.3.3逻辑非 !
2.4 位运算符
2.4.1按位与 &
2.4.2按位或 |
2.4.3按位取反 ~
2.4.4按位异或 ^
2.5 移位运算
2.5.1左移 <<
>">2.5.2右移 >>
>>">2.5.3无符号右移 >>>
2.6 条件运算符
1.变量(8种数据类型)
1.1整型变量(int)
int 变量名 = 初始值;
int num = 10;
System.out.println(num);
int 变量名 = 初始值;
int num = 10; System.out.println(num);
大小:一个整型变量大小为4个字节(-2^31 -> 2^31-1),1个字节(Byte) == 8比特(bit)
查看 Java 中的整型数据范围:
System.out.println(Integer.MAX_VALUE); // int 的最大值 System.out.println(Integer.MIN_VALUE); // int 的最小值
溢出:运算的结果超出了 int 的最大范围
int maxValue = Integer.MAX_VALUE; System.out.println(maxValue+1); int minValue = Integer.MIN_VALUE; System.out.println(minValue-1);
1.2长整型变量(long)
long 变量名 = 初始值;
long num = 10L; // 定义一个长整型变量, 初始值写作 10l 也可以(小写的 L, 不是数字1).
System.out.println(num);
long 变量名 = 初始值;
大小:一个长整型变量大小为8个字节(-2^63 -> 2^63-1)
查看 Java 中的整型数据范围:
System.out.println(Long.MAX_VALUE); System.out.println(Long.MIN_VALUE); // 运行结果 9223372036854775807 -9223372036854775808
1.3 双精度浮点型变量(double)
double 变量名 = 初始值;
double num = 1.0;
System.out.println(num);
double 变量名 = 初始值;
大小:一个长整型变量大小为8个字节(-2^63 -> 2^63-1),Java 中的 double 虽然也是 8 个字节, 但是浮点数的内存布局和整数差别很大, 不能单纯的用 2 ^ n 的形式表示数据范围。
1.4 单精度浮点型变量(float)
float 变量名 = 初始值;
float num = 1.0f; // 写作 1.0F 也可以
System.out.println(num);
float 变量名 = 初始值;
大小:一个整型变量大小为4个字节(-2^31 -> 2^31-1)
1.5 字符类型变量(char)
char 变量名 = '初始值';
char a = 'A';
System.out.println(a);
char ch = '呵';
System.out.println(ch);
char 变量名 = '初始值';
大小:一个整型变量大小为2个字节(在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符。 因此一 个字符占用2个字节, 表示的字符种类更多, 包括中文。)
执行 javac 的时候可能出现以下错误:Test.java:3: 错误: 未结束的字符文字 char ch = '鍛?';此时我们在执行 javac 时加上 -encoding UTF-8 选项即可
javac -encoding UTF-8 Test.java
1.6 字节类型变量(Byte)
Byte 变量名 = 初始值;
byte value = 0;
System.out.println(value);
大小:一个整型变量大小为
1个字节
( -
128
-
> +127
)
1.7 短整型变量(short)
Short 变量名 = 初始值;
short value = 0;
System.out.println(value);
大小:一个整型变量大小为
2个字节(
-32768
-
> +32767)
1.8 布尔类型变量(boolean)
Boolean 变量名 = 初始值;
boolean value = true; //只有两种取值,true/false
System.out.println(value);
Byte 变量名 = 初始值;
Short 变量名 = 初始值;
short value = 0; System.out.println(value);大小:一个整型变量大小为 2个字节( -32768 - > +32767)
1.8 布尔类型变量(boolean)
Boolean 变量名 = 初始值;
boolean value = true; //只有两种取值,true/false
System.out.println(value);
Boolean 变量名 = 初始值;
注意:
- Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法。
- boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位, 这个没有明确规定。
1.9 字符串类型变量(String)
String 变量名 = "初始值";
String name = "zhangsan";
System.out.println(name);
注意事项:
- Java 使用 双引号 + 若干字符 的方式表示字符串字面值。
- 和上面的类型不同, String 不是基本类型, 而是引用类型(后面重点解释)。
- 字符串中的一些特定的不太方便直接表示的字符需要进行转义。
String 变量名 = "初始值";
补充1:常用转义字符
| 转义字符 | 解释 |
|---|---|
| n | 换行 |
| t | 水平制表符 |
| ' | 单引号 |
| " | 双引号 |
| \ | 反斜杠 |
String a = "hello"; String b = "world"; String c = a + b; System.out.println(c); String str = "result = "; int a = 10; int b = 20; String result = str + a + b; System.out.println(result);
1.10 变量的命名规则
硬性指标
:
- 一个变量名只能包含数字, 字母, 下划线
- 数字不能开头
- 变量名是大小写敏感的. 即 num 和 Num 是两个不同的变量
注意
:
虽然语法上也允许使用中文
/
美元符
($)
命名变量
,
但是
强烈
不推荐这样做
软性指标
:
- 变量命名要具有描述性, 见名知意
- 变量名不宜使用拼音(但是不绝对)
- 变量名的词性推荐使用名词
- 变量命名推荐 小驼峰命名法, 当一个变量名由多个单词构成的时候, 除了第一个单词之外, 其他单词首字母都大写
小驼峰命名法:
int maxValue = 100; String studentName = "张三";
2.运算符
2.1 算术运算符
- 基本四则运算符 + - * / %
- 基本四则运算符 + - * / %
除法:
- int / int 结果还是 int , 需要使用 double 来计算
- 0 不能作为除数
- % 表示取余 , 不仅仅可以对 int 求模 , 也能对 double 来求模
- 增量赋值运算符 += -= *= /= %=
结论:
- 自增 / 自减运算符 ++ --
- 如果不取自增运算的表达式的返回值, 则前置自增和后置自增没有区别
- 如果取表达式的返回值, 则前置自增的返回值是自增之后的值, 后置自增的返回值是自增之前的值
2.2 关系运算符
== != < > <= >=
注意:
关系运算符的表达式返回值都是
boolean
类型
2.3 逻辑运算符
&& || !
注意
:
逻辑运算符的操作数
(
操作数往往是关系运算符的结果
)
和返回值都是
boolean
2.3.1逻辑与 &&
两个操作数都为
true,
结果为
true,
否则结果为
false
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);
2.3.2逻辑或 ||
两个操作数都为 false,
结果为
false,
否则结果为
true
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b < c);
2.3.3逻辑非 !
操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数)
int a = 10;
int b = 20;
System.out.println(!a < b)
2.4 位运算符
& | ~ ^
位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位的每一位依次进行计算
2.4.1按位与 &
如果两个二进制位都是
1,
则结果为
1,
否则结果为
0
2.4.2按位或 |
如果两个二进制位都是
0,
则结果为
0,
否则结果为
1
注意
:
当
&
和
|
的操作数为整数
(int, short, long, byte)
的时候
,
表示按位运算
,
当操作数为
boolean
的时候
,
表示逻辑运算
2.4.3按位取反 ~
如果该位为
0
则转为
1,
如果该位为
1
则转为
0
== != < > <= >=
&& || !注意 : 逻辑运算符的操作数 ( 操作数往往是关系运算符的结果 ) 和返回值都是 boolean
2.3.1逻辑与 &&
两个操作数都为
true,
结果为
true,
否则结果为
false
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b < c);
2.3.2逻辑或 ||
两个操作数都为 false,
结果为
false,
否则结果为
true
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b < c);
2.3.3逻辑非 !
操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数)
int a = 10;
int b = 20;
System.out.println(!a < b)
2.4 位运算符
& | ~ ^
位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位的每一位依次进行计算
2.4.1按位与 &
如果两个二进制位都是
1,
则结果为
1,
否则结果为
0
2.4.2按位或 |
如果两个二进制位都是
0,
则结果为
0,
否则结果为
1
注意
:
当
&
和
|
的操作数为整数
(int, short, long, byte)
的时候
,
表示按位运算
,
当操作数为
boolean
的时候
,
表示逻辑运算
2.4.3按位取反 ~
如果该位为
0
则转为
1,
如果该位为
1
则转为
0
两个操作数都为 false, 结果为 false, 否则结果为 true
int a = 10; int b = 20; int c = 30; System.out.println(a < b || b < c);
2.3.3逻辑非 !
操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数)
int a = 10;
int b = 20;
System.out.println(!a < b)
2.4 位运算符
& | ~ ^
位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位的每一位依次进行计算
2.4.1按位与 &
如果两个二进制位都是
1,
则结果为
1,
否则结果为
0
2.4.2按位或 |
如果两个二进制位都是
0,
则结果为
0,
否则结果为
1
注意
:
当
&
和
|
的操作数为整数
(int, short, long, byte)
的时候
,
表示按位运算
,
当操作数为
boolean
的时候
,
表示逻辑运算
2.4.3按位取反 ~
如果该位为
0
则转为
1,
如果该位为
1
则转为
0
操作数为 true, 结果为 false; 操作数为 false, 结果为 true(这是个单目运算符, 只有一个操作数)
& | ~ ^
位操作表示 按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列), 按位运算就是在按照二进制位的每一位依次进行计算
2.4.1按位与 &
如果两个二进制位都是
1,
则结果为
1,
否则结果为
0
2.4.2按位或 |
如果两个二进制位都是
0,
则结果为
0,
否则结果为
1
注意
:
当
&
和
|
的操作数为整数
(int, short, long, byte)
的时候
,
表示按位运算
,
当操作数为
boolean
的时候
,
表示逻辑运算
2.4.3按位取反 ~
如果该位为
0
则转为
1,
如果该位为
1
则转为
0
如果两个二进制位都是 0, 则结果为 0, 否则结果为 1注意 : 当 & 和 | 的操作数为整数 (int, short, long, byte) 的时候 , 表示按位运算 , 当操作数为 boolean 的时候 , 表示逻辑运算
2.4.3按位取反 ~
如果该位为
0
则转为
1,
如果该位为
1
则转为
0
int a = 0xf;
System.out.printf("%xn", ~a);
2.4.4按位异或 ^
如果两个数字的二进制位相同
,
则结果为
0,
相异则结果为1
int a = 0x1;
int b = 0x2;
System.out.printf("%xn", a ^ b);
2.5 移位运算
<< >> >>>
2.5.1左移 <<
最左侧位不要了, 最右侧补 0
int a = 0x10;
System.out.printf("%xn", a << 1);
// 运行结果(注意, 是按十六进制打印的)
20
2.5.2右移 >>
最右侧位不要了
,
最左侧补符号位
(
正数补
0,
负数补
1)
int a = 0x10;
System.out.printf("%xn", a >> 1);
// 运行结果(注意, 是按十六进制打印的)
8
int b = 0xffff0000;
System.out.printf("%xn", b >> 1);
// 运行结果(注意, 是按十六进制打印的)
ffff8000
2.5.3无符号右移 >>>
最右侧位不要了
,
最左侧补
0
int a = 0xffffffff;
System.out.printf("%xn", a >>> 1);
// 运行结果(注意, 是按十六进制打印的)
7fffffff
注意:
- 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
- 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
- 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
- 移动负数位或者移位位数过大都没有意义
2.6 条件运算符
表达式1 ? 表达式2 : 表达式3
Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
<< >> >>>
2.5.1左移 <<
最左侧位不要了, 最右侧补 0
int a = 0x10;
System.out.printf("%xn", a << 1);
// 运行结果(注意, 是按十六进制打印的)
20
2.5.2右移 >>
最右侧位不要了
,
最左侧补符号位
(
正数补
0,
负数补
1)
int a = 0x10;
System.out.printf("%xn", a >> 1);
// 运行结果(注意, 是按十六进制打印的)
8
int b = 0xffff0000;
System.out.printf("%xn", b >> 1);
// 运行结果(注意, 是按十六进制打印的)
ffff8000
2.5.3无符号右移 >>>
最右侧位不要了
,
最左侧补
0
int a = 0xffffffff;
System.out.printf("%xn", a >>> 1);
// 运行结果(注意, 是按十六进制打印的)
7fffffff
注意:
- 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
- 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
- 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
- 移动负数位或者移位位数过大都没有意义
2.6 条件运算符
表达式1 ? 表达式2 : 表达式3
Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
最左侧位不要了, 最右侧补 0
最右侧位不要了 , 最左侧补符号位 ( 正数补 0, 负数补 1)
int a = 0x10;
System.out.printf("%xn", a >> 1);
// 运行结果(注意, 是按十六进制打印的)
8
int b = 0xffff0000;
System.out.printf("%xn", b >> 1);
// 运行结果(注意, 是按十六进制打印的)
ffff8000
2.5.3无符号右移 >>>
最右侧位不要了
,
最左侧补
0
int a = 0xffffffff;
System.out.printf("%xn", a >>> 1);
// 运行结果(注意, 是按十六进制打印的)
7fffffff
注意:
- 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
- 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
- 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.
- 移动负数位或者移位位数过大都没有意义
2.6 条件运算符
表达式1 ? 表达式2 : 表达式3
Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
表达式1 ? 表达式2 : 表达式3
Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法
// 求两个整数的最大值 int a = 10; int b = 20; int max = a > b ? a : b;
芜湖,结束啦结束啦!~!~



