运算符
作用:对数据进行计算.
分类:算术运算符,逻辑运算符,赋值运算符,三目运算符,位运算符.
1.算术运算符
+,-,*,/(注意除法不能为0)
%:取余
++:自增
++a(先自增然后参与运算)
a++(先参与运算后自增)
--:递减
--a(先递减然后参与运算)
a--(先参与运算后递减)
优先级:有括号先算括号,有乘除算乘除,然后从左向右依次运算.
注意:可以给整型浮点型使用.
2.逻辑运算符
<,<=,>,>=,
==:等于
基本数据类型判断值是否相同
引用数据类型判断内存地址是否相同
(不能判断字符串是否相同)
!=:不等于
基本数据类型判断值是否相同
引用数据类型判断内存地址是否相同
(不能判断字符串是否相同)
&:与
同真为真,有假为假
&&:短路与
同真为真,有假为假
|:或
有真为真,全假为假
||:短路或
有真为真,全假为假
!:非
非真为假,非假为真.
!true的结果为false
注意:最终结果只能是boolean类型
条件表达式:最终结果为boolean型的算术式都是条件表达式.
与,或,非不加括号最后运算.
3.赋值运算符
=:赋值
将等号右边的值赋值给左边的变量
+=:加等
int a =10;
int b=10;
//a=a+b;
a+=b;
+=:减等
与加等相似
*=:乘等 a*=b
/=:除等 a/=b
%= a%=b
注意:等号两边数类型要相同
4.三目运算符
语法:条件表达式? 值1:值2
逻辑:当条件表达式为true时,取值1,反之,取值2.
注意:值1与值2数据类型要相同
练习
获取两个数的最大值
int a=10;
int b=20;
System.out.println(a>b?a:b);
获取三个数最大值
int a=10;
int b=20;
int c=19;
int max=a>b?a:b;
max=max>c?max:c;
System.out.println(max);
5.位运算符
&
int a=3;
int b=2;
int c=a&b;
a 11
b 10
c 10 2
|
int a=3;
int b=2;
int c=a|b;
a 11
b 10
c 11 3
!
int a=3;
!a
a 11
a 00 0
^
int a=3;
int b=2;
int c=a^b;
a 11
b 10
c 01 1
<<
int a=3;
a<<2;
a 11
a 1100 12
>>
int a=3;
a>>2;
a 11
a 00 0
数据类型转换
1.小类型转换为大类型
自动转换
int num =10;
long l=num;
注意:小类型与大类型运算,自动转换为大类型.
2,大类型转换为小类型
强制转换
语法:小类型 变量名 =(小类型) 要转换的变量或数据
long l =10l;
int a=(int)l;
int i=128;
byte b= (byte)i;
注意:强制转换会导致数据丢失.
进制转换
十进制转换二进制
除2,余数倒读
十进制转换八进制
除8,余数倒读
十进制转换十六进制
除16,余数倒读
二进制转换为十进制
例子:
10100
1*2^4+0*2^3+1*2^2+0*2^1+0*2^0
16+0+4+0+0=20
位所在的数*2^(位数-1)+位所在的数*2^(位数-1)+...
八进制转换为十进制
例子:
26
2*8^1+6*8^0 2*8+6*1 16+6 22
位所在的数*8^(位数-1)+位所在的数*8^(位数-1)+...
十六进制转换为十进制
例子: AF
10*16^1+15*16^0 160+15 175
位所在的数*16^(位数-1)+位所在的数*16^(位数-1)+..
字符串判断内容是否相同
语法:boolean 变量名=字符串1或字符串变量1.equals(字符串2或字符串变量2)
例子:
String str01 ="Hello";
String str02="World";
boolean b=str01.equals(str02);
boolean b=str01.equals("World");
boolean b="Hello".equals(str02);
boolean b="Hello".equals("World");
字符串连接符
如:
int i = 10; String str = "1"; String str02 = i+str;
练习
String str01 = 1 + 2 + "3"; 结果:"33"
String str02 = "1"+2+3; 结果:"123"
转意字符
\' 含义:'
\" 含义:"
\\ 含义:\
\n 含义:换行
\t 含义:制表
键盘录入
原因:为了提高代码的趣味性.
对应的类:Scanner
步骤:
1.导包
import java.util.Scanner;
2.创建Scanner对象
Scanner 变量名1=new Scanner(System.in);
3.等待用户输入,并获取用户输入结果(可以多次重复使用)
用户输入字符串
String 变量名2=变量名1.next();
用户输入整数
int 变量名2=变量名1.nextInt();
注意:变量名2所对应的内容就是用户输入的内容
next和nextInt会阻塞程序,直到用户输入.
分支语句
顺序语句
特点:代码从上向下依次执行
分支语句
特点:提供多个分支只能选择一个执行
循环语句
特点:重复执行一段代码
分类
if 特点:可以判断内容是否相同,也可以判断区间
swicth 特点:只能判断值是否相同,效率稍微比if快 注意:只能判断8个基本数据与String的数据是否值相等
if
简单的if结构
语法: if(条件表达式){ 当条件表达式为true,执行此处代码 }
if else结构
语法: if(条件表达式){ 当条件表达式为true,执行此处代码 }else{ 当条件表达式为false,执行此处代码 }
else if结构
语法: if(条件表达式1){ 当条件表达式1为true,执行此处代码 }else if(条件表达式2){ 当条件表达式2为true,执行此处代码 }else if(条件表达式3){ 当条件表达式3为true,执行此处代码 }... else if(条件表达式n){ 当条件表达式n为true,执行此处代码 }else{ 当以上条件都不为true时,执行此处代码 }
总结
if必须有 else:可有可无,最多一个,必须在if的末尾
else if:可有可无,可以有多个 语法:
语法: if(条件表达式1){ 当条件表达式1为true,执行此处代码 }[else if(条件表达式2){ 当条件表达式2为true,执行此处代码 }else if(条件表达式3){ 当条件表达式3为true,执行此处代码 }... else if(条件表达式n){ 当条件表达式n为true,执行此处代码 }else{ 当以上条件都不为true时,执行此处代码 }]
注意:[]中的内容可有可无
注意:if中可以使用if(if的嵌套)
Switch
语法:
switch(变量){
case 值1: 当变量的值等于常量1时,执行此处代码
break;
case 值2: 当变量的值等于常量2时,执行此处代码
break;
...
case 值n: 当变量的值等于常量n时,执行此处代码
break;
default: 当变量的值不等于以上常量时,执行此处代码
break; }
break:跳出当前代码块
{}:代码块