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&++x<y)时&前面是false已经是false了但是还是会执行后面的表达式

使得y的值会自加,而int x=10,inty=8;system.out.println(x<y&&++x<y))时&前面是false已经是false了后面的++x<y就不执行也不判断了。

|| 短路或

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语句必须以;结尾