打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
第三讲:Java语句结构的形成
一、关键字
二、转义字符
\n
换行(LF)、将当前位置移到下一行开头
\r
回车(CR)、将当前位置移到本行开头
\t
水平制表(HT)(跳到下一个TAB位置)
\\
代表一个反斜线字符"\'
\'
代表一个单引号(撇号)字符
\"
代表一个双引号字符
//转义字符public class Test4{ public static void main(String[] args){   System.out.println("转义字符测试");   System.out.println("我想输出一个回车符\n\r");   System.out.println("\t这是一个制表符")   System.out.println("\\");   System.out.println("\"双引号\"")   Sydtem.out.println("\'单引号\'");   }   }
三、运算符与优先级
算数运算符:
表达式:由变量、常量运算符组成的式子。
++:如果是前缀:先对此变量加1,再执行其它操作如果是后缀;先执行其它操作,在对此变量加1.
--:同理,键盘输入:Scanner input=new Scanner(System.in);
运算符
描述
示例
结果
+
加法
5+5
10
-减法
5-3
2
*
乘法
5*3
6
/
除法
10/3
3
%
取余(取模)
10%3
1
++
自增(前、后)
--
自减(前、后)
//运算符public class Test5{ public static void main(String[] args){    int a = 1;    int b = 2;    int c = a+b;    System.out.println(c);    a = 10;    b = 3;    System.out.println(a/b);        System.out.println(a%b);    a=b++;//先赋值后自增   System.out.println("a="+a);   System.out.println("b="+b);   a = ++b;//先自增后赋值    System.out.prinln("a="+a);   System.out.prinln("b="+b)
赋值运算符:
作用是将一个值赋给一个变量、运算顺序从右到左
//赋值运算符short s= 10;s=s + 1;s+=1;System.out.println(s);
关系运算符:
作用是比较两边操作数,结果总是boolean型的。
//关系运算符import java.util.Scanner;//接受键盘输入的工具类System.out.println(x==y)
//创建一个键盘输入的工具Scanner input = new Scanner(System.in);int x1 = input.nextInt();//从键盘接收一个整数System.ouy.println(x1);System.out.println("请输入一个字符串");String s1=input.next();System.out.println(s1);
逻辑运算符:
用于对boolean型结果的表达式进行运算、运算结果总是boolean型,后面结合条件结构来写。
在计算机中,非0即真,0为假
逻辑或:或1则1
逻辑与:全1才1
public class Test6{   public static void main(String[]args){    boolean a = true;    boolean b =false;   //与运算,分别计算表达式两边的结果再做&运算只有两个都为true,结果才为true否则为false   System.out.println(a&b);   //或运算,分别计算表达式两边的结果再做l运算,只要有一个true,结果为true、两边都为false才为false   System.out.println(a|b);   //异运算,两边相同为false,不同为true   System.out.printh(a^b);//非运算System.out.printh(!b);//短路与Sytem.out.println(a&&b);//短路或System.out.pritln(a||b);
运算符练习:
1、通过键盘输入声明初始化一个圆柱体的高和底面半径,pai值是3.14求圆柱体的体积,并显示输出圆柱体的体积Π(r^2)h。
import java.util.Scanner;Scanner  input = new Scanner (System.in);System.out.println("请输入圆柱体的高");int h = input.nextInt();double result = 3.14*r*r*h;System.out.println("圆柱体的体积是:"+result);
2、定义一个五位数的整数,求各个位数上的和。
int num = 54321;int w = num/10000;int q = num/1000%10;int a = num/100%10;int f = num/10%10;int x = num%10;System.out.println(w+q+a+f+x);
3、根据天数(46)计算周数和剩余天数,天数是通过键盘输入。
import java.util.Scanner;Scanner input = new Scanner (System.in);System.out.pritln("请输入天数");int day = input.nextInt();System.out.pritln("周数是:"+(day/7));System.out.pritln("剩余天数“+(day%7));
4、面试题:&和&&的区别?
//&:在逻辑运算时分别计算表达式两边的结果,再做&运算,再做位运算时&按位与//&&短路与运算、先计算左边的表达式。如果结果是false、那么不用计算右边的表达式、直接返回false//如果左边的表达式结果是true、再计算右边的表达式、如果右边的表达式为true、结果为true、否则为false//|和||的原理同上//所以短路 与 或 短路或的计算效率更高,建议使用。boolean a = true;boolean b = false;int c = (!a) & b;
位运算符:
对两个操作数中的每一个二进制位都进行运算
位运算符功能:
1、按位取反~
2、按位与&
3、按位或|
4、按位异或^
~
0
1
0
0
1
1
1
1
1
0
1
1
0
0
0
0
&
1
1
0
0
1
0
1
1
0
1
1
0
1
1
0
1
0
1
0
0
1
0
0
1
|
1
1
0
0
1
0
1
1
0
1
1
0
1
1
0
1
1
1
1
0
1
1
1
1
^
1
1
0
0
1
0
1
1
0
1
1
0
1
1
0
1
1
0
1
0
0
1
1
0
位移运算符:
左移:"a<<b;"将二进制形成a逐位左移b位,最低位空出的b位补0。
带符号右移:"a>>b;"将二进制形式的a逐位右移到b位最高位空出的b位补原来的符号位。
无符号右移:"a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补0。
位移运算正数符示例:
100
00000000
00000000
00000000
01100100
100<<3
00000000
00000000
00000011
00100000
100>>3
00000000
00000000
00000000
00001100
100>>>3
00000000
00000000
00000000
00001100
位移运算符负数示例:
-100
11111111
11111111
11111111
10011100
-100<<3
11111111
11111111
111111100
11100000
-100>>3
11111111
11111111
11111111
11110011
-100>>>3
00011111
11111111
11111111
11110011
面试题:以最快的速度计算8*4结果?
00000000
00000000
00000000
00000000
00001000
8
100000000
00000000
00000000
00000000
0000100032
Ststem.out.println(8<<2);//这个速度是最快的计算速度//0000 1000 8//0010 000 32
使用位移的方法是最快的。
int result = 8<<2;
左移算法:位移数作为2的次幂与操作数相乘
10<<2=40
右移算法:操作数除以位移数的2次幂
通过键盘输入,初始化两个数将这两个数据交换位置后,输入显示交换后的数据。
import java.util.Scanner;Scanner import = new Scanner (System.in);System.out.println("请输入第一个数");int a = input.nextInt();System.out.println("请输入第二个数");int b = input.nextInt();//通过第三个变量来交换位置   //int c = a; // a = b; // b = c;  // a = a+b-(b=a);  //通过加减计算交换位置   // int a = 1;    //int b = 2;   // a = a+b;  //  b = a-b;    //a = a-b;    //通过表达式交换位置    //a = 1;    //b = 2;    //a=a+b-(b=a);    //通过异或,两个数交换位置最快的方式    a = a^b;    b = a^b;    a = a^b;    //乘除         System.out.println("a="+a+",b="+b);//不通过第三个变量如何交换两个数
三目运算符:
x?y:z
x为boolean类型表达式,先计算x的值,若为true,整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。
从键盘输入一个成绩,判断该分数是否及格。
三目运算符优先级
import java.util.Scanner;System.out.pintln("请输入一个成绩");Scanner input = new Scanner(Sysyem.in);  int score = input.nextInt();  //string表示一个字符串类型、不是基本的数据类型    string s = score>=60?"及格":"挂科";  System.out.println(bool);
运算符优先级表:
优先级
运算符
综合性
1
() []
从左到右
2
!+(正)-(负)~ --
从右到左
3
*  / %
从左到右
4
(加)+(减)-
从左到右
5
<< >> >>>
从左到右
6
<<=>>=instanceof
从左到右
7
== !=
从左到右
8
&(按位与)
从左到右
9
^
从左到右
10
|
从左到右
11
&&
从左到右
12
||
从左到右
13
?:
从右到左
14
=  +=  -=  /=  %=  &=  |=  ^=  ~=    <<=    >>=  >>>=
从右到左
四、分支语句
if条件结构是根据条件判断之后再做处理
简单判断语句
if(表达式){
执行语句;
}else{
执行语句;
}
如果.......那么
执行过程:当程序执行到if时,首先会判断()里面的表达式值,如果表达式的值为真那么就执行()后{}里的执行语句,如果为假,那么就执行else后面{}里的执行语句
&、|、^、&&、||、!、==
案例练习题:
1、输入一个字符、判断是大写字母或者是小写字母,输入提示信息
import java.util.Scanner;Scanner import = new Scanner(system.in);system.out.println("请输入一个字母");int c = input.nextInt();if(c>=65 && c<=90){system.out.println("您输入的是一个大写字母"+(char)c);}else{System.out.println("请输入一个小写字母"+(char)c);
2、写一个程序、判断哪一年是闰年(被四整除但不能被100整除能被400整除)是闰年否则是平年。
System.out.println("请输入年份");int year = input.nextInt();if(Year%4==0 && year%100!=0) || yeae%400==0){System.out.println("是闰年");}else{System.out.println("是平年");
分支嵌套
if(表达式1){
执行语句1;
}else if(表达式2){
执行语句2;
}else if(表达式3){
执行语句3;
}else{//可有可无
执行语句4;
}
执行过程:当程序执行到if时,首先会判断( )表达式1的值,如果为真,那么就执行{}里面的执行语句1;然后这个if-else结束。如果表达式1的值为假,那么就会继续向下执行,else后面的表达式2、为真就执行语句2、为假就继续向下执行、直到为真、如果所有的表达式的值都不为真,那么就执行else后面{ }里的执行语句;然后这个if-else if结束
案例练习:
1、给出一个百分制成绩,要求输入成绩等级'A','B','C','D','E',90分以上输入'A’,80~89分输出'B’,70~79分输出'D’,60分以下输入'E’。
Scanner input = new Scanner (System.in);System.out.println("输入一个成绩");int score = input.nextInt();if(score>=90){System.out.println("A");}else if(score<90 && score > = 80){System.out.println("B");}else if(score<80 && score > = 70){System.out.println("c");}else if(score<70 && score > = 60){System.out.println("D");}else if(score<60){System.out.println("E");
2、输入两个整数,打印出他们的大小关系、是小于大于还是等于;
Scanner input = new Scanner (System.in);System.out.println("输入第一个数");int score = input.nextInt();System.out.println("输入第二个");int num2 = input.nextInt();if (num1>num2){System.out.println("第一个数大于第二个数");else if(num1<num2){System.out.println("第一个数小于第二个数");}else{system.out.println("第一个数等于第二个数");
3、设计一个程序,根据天气状况选择外出或在家,外出是逛街还是 逛公园,在家是看电影还是玩游戏;
Scanner input = new Scanner (System.in);System.out.println("今天天气如何(1好,2霾"):;int weather= input.nextInt();if(weather ==1){Systrm.out.println("今天天气太好了,我是逛街还是逛公园呢(1逛街2逛公园)");;int flag= input.nextInt();if(flag==2){System.out.prinyln("逛街");}}else if (weather==2){System.out.println("去公园");System.out.println("今天天气不好,我是逛街还是玩游戏呢?(1看电影2玩游戏)");int flag= input.nextInt();if(flag==1){System.out.println("去公园");}else  if(flag==2){System.out.(piintln("玩游戏");}
switch语句规则:
1、表达式的返回值必须是下述几种类型之一,int、byte、char、shart确定的结果,jdk1.7后支持String;
2、case子句中的取值必须是常量,且所有的sase子句中的取值应是不同的;
3、default子句是可选的;
4、break、语句用来在执行完一个case分支后使程序跳出switch语句块;如果case后面没有写break则直接往下执行!
5、case后面的执行体可写{ }也可以不写{ };
语句:
switch(表达式){
case取值1:语句块1;
break;
case取值n:语句块n;
break;
default:语句块n+1;
break;
}
switch与if嵌套
switch(表达式){
sase取值n:语句块n;
if(表达式){.....}
break;
default:语句块n+1;
break;
}
案例练习:
1、编写一个程序实现以下功能:输入:1、2、3、4、5、6、7(分别对应星期一至星期日)其中任何一个数。
import java.util.Scanner;public static void mian(String[] args){Scanner input= new Scanner (System.in);system.out.println("今天星期几");int day = input.nextInt();  switch (day){   case 1:   System.out.println("星期一");   System.out.println("周一比较堵,(1骑膜拜、2坐地铁")); int method = input nextInt();   if(method==1){   System.out.println("地铁出行");   }else{   System.out.println("骑膜拜");   case 2:   break;   case 2:       System.out.println("星期二");   break;   case 3:    System.out.println("星期三");   break;   case 4:    System.out.println("星期四");   break;    case 5:    System.out.println("星期五"); break6;    System.out.println("星期六"); break;   case 6:    System.out.println("星期七");   break7;     default:      System.out.println("地球有点不适合我");   break;   }   }   }
2、输入一个月数,然后输入对应月份有多少天(不考虑闰年)将天数输出。
Scanner input= new Scanner (System.in); system.out.println("请输入月份(1~12"); int day = input.nextInt();       switch (month){case 1 :       System.out.println("31"); break; case 2:       System.out.println("28"); break;   case 3:       System.out.println("31"); break;   case 4:       System.out.println("30"); break;   case 5:       System.out.println("31"); break;   case 6:       System.out.println("30"); break;   case 7:       System.out.println("28"); break;   case 8:       System.out.println("31"); break;   case 9:       System.out.println("30"); break;   case 10:       System.out.println("28"); break;   case 11:       System.out.println("30"); break;   case 12:       System.out.println("回地球"); break;
3、直接用kdk1.7字符串判断、判断两个数是是执行加、减、乘、除操作。
import java.util.Scanner; public static void mian(String[] args){ Scanner input= new Scanner (System.in); System.out.println("请输入第一个数"); int num1=input.next(); ystem.out.println("请输入第二个数"); int num1=input.next(); ystem.out.println("请输入操作符(+、-、*、/"); switch po = input.next(); switch(op){        case"+":     System.out.println("num1+num"+(num1+num2);     break;      case"-":     System.out.println("num1+num"+(num1-num2); break; case"       case"*":     System.out.println("num1+num"+(num1*num2); break;      case "/":     System.out.println("num1+num"+(num1/num2); break;     default;     System.out.println("输入的操作有误"); break;}}
if vs switch
同:都是选择分支语句
异:1、语法不同
2、语句表达式的类型不同,if语句表达式的类型式boolean,switch分支表达式值类型是byte、short、int、枚举,String。
3、适用场景:
if:变量的值在一定的区域之内。
switch:变量的一个定值。
在实现分支判断时,一个好的习惯是把匹配成功率高的放在前面,可以提高效率。
在表达式中判断,我们尽量使用确定的值去跟不确定的值判断
if  vs 三木运算
三目运算都可以使用if语句实现,反之不成立。
Java7 switch支持String的实现原理:
这个新特性是在编译器这个层次上实现的,在编译的过程中,编译器会根据源代码的含义进行转换,不同的Java编译器可能采用不同的方式来转换。
比如:如果switch语句中只包含case语句、那么就可以简单的将其转换成一个if语句。
如果包含一个case和一个default语句、就可以转换成if-else语句。而对于负责的情况(多个case语句)也可以转换成Java7之前的switch语句,只不过使用字符串的哈希值(整数)作为switch语句表达式的值。
五、循环语句
循环语句分为:while、do  while、for
语法:
while(条件表达式){
//语句块;
}
符合条件,循环继续执行,否则退出
特点:先判断再执行
1、计算1~100的整数之和。5050
import java.util.Scanner;public static void mian(String[] args){ int num=2;//计算总数 int i = 1;//增量   while(i<=100){ num+=i; i++; }    System.out.println(num);
2、计算10的阶乘
import java.util.Scanner;public static void mian(String[] args){ int i=1; int num = 1; while(i<=100){ num * =i;    i++;    }    System.out.println(num);    }    }
3、打印100以内的奇数,偶数和3的倍数(不包括100)
import java.util.Scanner;public static void mian(String[] args){ int i=1; while(i<110); if (i%2==0){ System.out.println("偶数"+i); }else{ System.out.println("奇数"+i); } if(i%3==0){ System.out.println("3的倍数:"+i); } i++; }
语法:
do{
循环操作
}whlie(循环条件);
先执行一遍循环操作,符合条件,循环继续执行;否则循环退出
特点:先执行后判断、有可能一次都不执行
1、逆序输出10~0;
import java.util.Scanner;public static void mian(String[] args){ int i = 10; do{ //循环体 System.out.println(i);  i--;  wlile(i>=0);//循环条件  }  }
2、Java阶乘求和1!+2!+....+10!
import java.util.Scanner;public static void mian(String[] args){ int num = 0; int i = 1; do{  int j=1;  int ic=1;//求阶乘和  wlile(j<=i);//循环条件   jc *j;   j++; } num+=jc; i++; } wlile(i<=10); System.out.println(num); } }
语法:
for(初始化参数,判断条件;更新循环变量){
循环体
}
关键字:continue表示跳过当此循环,继续下次循环
for循环的六种写法:
1、标准写法
for(int i=0;i<10;i++)if(i==5){continue ;}System.out.println(i);}
2、表达式1省略,但在外部声明
for(int i=0;;i++){System.out.println(i);}
3、表达2省略,死循环
for(int i=0; i<10;){System.out.println(i);
4、表达3省略,但是要声明再循环内部
for (int i=0;i<10;){ System.out.println(i);i++;}
5、表达式1、3省略,但是要申明在循环的外部和内部
int x = 0;for (;x<10;){System.out.println(x);x++;
6、三个表达式都省略、死循环
for (;;){}
1、打印输出0~200之间能被7整除但不能被4整除的所有整数
for ( int i=0;i<200;i++){if(i%7==0 && i%4!=0){System.out.println(i);}
2、输出10斐波那契(Fibonacci)数列:112358 13  21 34 55(特点:第1、2两个数值为1,从第三个数开始、该数是其前面两个数之和)
int l1=1;int l2=1;int next = 0;Sytem.out.println(n1"+n2"+"");for (int i=0;i<8; i++){ next = n1+n2;    System.out.println(next+"");    n1=n2;    n2=next;    }
多重循环:
多重循环指的是循环之间互相嵌套,被嵌套的称之为内循环,嵌套内循环的称之为外循环,循环可以多重循环。
打印:
*
**
***
****
*****
//外循环控制排数 for (int i=1;i<5;i++){//内循环控制列数 for (int j=1;j<=i;j++){ System.out.println("*");} System.out.println();
打印九九乘法表:
//外循环控制行数for (int i=1;i<=9;i++){//外循环控制列数for (int j=1;j<=1;j++);System.out,println(j+"x"+i+"="+(j*i)+"\"){}System.out.println();}
//外循环控制行数for (int i=1;i<=5;i++){//内部循环for (int j=5;j>0;j--){if(j<=i){System.out.println("*");}else{System.out,println("");} System.out.println();
等腰三角形打印:
//外循环控制行for(int i=1;i<=5;i++);//外循环输出空格for(int j=i;i<5;j++){System.out.println("");}//内循环输出* for (int j=1;j<=i*2-1;j++) System.out.println("*");{ System.out.println();}}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java基础语法
(Java)简单循环语句学习
Java语言基础知识整理汇总
Java基础运算符
《Java语言编程基础立体化实用教程》1-2 学生成绩管理系统的输入输出与评定设计(二)
Day3 第五个知识点
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服