3、运算符
算术运算符
关系运算符
逻辑运算符
字符串连接运算符
三元运算符
赋值类运算符
1、算术运算符
+求和
-相减
*乘积
/商
%求余
++自加(b=k++是先赋值再自加1,b=++k是先自加1再赋值。
e=100;
system.out.println(e++);100
system.out.println(e);101
--自减
运算符有优先级,没有必要刻意记住优先级,不确定就用括号确定优先级
2、关系运算符
>大于
<小于
==等于
<=小于等于
>=大于等于
!=不等于
3、逻辑运算符(逻辑运算符要求两边的算子必须是布尔类型,并且最终的返回结果也是布尔类型)
& 与
| 或
! 非
^ 逻辑异或
&& 短路与(运算结果跟逻辑与完全相同,但是在int x=10,inty=8;system.out.println(x 使得y的值会自加,而int x=10,inty=8;system.out.println(x || 短路或 4、赋值类运算符; 基本赋值运算符 = 先执行等号右边的表达式,将执行的结果赋值给右边的变量。(k++)不是这样的 扩展的赋值运算符 +=:i+=5等同于i=i+5 -=:i-=5等同于i=i-5 *=:i*=5等同于i=i*5 /=:i/=5等同于i=i/5 %=:i%=5等同于i=i%5 byte b=10; b=b+5; 编译会报错,因为b是byte类型,5是int类型,加到一起是int类型,这是必须要进行变量数据类型转换。 改为b=(byte)(b+5); byte b=10; b+=5; 编译可以通过,因为b+=5;和b=b+5;并不相同,而是与b=(byte)(b+5)相同。 结论:扩展类的赋值运算符不改变运算结果类型。 5、java中的“+”运算符; 1、加法运算:+运算符两边是数字,进行的是加法运算 2、字符串的连接运算:1、+号两边都是字符串2、+号两边有一个是字符串,返回结果还是字符串。 3、在一个表达式当中可以出现多个“+”,在没有添加小括号的前提下,遵守从左向右顺序依次运算。 system.out.println(10+20+"30")输出结果是3030 system.out.println(10+(20+"30"))输出结果是102030 int a=10; int b=20; system.out.println(“10+20=”+a+b)//“10+20=1020” system.out.println(“10+20=”+(a+b))//“10+20=30” system.out.println(a+"+"+b+"="+(a+b))//“动态表示a+b” 引用类型string string是sun公司在javase中提醒的字符串类型 string.class字节码文件, string是引用数据类型,s是变量名,“abc”是string类型的字面值 string s=“abc”; 6、三元运算符: 布尔表达式?表达式1:表达式2; 三元运算符执行原理;当布尔表达式的结果是真的时候选表达式1的结果作为表达式结果否则选择表大四2作为执行结果。 boolea sex=false; sex?"nan":"nv" 编译会报错,因为"nan"和"nv"不是语句 boolea sex=false; string c=sex?"nan":"nv" system.out.println(c); 编译通过 string c=sex?"nan":'nv'//编译不通过,不符合语法,又有字符串又有字符是无法赋值给同一个类型的变量。 system.out.println(c); //编译通过,println既可以打印字符有可以打印字符串 system.out.println(string c=sex?"nan":'nv'); 7、控制语句 if语句语法:四种编写方式(只要一个分支执行程序在执行完该分支后程序立刻就结束) 1、if(布尔表达式) { Java语句 } 2、if(布尔表达式) { java语句 } else{ java语句 } 3、if(布尔表达式) { java语句 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } 4、if(布尔表达式) { java语句 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } else if(布尔表达式) { java表达式 } else { java表达式 } 只要有else的语句就保证至少有一个分支执行,但是没有else语句,就不是一定执行至少一个分支。 在写代码时必须要缩进保证可读性。 if语句中如果只有一条java语句时,大括号可以不写,但这种方式不推荐使用但别人写要能看 键盘输入的语句 public class KeyInputTest { public static void main(String[]args) { //创建键盘扫描器对象 java.uti1.Scanner s=new java.util.Scanner(System.in); //第二步;调用Scanner对象的next()方法开始接收输入 //当用户输入的时候,并且最终敲回车键的时候,键入的信息会自动赋值给userInputContent //程序执行到这里,用户输入的信息已经在内存条中了 String userInputContent=s.next();//输入字符串 int userInputContent=s.nextint();//输入数字值 //将内存中的数据输出到控制台 system.out.println("您输入了"+userInputContent); } } 判断天气: public class KeyInputTest { public static void main(String[]args) { //创建键盘扫描器对象 java.uti1.Scanner s=new java.util.Scanner(System.in); system.out.println("欢迎使用本系统"); system.out.println("说明1:1表示下雨,0表示晴天"); system.out.println("说明2:1表示男,0表示女"); system.out.println("说明3:温度为数字"); system.out.println("请输入当前天气情况:"); String userInputContent=s.next("请输入当前天气情况:");//提示输入天气 int weather=s.nextint();//输入天气 //将内存中的数据输出到控制台 判断天气情况 if ( weather==1) { system.out.println("下雨天"); { else if(weather==0) { system.out.println("下雨天"); } } } 控制语句: 选择结构 1、switch语句 2、语法结构switch也是选择结构,也是分支语句 语法: switch(int或者string类型的字面值或者变量) { case int或者string类型的字面值或者变量; java语句 break; case int或者string类型的字面值或者变量; java语句 break; case int或者string类型的字面值或者变量; java语句 break; ......... default://所有情况都不符合 java语句 } 3、switch语句的执行原理: switch后面小括号当中的数据和后面case后面的数据进行一一匹配,匹配成功的分支执行 自上而下的顺序以此匹配 4、匹配成功的分支执行,分支当中最后有break语句的话,整个switch语句终止。 5、匹配成功的分支执行,分支中没有break语句的话,直接进入下一个分支执行,不进行匹配。这种现象被称为穿透的现象。 6、所有分支都没有匹配成功,当有default的语句时,会执行default分支里面的语句。 7、switch后面和case后面只能是int或者string类型的数据,不能参测其他类型,其他类型的数据当作为参数时会被默认转换成int和string类型,并且在大转小的时候会报错可能精度错误。 8、case可以合并; int i=10; switch(i) {case1:case2:case3:case10; system.out.println("Test code!"); }//在i为1,2,3,10的时候执行语句。 pubulic class switch_Test { public static void main(string[]args { long X=100L; switch(X){}//编译会报错,因为X是长整型,默认转换成int类型后,报错可能损失精度。 long X=100L; switch((int)X){}//这次编译通过,因为已经转换完全,这是就是用括号中的数据进行判断。 } } 实现计算器: 思路:1、选择所有数据从键盘上输入 2、使用switch语句进行判断 3、需要从控制台输入三次: *第一个数字:10 *输入运算符+ *请输入第二个数字:20 *运算结果:10+20=30 public class switch04 { public static void main(string[]args) { java.util.scanner s=new java.util.scanner(system.in); system.out.println("欢迎使用简单计算器系统"); system.out.println("请输入第一个数字"); int num1=s.nextint() system.out.println("请输入第一个运算符"); int operator=s.next(); system.out.println("请输入第二个数字"); int num2=s.nextint(); switch(operator) { case"+": result=nuum1+num2; break; case"-": result=nuum1-num2; break; case"*": result=nuum1*num2; break; case"/": result=nuum1*num2; break; default: system.out.println("只能计算加减乘除"); } system.out.println("计算结果为"+result); } } 循环语句: 循环结构:在程序当中总有一些代码必须重复执行;需要重复执行的代码放在循环体里,在联合计数器,共同控制这段按需要反复之行的代码。 总共有三种循环: for循环 while循环 do..while循环 1、for循环 语法; for(初始化表达式;布尔表达式;更新表达式) { 需要重复的代码片段 } 1、初始化表达式、布尔表达式、更新表达式都不是必须的必须的是两个分号 2、初始化表达式最先执行,并且只在循环中执行一次 3、先进行初始换表达式,1、判断布尔表达式,2、执行循环体,3、执行更新表达式,1、然后布尔表达式,2、若为真然后执行循环体,3、执行更新表达式,1然后布尔表达式。 public class for_Test { public static void main(string[]args) { int i=0; for(;i<=10;i++) { system.out.println("i="+i);//此时只能输出i=0,因为for循环对变量的作用只在for循环中有作用,出了for循环就不会有任何作用。 } } } 2、while循环: 语法: 1、while循环的语法结构: while(布尔表达式) { 循环体; } 语法结构: 执行原理 先判断布尔表达式,再执行循环体,判断布尔表达式 执行次数 0到N 3、do......while 循环 语法结构: do{ 循环体; } while(布尔表达式); 执行原理 先执行再判断 执行次数 1到N次 注意事项注意while(布尔表达式)后面的分号别丢了。 控制循环的语句; 1、break语句:跳出内层for循环,使得循环结束。不影响外层循环 forA:for (int j=0;j<=9 ; j++) { forB:for (inti=0;i<=10 ;i++ ) { if(i==5) { break forA//此时可以直接跳出最外层循环 } } } 2、comtinue语句:跳出本次循环,进入下一次循环。不影响外层循环 方法: 方法的基础语法以及方法的重载机制:overload 某个功能的代码只需要写一遍,使用这个功能只需要传递具体的数据即可,这个功能完成后返回一个最终的结果。这样的代码可以重复的使用这就是方法 使用这个方法我们成为调用invoke,方法在c语言中又叫做函数。 方法的定义可以在任何位置,因为只有调用时才有顺序,但是不能在方法中再定义方法,在方法体中代码遵守自上而下的顺序依次执行。 语法 语法结构:[修饰符列表]返回值类型 方法名(形式参数列表) { 方法体; } 注意: 1、关于修饰符选项: 可选项不是必须的 目前统一写成:public static【以后讲】 方法的修饰符列表当中有static关键字的话,怎么调用这个方法? 类名.方法名(实际参数列表) 2、返回值类型: 返回值是调用方法后方法最终给出的结果 返回值类型包括所有基本数据类型和所有的引用数据类型 有些方法没有返回值,那么返回值类型必须写个void 写代码的时候,return语句必须在没有void关键字的所有方法里存在,但是return的值必须与方法定义的时候返回值类型必须要相同。 写代码return 值;就可以返回值了,只要带有return的语句执行,这个return语句所在的方法结束。 3、方法名; 只要是合法的标识符就行 方法名最好见名知意 方法名遵序驼峰命名规则 方法名首字母要求小写,后面每一个单词的首字母大写 4、形式参数列表 形参是局部变量,且可以有多个形参,不同的形参用“,”隔开,调用形参时实参必须与形参的数据类型相同。实参列表和形参列表必须满足数量相同,且类型对应相同。 如果类型不同将会进行自动数据类型转换。 5、方法体 方法体必须由大括号括起来 方法体中的代码必须有顺序 自上而下执行 每一个方法体必须由java语句组成,每一个java语句必须以;结尾