Java 运算符
1 数学运算符: + - * / %
a 运算的封闭性:
1.同种类型参与运算
2.返回同种类型(可能发生:上溢出和下溢出)
3.byte, short, char 按照int运算
b.Java中字面量的运算被Javac优化了, 优化为
一个固定的常量.
int d1 = 2;
double d2 = 3;
double dx = d1/d2;//0.666666
int i1 = 2;
int i2 = 3;
int ix = i1/i2;//0 (下溢出)
char c = 'A'+1+1+1;//68
char c2 = (char)('A' + n);
int i = 1024*1024*1024*4;//(上溢出)
long l = 1024*1024*1024*4;//(上溢出)
long ll = 1024L*1024*1024*4;
c % 取余数运算
0%5 -> 0, 2%5->2, 5%5->0, -1%5->-1
------------------------------->
n -6-5-4-3-2-1 0 1 2 3 4 5 6 7 8 9 10
n%5 -6 0-4-3-2-1 0 1 2 3 4 0 1 2 3 4 0
*字符串的连接运算: +
任何数据与字符串连接(+) 都会生成新字符串
","+2 -> ",2"
','+2 -> ?整数
2 关系运算符 && || ! | &
1 boolean b = '\u0000'==0;//true
int age = 12;
char sex = '男';
boolean isChild = age<16;
boolean isMan = sex=='男';
boolean isBoy = isChild && isMan;
boolean isGirl = isChile && ! isMan;
boolean isKid = isBoy || isGirl;
2 && || 是短路的逻辑运算.
& | 是非短路运算
大多数使用 短路运算.
3 自增运算: ++, --
a i++, 后++, 先将i的值作为整个表达的值,
然后将i增加1.
b ++i, 先++, 先将i增加1, 然后将i的值作为
整个表达的值.
int a = 1;
a=a++;
System.out.println(a);//1
记住,一定是先运行等号右边的,再运行等号左边的,无论什么运算都适合。
十分厉害,先将i的值加后,在内存中这它就是2,但是整个整个表达式的值确是1,然后再赋值给a
所以内存中a又从2变成 了1。
int a = 1;
int b = 1;
b = a++;
执行顺序:(十分重要)
1、a++表达式的值是1
2、执行a=a+1
3、执行赋值运算,将表达式的值赋值给b.
网站分页:
int rows = 23;//共有多少行。
int size = 10;//每页多少行
int pages;
pages = rows%size==0?rows/size:rows/size+1;
4 分支流程控制语句
if(布尔表达式){
//...
}else{
//...
}
switch(整数表达式){//一定是整数表达式:byte short char int 没有long
case 整数(int)常量://这里也必须是int所兼容的常量。
// ....
break;
case 整数常量:
// ....
break;
default:
//....
}
switch(sex){
case '男':
System.out.println("先生您好");
break;
case '女':
System.out.println("女士您好");
break;
default:
System.out.println("有某搞错");
break;
}
5 循环控制(1234代表执行顺序)
for(1初始化表达式;2布尔表达式; 4递增表达式){
//3循环体
}
//这一个其实是要把字符转换成整数、如果不转换成整数它们的所有unicode编码是155.
//现在我们每个字符都让它减去字符0,即可。
char[] chs = {'6','3','5','1','5','7'};
int sum2 = 0;
for(int i=1;i<6;i+=2){
sum2 += (chs[i]-'0');
}
System.out.println(sum2);
//计算字符串偶数项之和,要减去'0'否则算的是字符串unicode编码。
String code = "6902083892258";
int sum4 = 0;
System.out.println(code.length());
for (int i = 1; i < code.length(); i+=2) {
System.out.println(code.charAt(i) - '0');
sum4 += code.charAt(i)-'0';
System.out.println(sum4);
}
System.out.println("字符串偶数项之和:"+sum4);
6 break continue
1 break 结束本次循环
2 continue 继续当前循环
作业:
1 做练习
2 复习课堂代码, (完全练习一遍)
BreakContinueDemo.java
//输出所有'说'的位置:能够把“说”所有这个位置都循环出来。
for(int j=0; j<7; j++){
if(chs[j]!='说'){
continue;
}
System.out.println(j);
}
}
预习:
while, do...while, 数组
1 数学运算符: + - * / %
a 运算的封闭性:
1.同种类型参与运算
2.返回同种类型(可能发生:上溢出和下溢出)
3.byte, short, char 按照int运算
b.Java中字面量的运算被Javac优化了, 优化为
一个固定的常量.
int d1 = 2;
double d2 = 3;
double dx = d1/d2;//0.666666
int i1 = 2;
int i2 = 3;
int ix = i1/i2;//0 (下溢出)
char c = 'A'+1+1+1;//68
char c2 = (char)('A' + n);
int i = 1024*1024*1024*4;//(上溢出)
long l = 1024*1024*1024*4;//(上溢出)
long ll = 1024L*1024*1024*4;
c % 取余数运算
0%5 -> 0, 2%5->2, 5%5->0, -1%5->-1
------------------------------->
n -6-5-4-3-2-1 0 1 2 3 4 5 6 7 8 9 10
n%5 -6 0-4-3-2-1 0 1 2 3 4 0 1 2 3 4 0
*字符串的连接运算: +
任何数据与字符串连接(+) 都会生成新字符串
","+2 -> ",2"
','+2 -> ?整数
2 关系运算符 && || ! | &
1 boolean b = '\u0000'==0;//true
int age = 12;
char sex = '男';
boolean isChild = age<16;
boolean isMan = sex=='男';
boolean isBoy = isChild && isMan;
boolean isGirl = isChile && ! isMan;
boolean isKid = isBoy || isGirl;
2 && || 是短路的逻辑运算.
& | 是非短路运算
大多数使用 短路运算.
3 自增运算: ++, --
a i++, 后++, 先将i的值作为整个表达的值,
然后将i增加1.
b ++i, 先++, 先将i增加1, 然后将i的值作为
整个表达的值.
int a = 1;
a=a++;
System.out.println(a);//1
记住,一定是先运行等号右边的,再运行等号左边的,无论什么运算都适合。
十分厉害,先将i的值加后,在内存中这它就是2,但是整个整个表达式的值确是1,然后再赋值给a
所以内存中a又从2变成 了1。
int a = 1;
int b = 1;
b = a++;
执行顺序:(十分重要)
1、a++表达式的值是1
2、执行a=a+1
3、执行赋值运算,将表达式的值赋值给b.
网站分页:
int rows = 23;//共有多少行。
int size = 10;//每页多少行
int pages;
pages = rows%size==0?rows/size:rows/size+1;
4 分支流程控制语句
if(布尔表达式){
//...
}else{
//...
}
switch(整数表达式){//一定是整数表达式:byte short char int 没有long
case 整数(int)常量://这里也必须是int所兼容的常量。
// ....
break;
case 整数常量:
// ....
break;
default:
//....
}
switch(sex){
case '男':
System.out.println("先生您好");
break;
case '女':
System.out.println("女士您好");
break;
default:
System.out.println("有某搞错");
break;
}
5 循环控制(1234代表执行顺序)
for(1初始化表达式;2布尔表达式; 4递增表达式){
//3循环体
}
//这一个其实是要把字符转换成整数、如果不转换成整数它们的所有unicode编码是155.
//现在我们每个字符都让它减去字符0,即可。
char[] chs = {'6','3','5','1','5','7'};
int sum2 = 0;
for(int i=1;i<6;i+=2){
sum2 += (chs[i]-'0');
}
System.out.println(sum2);
//计算字符串偶数项之和,要减去'0'否则算的是字符串unicode编码。
String code = "6902083892258";
int sum4 = 0;
System.out.println(code.length());
for (int i = 1; i < code.length(); i+=2) {
System.out.println(code.charAt(i) - '0');
sum4 += code.charAt(i)-'0';
System.out.println(sum4);
}
System.out.println("字符串偶数项之和:"+sum4);
6 break continue
1 break 结束本次循环
2 continue 继续当前循环
作业:
1 做练习
2 复习课堂代码, (完全练习一遍)
BreakContinueDemo.java
//输出所有'说'的位置:能够把“说”所有这个位置都循环出来。
for(int j=0; j<7; j++){
if(chs[j]!='说'){
continue;
}
System.out.println(j);
}
}
预习:
while, do...while, 数组