1.java运算符
1.1数学运算符
1.1.1运算规则
同种类型参与运算(必要时自动转换)
返回同种类型(可能发生上溢出,下溢出)
整数除法是整除
byte,short,char按照int运算
java中字面量的运算被javac优化了,优化为固定的常量
1.1.2取余数运算%
1.1.3字符串的连接运算+
任何数据与字符串连接都会生成新字符串
1.2关系与逻辑运算符
1.2.1关系运算:>,<,>=,<=,==,!=
1.2.2逻辑运算:&&,||,!,|,&
&,|是非短路运算
&&,||是短路的逻辑运算,大多使用短路逻辑运算
int i=1;
if(i!=1&&(i++)==2){
System.out.println(i);
}
System.out.println(i);
//条件一&条件二,条件一不满足时也会去检查条件二
i=1;
if(i!=1&(i++)==2){
System.out.println(i);
}
System.out.println(i);
i=1;
if(i==1||(i++)==2){}
System.out.println(i);//1
if(i==1|(i++)==2){}
System.out.println(i);//2
1.3自增运算
i++,先将i的值作为整个表达式的值,然后将i增加1
++i,先将i加1,然后将i的值作为整个表达式的值
b=a++;//①a++表达式的值为1
②执行a=a+1
③执行赋值运算,将表达式的值1赋值给b,即b=1
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=0;
int a=i++%5;
System.out.println(a);
a=i++%5;
System.out.println(a);
a=i++%5;
System.out.println(a);
a=i++%5;
System.out.println(a);
a=i++%5;
System.out.println(a);
a=i++%5;
System.out.println(a);
}
int a=1;
a=(a++);
System.out.println(a);//1
1.4条件运算
1.4.1条件运算符
(布尔表达式)?(true表达式):(false表达式)
public static void main(String[] args) {
// TODO Auto-generated method stub
int rows;
System.out.println("rows=");
Scanner console=new Scanner(System.in);
rows=console.nextInt();
int size;
System.out.println("size=");
size=console.nextInt();
int pages;
pages=rows%size==0?rows/size:rows/size+1;
System.out.println(pages);
}
1.4.2 if...else
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("输入分数:");
Scanner console=new Scanner(System.in);
int score=console.nextInt();
if(score<=100&&score>=90){
System.out.println("优秀");
}else if(score<90&&score>=80){
System.out.println("良好");
}else if(score<80&&score>=70){
System.out.println("中等");
}else if(score<70&&score>=70){
System.out.println("及格");
}else{
System.out.println("不及格");
}
}
1.4.3 switch语句
switch(整数表达式){
case 整数常量1://必须是整数兼容的常量
执行语句序列1;
break;
case 整数常量2://必须是整数兼容的常量
执行语句序列2;
break;
default:
默认执行语句序列
}
int score=86;
String level="不及格";//有了default之后这里就可以不初始化了
switch(score/10){
case 10:
case 9:
level="优秀";
break;
case 8:
level="良好";
break;
case 7:
level="中等";
break;
default:
level="及格";
break;
}
System.out.println(level);
1.4.4 for基本语法
for(初始化表达式;布尔表达式;递增表达式){
//循环体
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] ary={6,3,5,1,5,7};
int sum=0;
for(int i=1;i<6;i+=2){
sum+=ary[i];
}
System.out.println(sum);//11
char[] chs={'6','3','5','1','5','7'};
sum=0;
for(int i=1;i<6;i+=2){
sum+=chs[i]-'0';
}
System.out.println(sum);
}
1.4.5 break和continue
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] chs={'据','传','说','胡','同','学'};
//找出 胡 的位置
int i;
for(i=0;i<chs.length;i++){
if(chs[i]=='胡')
break;
}
System.out.println(i);
//输出所有'说'的位置
for(int j=0;j<7;j++){
if(chs[j]!='说'){
continue;
}
System.out.println(j);
}
}