3.操作符、流程控制符
第三章【操作符、流程控制符】
一、变量
1、根据变量位置划分:
- 局部变量:
- 位置
方法中声明的变量
方法的代码块中的变量
方法的参数列表的位置
- 是不是默认进行初始化
jvm不会给局部变量默认值
所以使用局部变量时需要自己进行初始化
- 作用范围
声明这个变量开始到这个变量直接所属的{}结束
- 生命周期
声明这个变量开始到这个变量直接所属的{}结束
方法的参数列表的生命周期为他所在方法的{}结束
- 修饰符不同
public (范围修饰符) static(静态修饰符) 等不能修饰局部变量
final 可以使用
- 实例变量:(成员变量)
-
位置
位于类的内部,方法的外部,不能用static修饰
-
是不是默认进行初始化
jvm给实例变量默认值
数据类型 byte short int long float double char boolean String 初始值 0 0 0 0 0.0 0.0 ' ' (空格) false null -
作用范围
非静态方法中直接访问
静态方法或者其它类中构建对象访问
-
生命周期
构建对象后存在,对象销毁后消失
-
修饰符
不能用static修饰,可以用public修饰
二、操作符
1、赋值操作符
= *= /= %= += -=
a=a+1
; byte/short累加会做数据类型提升,建议使用a+=1;
a++
; 先使用a,然后做a+=1
++a
; 先做a+=1,然后使用a
2、比较操作符
> < >= <=
:表过后产生boolean类型的结果
instanceof
:判断一个对象能不能用某个类接收,只能是引用数据类型使用
System.out.println("hello" instanceof String);
使用instanceof判断的类型和被判断的对象没有任何关系时报错
3、相等操作符
== !=
既可以比较基本数据类型,也可以比较引用数据类型
4、算术运算符
+ - * / %
注意+
:
- 数值相加
- 字符串拼接:两边至少一方出现字符串
String str = a+b+c+"hello"+d+true;
5、移位操作符[速度最快]
所有的移位操作都是基于2进制数(十进制数--->二进制数--->移位--->十进制数)
-
右移位:2进制数往右推,往左边补位
带符号右移:
正数右移之后,最左边空出的位置,都要补0
【本质就是除以2n,这个n就是我们右移的位数,除以2nd之后,只保留整数部分】
负数右移之后,最左边空出的位置,都要补1
byte a=12
12的原码0000 1100
右移0000 0011【3】
byte a=-12
-12的原码1000 1100
反码1111 0011
补码1111 0110【负数的二进制数也就是该数的补码】
右移1111 1101
回退-1补码1111 1100
反码1000 0011
原码-3 【右移的结果】
不带符号右移:空余位不管正负数统一补0,负数变大
-
左移位:2进制数往左推,往右边补位
【本质就是乘以2^n,这个n就是我们左移的位数,正负不变】
如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模/取余。
6、位运算符
&
与运算
|
或运算
^
异或运算
~
取反运算
int a = 3;//0000 0011 省略24位
System.out.println(~a); //1111 1100-->1111 1011 --> 1000 0100 = -4 (取反--->补码-1--->反码)
//交互俩个变量的值,但是不是要中间变量
a=a^b;
b=a^b;
a=a^b;
7、逻辑运算符
&&
短路与
||
短路或
&& 只能作为逻辑运算符,但是它会具备短路的功能
8、条件运算符
三目运算符,可以嵌套使用
语法:
boolean表达式 ? 表达式1 : 表达式2
9、优先级问题

三、类型转换
1、基本类型
2、引用类型
四、流程控制
if
switch
for
while
do-while
//循环 jdk1.5新特性 增强for循环【不能改变值,只是遍历一遍】
/*
* 语法:
* for(数据类型 变量名 :容器){
* System.out.println(变量名);
* }
*/
for(String str:args) {
System.out.println(str);
}
五、break
break 的意思是退出,结束当前的循环或switch代码。
六、continue
continue 的意思是结束本次循环,让循环直接进入一次的运行。
七、label
如果想让break或continue针对某一个指定的循环起作用,那么可以使用label标签给循环起名字,然后使用break或continue加上循环的名字即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理