JavaDay03 变量、操作符、流程控制、循环

本文详细介绍了Java中的局部变量和实例变量的异同,包括它们的定义、作用范围和默认值。同时,讲解了各种操作符的用法,如赋值、比较、逻辑和位运算符。此外,还涵盖了流程控制语句,如if、for、while和do-while循环,以及条件操作符和类型转换规则。最后,提到了流程控制中的break、continue和return语句的作用。
摘要由CSDN通过智能技术生成

JavaDay3

1.局部变量和实例变量的异同

局部变量:

  1. 定义在方法中的变量,就是局部变量;
  2. 局部变量没有默认值;
  3. 作用范围:局部变量被直接包裹的大括号中,从这变量声明开始,一直到这个大括号结束;
  4. 方法的参数,也是局部变量,它的作用范围在整个方法中;
  5. 不能使用修饰符。

实例变量:(全局变量,成员变量)

  1. 实例变量就是类中的属性,也叫做成员变量(非静态的);
  2. 实例变量是有默认值的,即使声明完,不赋值,它也有一个默认的值,不同类型的实例变量的默认值不同:
    (1)byte类型,默认值为0;
    (2)short类型,默认值为0;
    (3)int类型,默认值为0;
    (4)long类型,默认值为0L;
    (5)float类型,默认值为0.0F;
    (6)double类型,默认值为0.0D;
    (7)boolean类型,默认值false;
    (8)char类型;默认值是’\u0000’。
    (9)引用类型,String字符串类型的变量,默认值是null。
  3. 实例变量的作用范围是当前类中所有的非静态方法中,都可以访问。
  4. 可以使用修饰符。

2. 操作符

  1. 赋值操作符:
    (1)=:最基础的赋值操作符,=号右边的值,赋给=号左边变量;
    (2)*=:一个变量和另一个数据相乘,并把结果再赋值给这个变量;
    (3)/=:相除;
    (4)%=:相余;
    (5)+=:相加;
    (6)-=:相减。
    注意:++a和a++的区别:
    (1)a++ 表示先使用a的值进行操作或者运算,然后再让a完成自增1;
    (2)++a 表示先让a完成自增1,然后再使用a的值进行操作或者运算。
    –a和a–与其类似。
  2. 比较操作符:
    (1)>:大于;
    (2)<:小于;
    (3)>=:大于等于;
    (4)<=:小于等于;
    (5)instanceof:判断对象是否属于指定类型。
  3. 相等操作符:
    (1)==:比较两边的数据是否相等,相等返回true,不相等返回false。
    (2)!=:比较两边的数据是否不相等,相等返回false,不相等返回true。
  4. 算术操作符:
    (1)+:数字之间使用+,表示俩个值相加;
    (2)-:两个数字相减;
    (3)*:两个数字相乘 ;
    (4)/:两个数字相除;
    (5)%:两个数字取余。
    注意:使用+号,也可以表示拼接两个字符串,数值与字符串使用+号拼接,结果还是字符串。
  5. 移位操作符:
    (1)>>:算术右移位运算:这个操作的本质是除以2^n,这个n是右移的位数;
    (2)<<:算数左移位运算:这个操作的本质是乘以2^n,这个n是左移的位数;
    (3)>>>:逻辑右移位运算(无符号右移运算):
    这个操作的本质是除以2^n,这个n是右移的位数;
    但是除以2^n之后只保留整数部分;
    正数和负数右移之后,最左边空出的位置,都要补0。
    注意:特殊情况:
int a = 0b00000000000000000000000000000001;
System.out.println(a<<32); //结果是1 相当于1<<0
System.out.println(a<<33); //结果是2 相当于1<<1
System.out.println(a<<34); //结果是4 相当于1<<2

原因:如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模/取余。如果对int类型移动33位,实际上只移动了33%32=1位。如果对int型移动32位,实际上只移动了32%32=0位。
6. 位运算符:
(1)&:与运算;
(2)|:或运算;
(3)^:异或运算;
(4)~:取反运算
7. 逻辑运算符:
(1)&&:短路与:

a>0 && (b++)>1;
//如果第一个条件a>0满足,就对下一个条件(b++)>1进行判断;如果a>0不满足就不再判断第二个条件。

(2)||:短路或:与&&类型。
8. 条件操作符(三目运算符):

boolean表达式 ? 表达式1 : 表达式2;

3. 类型转换的规则

java中的=号赋值操作,需要=号俩边的类型一致,也就是=号右边的数据的类型要和=号左边的变量的类型保持一致,如果不一致,那么就需要做类型的转换,分为隐式转换和显示转换。
(1)隐式转换(自动转换):只要满足条件就可以自动完成类型转换的过程。一般的数据范围较小的自动转换成数据范围比较大的类型(基本类型)。
(2)显示转换(手动转换、强制转换):编译器发现类型无法自动转换的时候,就会编译报错,可以通过在前面加上括号类型(比如:byte b=(byte)a;)进行强转。强转是有一定风险的,例如,浮点型数据,如果强行转换为整型,小数部分就需要全部抹去。显示转换一般的指大类型转换为小类型,但是类型大小其实仅限于形容基本数据类型。在引用数据类型中,子类类型的变量可以自动转换为父类类型,但父类类型的变量要转换为子类,就需要进行强制类型转换。

4. 流程控制

  1. if语句:
if(布尔表达式){ //... }
//(1)if中的代码是否执行,主要是看这里的布尔表达式的结果,如果是true则执行代码,如果是false则不执行。

if(布尔表达式){ //... }else{ //... }
//(2)if和else形成了一个组合,特点就是如果if中的代码执行了,那么else的代码就不执行,如果if中的代码没执行,那么else中的代码就会执行。也就是if和else这俩个语句中的代码,一定是有唯一的一个执行,而另一个不执行。

if(布尔表达式){ //... }else if(布尔表达式){ //... }else{ //... }
  1. switch语句:
    switch语句和if很类似,都是用来判断值是否相等,但是switch默认只支持byte、short、int、char这四种类型的比较,JDK8中也允许String类型的变量做对比。使用switch来完成的功能,同样可以使用if来完成,但是使用if完成的功能,使用switch不一定能完成。
  2. for循环:
for(int i=0;i<10;i++){
	System.out.println("briup");
}//常用写法

for(;;){
    System.out.println("briup");
}//死循环

for(;;) System.out.println("briup");
//如果大括号中只有一句代码,那么可以把大括号省去不写。
  1. while循环:
int num = -1;
while(num!=5){
	num = (int)(Math.random()*10);
	System.out.println("num = "+num);
}	
//Math.random()是指java.lang包下Math类中的random方法,用于求取随机数,返回值的类型是double类型。
while(true){
	//...
}
//死循环
  1. do-while循环:do-while循环和while很类似,但do-while循环需要先执行循环体中的代码,然后再进行条件判断,是否可以进行一下次循环。特点:无论如何都会先执行一次大括号中的代码。

if语句和switch语句的对比

(1)如果判断的具体数值不多,而且符合byte、short 、char、int、String、枚举等几种类型。虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
(2) 其他情况:对区间判断和对结果为boolean类型判断使用if,if的使用范围更广。也就是说,使用switch-case的,都可以改写为if-else。反之不成立。

for循环和while循环的对比

使用for循环,经常是在进入循环之前就已经确定循环次数;while循环更适用于循环的退出条件在循环中是不断变化的,循环次数是不确定的情况。

5. 特殊流程控制语句:break,continue,return

(1)break语句用于终止某个语句块的执行,终止本层循环,作用是退出当前循环或者switch代码。
(2)continue语句只能在循环结构中使用,用于跳出当前循环语句块,终止本次循环,继续下一次循环。
(3)return语句的作用是结束一个方法,不管return位于哪层循环中,return将结束整个方法。
注意:
(1)goto语句也可以跳出循环,goto是无条件转移语句,可以随意的控制转移到程序的任意一条语句上,然后执行它,但这样做很容易让程序出错。
(2)label标签:作用是给循环起名字,和break、continue一起使用,让break、continue对指定的循环起作用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值