运算符
什么是运算符?
- 对常量和变量进行操作的符号称为运算符。
运算符的分类
-
算数运算符:+、-、*、/、%、++、–
++、–单独使用放在操作数前面和后面效果一样;
参与运算- 放在操作数的前面,先自增或自减,然后再参与运算;
-放在操作书后面,先参与运算再自增或自减;
- 放在操作数的前面,先自增或自减,然后再参与运算;
-
赋值运算符:=、+=、-=、*=、/=、%=
-
比较运算符:==、!=、<、>、<=、>=、instanceof
-
逻辑运算符:&并且、|或者、!非、^异或,&&短路与、||短路或
&&执行效率更高,先比较前一半,如果可以确定最终值则不执行后一半。 -
位运算:&、|、^、~按位取反、<<左移、>>右移、>>>无符号右移。
- 用法:
&有0则0;
|有1则1;
^:相同则0,相反则1
~:按位取反,0变1,1变0;
- 用法:
-
三目运算符:
- (关系表达式)?表达式1:表达式2;
计算关系表达式的值,如果关系表达式为true运算后的结果式表达式1;否则是表达式2;
- (关系表达式)?表达式1:表达式2;
键盘录入的基本格式
为什么要键盘录入?
1. 为了让程序的数据更符合开发的数据;
2. 让程序更灵活一点;
如何实现键盘的录入?
格式:
- 导包:
import java.util.Sanner;
2.创建键盘录入对象:
Scanner sc=new Scanner(System.in);
3.通过对象获取数据
int x=sc.nextlnt();
当然除了录入整形可也以录入其它数据类型。
流程控制语句
什么是流程控制语句?
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响,所以我们必须清楚每条语句的执行流程,而且很多时候要通过控制语句的执行顺序来实现我们要完成的功能。
流程控制语句的分类
顺序结构
选择结构
循环结构
顺序结构
程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数代码都是这样执行的。
选择结构
选择结构(if)
也被称为分支结构,选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
- 选择结构的分类:if语句、switch语句;
- if语句的格式:
- 格式一:
package org.westos.Select_Strict;
import java.util.Scanner;
public class IF_01 {
public static void main(String[] args) {
int a=1;
int b=2;
if (a<b){
System.out.println("true");
}
}
}
//true
//格式
/*if(比较表达式或boolean){
语句体;
}*/
先计算比较表达式的值,看返回的是true还是false。
如果是true,就执行语句体;
如果是false,就不执行语句体;
- 格式二:
package org.westos.Select_Strict;
import java.util.Scanner;
public class IF_01 {
public static void main(String[] args) {
// //比较两个数的大小
int a=10;
int b=20;
int max;
if (a>b){
System.out.println('a');
}else {
System.out.println('b');
}
}
}
//b
//格式
/*if(比较表达式){
语句体1;
}else{
语句体2;
}
*/
先计算比较表达式的值,看返回的是true还是false。
如果是true,就执行语句体1;
如果是false,就执行语句体2;
- 格式三
package org.westos.Select_Strict;
import java.util.Scanner;
public class IF_01 {
public static void main(String[] args) {
// //输入一个分数,输出分数所在的等级
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
if (x>=90&&x<=100){
System.out.println("优秀");
}else if(x>=80&&x<90){
System.out.println("良好");
}else if(x>=70&&x<80){
System.out.println("良好");
}else if(x>=60&&x<70){
System.out.println("良好");
}else if(x>=0&&x<60){
System.out.println("良好");
}else {
System.out.println("输入正确的分数");
}
}
}
//85
//良好
//格式
/*if(比较表达式){
语句体1;
}else if(){
语句体2;
}else if(){
语句3;
}
...
else{
语句体n+1;
}
*/
注意事项:
- 比较表达式无论简单还是复杂,结果必须是boolean类型;
- if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略;
- 一般来说,有左大括号就没有分号,有分号就没有左大括号;
- 三元运算符能实现的,if语句都可以实现,反之不成立;
什么时候if语句实现不能用三元运算符改进?
当if语句控制的操作是一个输出语句的时候不能,因为三元运算符是一个运算符,运算符操作完就应该有个结果而不是一个输出。
switch语句
package org.org.westos.practice;
import java.util.Scanner;
public class switch01 {
public static void main(String[] args) {
//给定一个数值输出对应星期
Scanner rc=new Scanner(System.in);
int x=rc.nextInt();
switch (x){
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;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("范围1~7,不在范围!");
}
}
}
/*6
星期六*/
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
…
default:
语句体n+1;
break;
}
格式解释:
-
switch表示这是switch语句
- 表达式取值:byte,short,int,char
- JDK5以后可以使枚举;
- JDK7以后可以是String;
-
case后面跟的是要和表达式进行比较的值;
-
语句体可以是一条或者多条;
-
break表示中断,结束switch语句;
-
default语句表示所有情况都不匹配的时候,执行的内容。
注意事项: -
case后面只能是常量,不能是变量,而且多个case后面的值不能相同;
-
default可以省略,但不建议,它的作用是让代码更健壮;
-
break可以分情况省略,省略之后会有case穿透现象;
-
default不一定要放在最后,可以放在任意位置;
-
switch语句结束的条件:遇到break或者执行到末尾;
switch和if语句的区别
if语句适用场景:
- 针对结果是boolean类型的判断;
- 针对一个范围的判断
- 针对几个常量的判断
switch语句使用的场景:
- 针对几个常量值得判断
循环结构
什么是循环结构?
循环语句可以在满足循环条件的情况下,反复执行一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时需要在合适的时候把循环判断条件是修改为false,从而结束循环,否则循环将一直执行下去,形成死循环;
分类
- for循环;
- while循环;
for循环
package org.org.westos.practice;
public class for02 {
public static void main(String[] args) {
//计算0~100之间所有偶数的和以及奇数和
int S1=0,S2=0;
for(int i=0;i<=100;i++){
if(i%2==0){
S1+=i;
}else{
S2+=i;
}
}
System.out.println("偶数和为"+S1+","+"奇数和为"+S2);
}
}
//偶数和为2550,奇数和为2500
格式
for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程
- 执行初始化表达式语句;
- 执行判断条件语句,看其返回值是true还是false;是ture就继续执行,是false就结束循环;
- 执行循环体语句;
- 执行控制条件语句;
- 回到第二句继续;
注意事项
a:判断条件语句无论简单还是复杂结果是boolean类型。
b:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
c:一般来说:有左大括号就没有分号,有分号就没有左大括号
while语句
package org.org.westos.practice;
public class while03 {
public static void main(String[] args) {
//统计1000以内的水仙花数以及个数
int i=100;
int num=0;
while (i<1000){
i++;
int n1=i%10; //个位上的数字
int n2=i/10%10; //十位上的数字
int n3=i/100%10; //百位上的数字
double result=Math.pow(n1,3)+Math.pow(n2,3)+Math.pow(n3,3);
if(result==i){
num++;
System.out.println(result);
}
}
System.out.println("一共有"+num+"个水仙花数");
}
}
/*153.0
370.0
371.0
407.0
一共有4个水仙花数*/
基本格式:
while(判断条件语句) {
循环体语句;
}
完整格式
初始化条件语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
执行流程
a:执行初始化条件语句;
b:执行判断条件语句,看其返回值是true还是false
- 如果是true,就继续执行
- 如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续
do while
至少执行一次循环体;
三种循环语句的区别
- do…while至少执行一次循环体;而for,while必须先判断条件是否成立,然后决定是否执行循环体语句。
- 如果你想在循环接收后继续使用控制条件的那个变量,用while循环,否则用for循环。
- 优先考虑for循环,因为变量及时的从内存中消失,可以提高内存的使用效率;
案例
package org.org.westos.practice;
public class case04 {
public static void main(String[] args) {
//使用for循环打印出层级*
for(int i=1;i<6;i++){
for (int j=1;j<i;j++){
System.out.print("*");
}
System.out.println("\n");
}
}
}
// *
// **
// ***
// ****
// *****
注意
System.out.println("*");和System.out.print("*");的区别
控制跳转语句
控制语句的跳转和中断
分类
break中断
continue继续
return返回
break的使用场景
- 在选择结构的switch中使用;
- 在循环语句中使用;
作用
退出单层循环
退出多层循环
- 让循环语句带上标签
- 格式:标签名:语句
public class ForDemo66 {
public static void main(String[] args) {
//给循环加个标记
wc:for(int i=1;i<=5;i++){
nc:for(int j=1;j<=4;j++){
if (j == 2) {
break wc; //根据标记来终止哪个循环
}
System.out.print("*");
}
System.out.println();
}
}
}
continue
在循环语句中使用;
作用:跳出一次循环执行下一次;
return
作用:退出一个方法
跳转到上层调用的方法。
结论
- break:结束单层循环;
- return:结束当前方法;
- continue:结束当前循环,执行下一次循环;