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