1、算数运算符
==什么是运算符、什么是表达式==
运算符就是对常量或变量操作的符号;表达式的意思是用运算符把常量或变量连接起来符合java语法的式子
举例说明:
int a = 10; int b = 20; int c = a + b; 这里的 ‘=’ ‘+’ 都是运算符; a+b 是表达式
==特别注意单引号的+是算术运算符用于相加;而双引号的+是连接作用不是相加作用。如:==
int a = 10; int b = 20; int c = a+b; System.out.println(c);// 输出结果是30 int a = 10; int b = "20"; int c = a+b; System.out.println(c);// 输出结果是1020
==案例:数值拆分==
需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
分析:
①:使用Scanner键盘录入一个三位数 ②:个位的计算:数值 % 10 123 除以 10(商12,余数为3) ③:十位的计算:数值 / 10 % 10 123 除以 10 (商12,余数为3,整数相除只能得到整数) 12 除以 10 (商1,余数为2) ④:百位的计算:数值 / 100 123 除以 100 (商1,余数为23)
公式总结:
个位 :数值 % 10 十位 :数值 / 10 % 10 百位 :数值 / 10 / 10 % 10 千位 :数值 / 10 / 10 / 10 % 10;
实现代码:
import java.util.*; public class Day02_demo1{ public static void main(String args[]){ Scanner in = new Scanner(System.in); int result = in.nextInt(); int ge = result%10; int shi = result/10%10; int bai = result/100%10; System.out.println("您输入的数字的个位数是:"+ge); System.out.println("您输入的数字的十位数是:"+shi); System.out.println("您输入的数字的百位数是:"+bai); } } int a = 1;
2、赋值运算符
3、关系运算符
4、逻辑运算符
5、位运算符
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。
下表列出了位运算符的基本运算,假设整数变量 A 的值为 60 和变量 B 的值为 13:
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位==都是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 |
public class Test { public static void main(String[] args) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c ); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c ); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c ); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = " + c ); c = a << 2; /* 240 = 1111 0000 */ System.out.println("a << 2 = " + c ); c = a >> 2; /* 15 = 1111 */ System.out.println("a >> 2 = " + c ); c = a >>> 2; /* 15 = 0000 1111 */ System.out.println("a >>> 2 = " + c ); } }
6、三元运算符
完整代码:
public class Day02_demo02 { public static void main(String[] args) { int height1 = 150; int height2 = 210; int height3 = 185; int tempHeight = 0; tempHeight = (height1>height2)?height1:height2; System.out.println("最高的和尚是:"+((tempHeight>height3)?tempHeight:height3)); } } int c = 900; System.out.println("最后的结果是:"+c);
6.1、Java运算符优先级
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | expr++ expr-- | 从左到右 |
一元 | ++expr --expr + - ~ ! | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | > >= < <= | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
7、条件判断语句
完整代码:
import java.util.Scanner; public class Day02_demo3 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入数字:"); int result = in.nextInt(); if (result % 2 == 0) { System.out.println(result + "是偶数"); } else { System.out.println(result + "是奇数"); } } }
完整代码:
import java.util.Scanner; public class Day02_demo4 { public static void main(String[] args) { // 创建控制台输入类对象 Scanner in = new Scanner(System.in); //提示用户操作 System.out.println("请输入成绩:"); // 获得用户输入的数字 int result = in.nextInt(); //判断数字的区间 if(result>=95 & result<=100){ System.out.println("奖励自行车一辆"); }else if(result>=90 & result<=94){ System.out.println("游乐场玩一次"); }else if(result>=80 & result<=89){ System.out.println("变形金刚玩具一个"); }else { System.out.println("胖揍一顿....."); } } }
8、选择语句
完整代码:
import java.util.Scanner; public class Day02_demo5 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入周几:"); int result = in.nextInt(); switch (result){ case 1: System.out.println("跑步"); break; case 2: System.out.println("游泳"); break; case 3: System.out.println("慢走"); break; case 4: System.out.println("骑单车"); break; case 5: System.out.println("拳击"); break; default: System.out.println("躺平休息"); } } }
9、循环语句
-
for循环
-
while循环
-
do while循环
完整代码:
public class Day02_demo5 { public static void main(String[] args) { int sum = 0; for(int i=1;i<=5;i++){ sum = sum+i; } System.out.println("1加到5的和是:"+sum); } }
完整代码:
public class Day02_demo6 { public static void main(String[] args) { int sum = 0; for(int i=1;i<=100;i++){ if(i%2==0){ sum = sum+i; } } System.out.println("1~100之间的偶数和是:"+sum); } }
完整代码:
/** * 一个三位数的数字,个位十位百位的立方和仍等于原数,那么这个数就被称为是水仙花数 */ public class Day02_demo5 { public static void main(String[] args) { for (int i=100;i<1000;i++){ int ge = i%10; int shi = i/10%10; int bai = i/100; if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){ System.out.println(i+"是水仙花数"); } } } }
需求变更了,不要一次性打印出来,我要的效果是每行打印两个水仙花数,代码应该怎么写?
完整代码:
/** * 一个三位数的数字,个位十位百位的立方和仍等于原数,那么这个数就被称为是水仙花数 */ public class Day02_demo6 { public static void main(String[] args) { int count = 0;// 定义一个记录行个数的变量,用于控制换行 for (int i=100;i<1000;i++){ int ge = i%10; int shi = i/10%10; int bai = i/100; if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){ System.out.print(i+"是水仙花数"); count++;// 记录数自动加1 if(count%2==0){// 用记录数来判断是否是偶数个 System.out.println();//换行 } } } } }
完整代码:
public class Day02_demo7 { public static void main(String[] args) { int count = 0;//记录次数 double paper = 0.1; while (paper<8848000){ paper = paper*2; count++; System.out.println(paper); } System.out.println("要折"+count+"次"); } }
10、跳转控制语句
-
continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行
-
break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环
完整代码:
public class Day02_demo8 { public static void main(String[] args) { for (int i=1;i<100;i++){ if(i%10==7 || i/10%10==7 || i%7==0){ System.out.println(i+"是要喊过的数字,所以过"); continue;//只是跳过本次循环,并没有终止循环; // break;//如果是break那么循环就终止了 } } } }
11、Random类
作用:用于产生一个随机数
使用步骤:
第一步:导包
import java.util.*;
第二步:创建对象
Random r = new Random();
第三步:获取随机数
int number = r.nextInt(10);// 10以内的随机数,取值范围是 [0,10}
案例:
需求:中午不知道吃什么,产生随机数,如果是1就吃黄焖鸡,如果是2就吃螺蛳粉,如果是3就吃木桶饭,如果是4就吃花甲粉,都不是就不吃了
完整代码:
import java.util.Random; public class Day02_demo9 { public static void main(String[] args) { Random r = new Random(); int number = r.nextInt(5); System.out.println("产生的随机数是:"+number); switch (number){ case 1: System.out.println("恭喜黄焖鸡中奖"); break; case 2: System.out.println("恭喜螺蛳粉中奖"); break; case 3: System.out.println("恭喜木桶饭中奖"); break; case 4: System.out.println("恭喜花甲粉中奖"); break; default: System.out.println("不吃了"); break; } } }