1.运算符
1.1算术运算符:+ — * / ++ -- ;
“+”, 除字符串相加功能外,还能把非字符串转换成字符串。
“/”, 除法运算,小的整数除以大的整数结果是0,整数之间相除结果仍然是整数
“%”,取模相当于取余数,任何整数模2不是1就是0,含有负数的求模,负号的决定取决于左边整数是否是负数,其结果形式与左边的负号形式相同。
“++”, 自加1。++可以用在变量前,也可以用在变量后。
;int b = a++;先把a赋值给b,然后计算a+1。
;int b = ++a;先计算a+1,在把a+1 的值赋给b。
1.2赋值运算法:= += -= *= /= %= ;
= 运算符外其他赋值运算,会自动完成强转操作。
1.3比较运算符:== != > < >= <= instanceof
boolean型。
1.4逻辑运算符:& | ^ && || !
:两边都为true结果才为true;
:如果左边为false,那么右边就不运算。
:两边都为false结果才为false;左右两边只要有一个结果是true,结果为true。
:如果左边为true,那么右边不运算。
异或,两边一样为false,反之为true。
1.5位运算符:用于操作二进制位的运算符,速度较快
:左移,二进制位向左移动,右边缺的补上0,相当于乘以2的倍数;
:右移,二进制位向右移动,左边缺的视情况补上0或者1,相当于除以2的倍数;
:无符号右移,无论最高位是什么,右移后用0补;
:把0看做false,把1看做true;
~:反码,对一个数取反。
1.6三元运算符:(条件表达式)?表达式1:表达式2;
true,结果为表达式1,反之为表达式2。
条件运算符运算完之后一定有一个结果
2 流程控制语句
Java中流程控制有:顺序结构、判断结构、选择结构、循环结构。
2.1 判断结构
2.1.1 判断语句第一种形式
条件表达式)
{
;
}
例子: int a = 1;
If(a >2)
if语句后面不加{},只能控制一条语句。
System.out.println(“失败”);
2.1.2 判断语句第二种形式
If(条件表达式)
执行语句}
else
执行语句}
if语句和三元运算符的区别:
三元运算符可以称之为if语句的简写形式,但是只要简写就会有一定的弊端。
三元运算符,是一种运算符号,也就是说每次执行后,必须有结果。
if...else是语句,只是控制流程,执行后不一定有结果。
if...else可以里面可以有语句,并输出结果,三元运算符不可以。
例子:
;
(a ==1)
等于1”);
else
不等于1”);
2.1.3 判断语句第三种形式
(条件表达式)
执行语句}
条件表达式)
执行语句}
条件表达式)
执行语句}
else
执行语句}
例子:
int num = 2;
if(num ==1)
System.out,println(“星期一”);
else if(num ==2)
System.out.println(“星期二”);
else
System.out.println(“不知道星期几”);
2.2 选择结构
2.2.1 switch语句的格式
表达式)
{
case 表达式对应的值:
{
执行语句;
break;
}
case 表达式对应的值2:
{
执行语句;
break;
}
······
default:
{
执行语句;
break;
}
}
例子:
int a = 6;
switch(a)
{
case 1:
System.out.println("a");
break;
case 2:
System.out.println("b");
break;
case 3:
System.out.println("c");
break;
default:
错误");
}
2.2.2 switch语句的特点
(1)switch语句选择的类型有六种:byte,short,int,char。1.5版本的时候可以接收枚举,1.7版本可以接收String字符串。
(2)case与default之间没有顺序。先执行第一个case,没有匹配的case执行default。
(3)结束switch语句的两种情况:遇到break;执行到switch语句结束。
(4)如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇break或者switch结尾结束。
注意:不要忘记写break;否则会引入陷阱。一个case里没有写break;语句,那么程序会继续执行下个case里的执行语句,不会再对case值进行判断。
例子:
int month = 6;
switch (month){
case 3:
case 4:
case 5:
System.out.println(month+"月是春季");
break;
case 6:
case 7:
case 8:
System.out.println(month+"月是夏季");
break;
case 9:
case 10:
case 11:
System.out.println(month+"月是秋季");
break;
case 12:
case 1:
case 2:
System.out.println(month+"月是冬季");
break;
default:
System.out.println(month+"月没有这样的月份")
}
语句和if语句的区别
(1)Switch和if很像,如果判断数值不多,且满足byte,int,short,char四种基本类型,建议使用switch语句。
(2)如果是对区间进行判断或者boolean结果的判断,只能用if。因为switch里面不接收boolean的值。
2.3 循环结构
2.3.1 while循环
先判断,再执行
while (条件表达式)
{
循环体;
控制循环次数;
}
While循环一定要保证循环条件有变成false的时候,否则将变成死循环。
While(true)
{
死循环;
}
例子:
int x = 1;
while (x<3)
{
System.out.println("x="+x); //循环体
x++; //用x自增来控制循环次数
}
2.3.2 do while循环
先执行,再判断
do{
循环体;
控制循环次数
}
while (条件表达式);
例子:
int x = 1;
do{
System.out.println("x="+x); //循环体
x++; //用x自增来控制循环次数
}
while (x<3);
while和do while的区别
do while语句会先执行循环体,再去判断条件,也就是说无论条件是否满足他都至少要执行一次循环体,先执行,再判断。
while 先判断条件,只要条件不满足就不在执行循环体了,先判断,再执行。
2.3.3 for 循环
for(初始化表达式1;循环条件表达式2;表达式4)
{
执行语句3;
}
例子:
for(int x=0; x< 3;x++ )
{
System.out.println("x="+x);
}
for{}有自己的作用域,变量只在作用域中有效。可以额外定义一个变量,来保存循环变量的值,扩大其作用域。
例子:
int temp = 0;
for(int i=0;i<10;i++)
{
System.out.println("i值:"+i);
temp = i;
}
System.out.println("temp值"+temp);
2.3.4 嵌套循环
for循环之中还有for循环
例子:
打印一个5行5列的*矩阵
for (int x=1;x < 6;x++ )
{
for(int y=1; y<6; y++)
{
System.out.print("*");
}
System.out.println();
}
注意:
(1)while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
(2)最简单无限循环格式:while(true) , for(;;)
2.3.5 循环控制
语句:break结束循环,一旦在循环体中遇到break,系统将完全结束该循环,开始执行之后的代码。
例子:
for (int i=0;i<5;i++)
{
System.out.println("i值为"+i);
if(i == 2)
{
break; //当i为2的时候,跳出循环 执行循环之后的代码
}
}
continue语句:只是终止本次循环,紧接着开始下一次循环。只用于循环结构。
例子:
// 打印偶数
for (int i=0;i<=10;i++)
{
if(i%2==1)
跳出此次循环,开始下次循环
System.out.println("i="+i);
}
注意:
(1)这两个语句离开应用范围,存在是没有意义的。
(2),这两个语句单独存在下面都不可以有语句,因为执行不到。
(3)可以定义标签,让两个语句作用于指定的范围。