可以用来对常量和变量进行操作的符号称为运算符。
1.算术运算符 2.赋值运算符 3.逻辑运算符 4.三元运算符 5.关系运算符
就是对常量和变量进行操作的控制
+,-,*,/,%,++,–
c=a+b c=a-b c=a/b c=a*b c=a%b
i++和++i的区别在:i++是先使用在进行加1运算,++i是先进行+1运算在使用,i–与--i同理
int i = 1; System.out.println("i++="+(i++)); System.out.println("i="+i); int j = 1; System.out.println("++j="+(++j)); System.out.println("j="+j);1.基本的赋值运算符:= 2.扩展的赋值运算符:+=,-=,/=,*=,%=
1.赋值运算符隐性包含了强制转换
public class Demo2 { //赋值运算符 public static void main(String[] args) { byte b = 10; // b = b+10;此行代码报错,因为属于大转小,需要进行强制转换 b+=10;//赋值运算符自动进行转换 System.out.println(b); } }*>、<、>=、<=、==、!=
1.关系运算符构成的表达式返回的结果为true或者false 2.判断一个数在某个范围内时不可以按照数学公式的写法(10<a<12),应该写成(a>10&&a<12),通过逻辑运算符与来连接。
1.&&:与,格式:表达式1&&表达式2,当两个表达式均为真的时候,整体表达式的值为true,否则为false 2.||:或,格式:表达式1||表达式2,只要有一个表达式为真,则整体表达式为真 3.&:逻辑与,有0则0 4.|:逻辑或,有1为1 5.^ :逻辑异或:相同为false,不同为true。 6.!: 逻辑非:非false则true,非true则false。 7.~:加1取反
public class Demo4 { /* * 位运算符: * &:与,有0则0 * |:位或,有1为1 * ~:加1取反 * ^:异或,相同为0,不同为1 * */ /* 移位运算符: <<:左移运算符,左移一位,将原来的数*2 >>:右移运算符,右移一位,将原来的数/2 */ public static void main(String[] args) { System.out.println("5&2="+(5&2)); System.out.println("5|2="+(5|2)); System.out.println("5^2="+(5^2)); System.out.println("~5="+(~5)); System.out.println("2<<1="+(2<<1)); System.out.println("2>>1="+(2>>1)); } }三元运算符就相当于if语句一样,其格式为表达式?值1:值2,当表达式的值为true时,结果为值1,当表达式的值为false时,结果为值2
public class Demo5 { public static void main(String[] args) { //三元运算符 //表达式?值1:值2 //当表达式的值为true时,则为值1,否则为值2 System.out.println(1>2?9:99.0); System.out.println(1<2?'a':99.0);//这里需要注意,由于数据的最高类型是double,故自动转换,输出*.0 } }1.顺序结构 2.选择结构 3.循环结构
按照程序中语句的顺序依次执行语句的结构称为顺序结构,例如:
public class Demo { public static void main(String[] args) { System.out.println("这是语句1"); System.out.println("这是语句2"); System.out.println("这是语句3"); System.out.println("这是语句4"); } } /** * 输出结果 *这是语句1 * 这是语句2 * 这是语句3 * 这是语句4 */很明显输出结果和语句对应的顺序是一致的。
执行流程:当括号内的结果为true时,程序跳转到{}内执行{}内的语句,否则,跳过{}内的代码,执行后面部分剩余的代码
public class Demo { public static void main(String[] args) { int a = 1; int b = 2; if(a<b){ System.out.println("这是if语句内的语句1"); } System.out.println("这是其余的输出语句"); } } /** * 输出结果 * 这是if语句内的语句1 * 这是其余的输出语句 */ public class Demo { public static void main(String[] args) { int a = 1; int b = 2; if(a>b){ System.out.println("这是if语句内的语句2"); } System.out.println("这是其余的输出语句"); } } /** * 输出结果 * 这是其余的输出语句 */观察上述两个程序可以发现,第二个程序比第一个程序少输出一个语句,因为程序2中if语句括号内关系表达式的值为false,所以不执行后面{}内的代码。
执行流程:当括号内关系表达式或者布尔值为真时,执行程序段1,否则执行程序段2
public class Demo { public static void main(String[] args) { int a = 2; int b = 3; if(a<b){ System.out.println("这是语句1"); }else { System.out.println("这是语句2"); } } } /** * 输出结果 * 这是语句1 */ public class Demo { public static void main(String[] args) { int a = 2; int b = 3; if(a>b){//上一段程序为a<b System.out.println("这是语句1"); }else { System.out.println("这是语句2"); } } } /** * 输出结果 * 这是语句2 */执行流程:首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n
注意事项: 1.switch括号里的表达式可以是byte,short,int char,JDK5以后支持了枚举(enum),JDK7以后支持了String 2.若case语句后面没有跟break,程序会继续向下执行,知道遇到break,或者switc语句体结束。 3.case后面的值是用来和switch后面的表达式进行匹配的,若case中没有匹配的值,则执行default.
执行过程:①②③④>②③④>②③④…当②的条件不再满足时就跳出循环
执行过程:执行顺序:①②③④>②③④>②③④…②不满足为止。
执行过程:执行顺序:①③④>②③④>②③④…②不满足为止。
三种循环的基本区别 1.do…while语句不论条件是否满足都会执行一次循环语句体,for和while只有在条件满足时才可以执行 2.若需要使用控制循环的变量,推荐使用while语句,for语句的条件变量在for语句结束后就失效。
break适用于循环语句和switch语句中 break的作用主要是结束本层循环
continue的作用是结束本次循环执行下一次循环
以for语句为例子:
for(初始化表达式①; 循环条件②; 步进表达式⑦) { for(初始化表达式③; 循环条件④; 步进表达式⑥) { 执行语句⑤; } }执行过程::①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
外循环一次,内循环多次。
//打印出n行的金字塔图案 import java.util.Scanner; public class Test{ public static void main(String[] args){ int n=0; //输入的行数 int r=0; //当前行 int s=0; //的数量 int p=0; //空格的数量 Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); for(r=1;r<=n;r++){ //打印空格 for(p=1;p<=n-r;p++){ System.out.print(" "); } //打印 for(s=1;s<=2r-1;s++){ System.out.print(""); } //行换 System.out.print("n"); } } }