Java基础02:运算符、流程控制语句、随机数

系列文章目录

Java基础01:JAVA概述、基础语法
Java基础02:运算符、流程控制语句、Random随机数
Java基础03:IDEA、快捷键
Java基础04:数组、二维数组
Java基础05:方法
Java基础06:Debug、进制
Java基础07:面向对象基础
Java基础08:API、字符串String、StringBuilder
Java基础09:ArrayList集合
Java基础作业



运算符

算数运算符

分类:

	+:加法
	-:减法
	*:乘法
	/:除法(java中整数相除,结果只能得到整除。如果想得到小数,需要将其中某一个或两个数据变成小数类型)
	%:取余(取模)
	++:自增
	--:自减

+

注意:

  1. +号在字符参与运算的时候,将字符对应的码表值进行运算 ‘a’ + 2
  2. +号在字符串参与运算的时候,做字符串的拼接
  3. 字符串字符进行+操作的时候是直接把字符的内容拼接进去,不会把字符转换成数字
  4. ascii码表值:0=48,A=65,a=97。
System.out.println("5 + 5 =" + 5 + 5);	// 5 + 5 =55
System.out.println("5 + 5 =" + (5 + 5));// 5 + 5 =10
System.out.println(5 + 5 + "=10");// 10=10
System.out.println("a"+'a');//aa
System.out.println('a'+10+"bc"+'d'+10);// 107bcd10  java运算自左向右   
  
System.out.println('a'+0);//获取a的码表值

%

%应用场景:

  1. 判断奇偶数(一个数对2取余,结果如果为0说明是偶数,不是0说明是奇数)
  2. 获取一个数的百位(一个数/100再对10取余的结果就是百位数.123/100%10)
  3. 判断一个数是否是某个数的倍数。
	num%2 //结果为0,说明是偶数;结果不是0,就是说明是奇数
	
	num/1%10//个位
	num/10%10//十位
	num/100%10//百位
	num/1000%10//千位

	num%5  //结果为0 说明是5的倍数

++、--

a++; //相当于 a = (a的数据类型) (a+1);
a--;  //相当于 a = (a的数据类型) (a-1);

注意:

++:自增
	单独使用:不管放在变量的前面还是后面,都是将变量+1
	参与运算:
		如果++放在变量的前面,是先将变量+1.然后再参与运算
		如果++放在变量的后面,是先将变量的原值进行参与运算。然后再+1
			

--:自减
	单独使用:不管放在变量的前面还是后面,都是将变量-1
	参与运算:
		如果--放在变量的前面,是先将变量-1.然后再参与运算
		如果--放在变量的后面,是先将变量的原值进行参与运算。然后再-1
int num = 10;
num++;
System.out.println(num);//11

int num1 = 10;
int num2 = 20;	     
int sum = (num1++) + (--num1) + (num2++) + (num2*10);//10+10+20+210=250
System.out.println(sum);//250
System.out.println(num1);//10
System.out.println(num2);//21

赋值运算

1.基本赋值运算符:=
代表将右侧的数据交给左侧的变量.
2.扩展赋值运算符:+=,-=,*=,/=,%=
需要注意一点: 扩展赋值运算符底层自带强转功能

	int a=10;
	a+=2;//相当于 a = a+2  //底层就是 a = (int)(a+2)
	a-=1;//相当于 a = a-1

在这里插入图片描述

比较(关系)运算符

在这里插入图片描述

逻辑运算符

短路:左边表达式的结果确定之后,如果整个表达式的结果已经被确定了,就不会去执行右边的表达式
在这里插入图片描述
在这里插入图片描述

三目运算符

在这里插入图片描述

	public static void main(String[] args){
		int a = 10;
		int b = 20;
		int max = a > b ? a : b;
		System.out.println("a和b中的最大值:"+max);
	}

位运算符

位运算符指的是二进制位的运算,先将十进制数转成二进制后再进行运算。
在这里插入图片描述

    public static void main(String[] args) {
        System.out.println(8>>1);//8>>1   = 8/(2的1次方) = 4
        System.out.println(8<<1);//8>>1   = 8*(2的1次方) = 16
        System.out.println(8>>2);//8>>2   = 8/(2的2次方) = 2
        System.out.println(8<<2);//8<<2 =  8*(2的2次方) = 32
    }

异或的特点:一个数,被另外一个数,异或两次,该数本身不变。

案例:数据交换

需求:已知两个整数变量a = 10,b = 20,使用程序时间这两个变量的数据交换,不允许使用三方变量。最终输出a = 20,b = 10。

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        a = a ^ b;// a = 10 ^ 20;
        b = a ^ b;// b = 10 ^ 20 ^ 20;
        a = a ^ b;// a = 10 ^ 20 ^ 10;
        System.out.println(a);//20
        System.out.println(b);//10
    }

流程控制语句

流程控制语句:即通过一些语句,来控制程序的【执行】流程
流程控制语句分为:
⚫ 顺序结构
⚫ 分支结构(if,switch)
⚫ 循环结构(for,while,do…while)

顺序结构

顺序结构语句是Java程序,默认的执行流程,按照代码的先后顺序依次执行。从上到下,从左到右

分支结构

if语句

if(){}

注意事项:
如果大括号中的语句体只有一行代码的时候可以把大括号省略.但是强烈建议永远不要省略
在这里插入图片描述

if(){}else{}

注意事项:
①. 一旦执行了某一个大括号中的语句体,整个if语句就结束了.不可能出现执行两个语句体的情况.
②. 有else{}的情况下,不可能一个语句体都不执行.因为else{}是收尾工作,他的作用就是前边的条件不满足,那么就会执行它.
在这里插入图片描述

if(){}else if(){}else{}

注意事项:
首先开头有且仅有一个if,后面会有0个到多个else if语句,最后可能没有else,有也仅仅只会有一个else.
在这里插入图片描述
在这里插入图片描述

switch语句

在这里插入图片描述
格式说明:
⚫ 表达式:(将要匹配的值) 取值为byte、short、int、char,JDK5以
后可以是枚举,JDK7以后可以是String。
⚫ case:后面跟的是要和表达式进行比较的值 (被匹配的值);只支持byte,short,int ,char,String ,枚举,不支持long和boolean。
⚫ break:表示中断,结束的意思,用来结束switch语句。
⚫ default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。

执行流程:
① 首先计算表达式的值。
② 依次和case后面的值进行比较,如果有对应的值,就会执行相应的语
句,在执行的过程中,遇到break就会结束。
③ 如果所有的case后面的值和表达式的值都不匹配,就会执行default
里面的语句体,然后程序结束掉。

注意事项:
① case给出的值不允许重复
② case后面的值只能是常量,不能是变量
③ 不写break,发生case穿透,遇到break后才退出。
④case和default都不自带break;default放最后并不代表结束switch。default后也可以加break,只是平常放最后省略了。

循环结构

for循环

在这里插入图片描述
思考:
①初始化语句会执行几次?只有在最开始的时候执行了一次
②什么情况下循环体一次都执行不了?如果第一次进行条件判断的时候结果为false则循环体一次都执行不了

注意事项:
for循环的变量在小括号当中定义,只有循环内部才可以使用。

while循环

在这里插入图片描述

do-while循环

在这里插入图片描述

三种循环区别

1、for循环和while循环的区别
⚫for循环的特点:初始化表达式只在当前的循环范围内有效。出了循环的大括号以外,就无法使用了(tips:for循环的初始化表达式,也可以定义在外面)
⚫while循环的特点:初始化表达式是定义在循环的外面。出了循环也可以继续使用。
2.do-while循环和for、while循环的区别
⚫do-while循环会至少先执行一遍循环体。然后再做条件判断
⚫而for、while循环都是先判断条件。如果条件满足才执行循环体。如果条件不满足,就直接结束循环

死循环格式:

for(;;) { }
while(true) { }
do{ }while(true);

跳转控制语句

break;

在循环过程中,碰到break整个循环就终止
应用场景:break只能出现在循环中或者switch中

continue;

如果在循环过程中碰到了continue,则跳过本次循环,继续下次循环

跳转标号循环

break和continue只能跳出、跳过自己所在的那一层关系,如果想要跳出、跳过指定的一层就可以加入标号。

标号名:while(true){
          switch (表达式){
              case 1:
                  break 标号名;

          }
      }
for1:for(;;){
          for(;;){
              if(true){
                  break for1;
              }
          }
      }

Random随机数

在这里插入图片描述

random.nextInt()

random.nextIn()的作用是随机生成一个int类型,因为int 的取值范围是 -2147483648——2147483647 ,所以生成的数也是处于这个范围,下面是示例代码。

Random random = new Random();
System.out.println("int:"+random.nextInt());
System.out.println("Integer.MIN-Integer.MAX:"+Integer.MIN_VALUE+"-"+Integer.MAX_VALUE);

输出:
int:-1849568817
Integer.MIN-Integer.MAX:-2147483648-2147483647

在上述代码中,我们使用了Integer.MIN_VALUE和Integer.MAX_VALUE,这两个是Integer类设定的最小值和最大值。在Java的八种基础数据类型中,除了boolean为true和false之外,其他的七种类型都是有MIN_VALUEMAX_VALUE这两个值的,所以我们可以通过这几种基础数据类型相对应的引用数据类型+.MIN_VALUE或.MAX_VALUE就可以得到基础数据类型的最大值和最小值。

random.nextInt(int bound)

random.nextInt(int bound)方法的作用是生成一个0-参数bound范围内的随机数,但是要记住,参数bound必须是正数,不可为负数。
random.nextInt(int bound) 是[0,bound)左闭右开

random.nextLong()

random.nextLong()会随机生成一个Long类型,同理,因为Long的取值范围是 -9223372036854775808——9223372036854775807,所以也会生成一个这个区间的数。

random.nextDouble()

random.nextDouble()会生成一个0-1的double类型,而不是生成double取值范围中的数

random.nextFloat()

random.nextFloat()会生成一个随机的0-1之间的浮点型,大体同double一样。

random.nextBoolean()

random.nextBoolean()会生成一个true或false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值