/* ++,--运算符的使用: 单独使用: 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的) 参与运算使用: 放在操作数的前面,先自增或者自减,然后再参与运算。 放在操作数的后面,先参与运算,再自增或者自减。 作用:就是对变量进行自增1或者自减1。 */ class OperatorDemo2 { public static void main(String[] args) { //定义两个变量 int x = 3; int y = 4; //字符串的拼接 //System.out.println("x:"+x); //System.out.println("y:"+y); System.out.println("x:"+x+",y:"+y); //单独使用 //x++; //y--; ++x; --y; //System.out.println(x); System.out.println("x:"+x+",y:"+y); //意外的类型,常量是不可以这样做的 //System.out.println(10++); System.out.println("-------------------"); //参与运算使用 int a = 3; int b = 4; //int c = a++; //int d = b--; int c = ++a; int d = --b; System.out.println("a:"+a); //4, 4 System.out.println("b:"+b); //3, 3 System.out.println("c:"+c); //3, 4 System.out.println("d:"+d); //4, 3 } }
/* ++,--的练习题 第一题: int a = 10; int b = 10; int c = 10;
a = b++; c = --a; b = ++a; a = c--; 请分别计算出a,b,c的值 第二题: int x = 4; int y = (x++)+(++x)+(x*10); 请分别计算出x,y的值 */ class OperatorTest { public static void main(String[] args) { int a = 10; int b = 10; int c = 10;
a = b++; //a=10,b=11,c=10 c = --a; //a=9,b=11,c=9 b = ++a; //a=10,b=10,c=9 a = c--; //a=9,b=10,c=8 System.out.println("a:"+a); System.out.println("b:"+b); System.out.println("c:"+c); System.out.println("--------------"); int x = 4; int y = (x++)+(++x)+(x*10); //4+6+60 //x=5,6 System.out.println("x:"+x); System.out.println("y:"+y); } }
/* 赋值运算符: 基本的赋值运算符:= 把=右边的数据赋值给左边。 扩展的赋值运算符:+=,-=,*=,/=,%= += 把左边和右边做加法,然后赋值给左边。 */ class OperatorDemo { public static void main(String[] args) { //定义一个变量 int x = 10; //其他用法 int a,b; a = b = 10; System.out.println(a); System.out.println(b); System.out.println("-----------");
//定义一个变量 int y = 10; y += 20; System.out.println(y); } }
/* 面试题: short s=1;s = s+1; short s=1;s+=1; 上面两个代码有没有问题,如果有,那里有问题。 为什么第二个木有问题呢? 扩展的赋值运算符其实隐含了一个强制类型转换。 s += 1; 不是等价于 s = s + 1; 而是等价于 s = (s的数据类型)(s + 1); */ class OperatorTest { public static void main(String[] args) { //short s = 1; //s = s + 1; //System.out.println(s); short s = 1; s += 1; //好像是 s = s + 1; System.out.println(s); } }
/* 比较运算符: ==,!=,>,>=,<,<= 特点: 无论你的操作是简单还是复杂,结果是boolean类型。 注意事项: "=="不能写成"="。 */ class OperatorDemo { public static void main(String[] args) { int x = 3; int y = 4; int z = 3; System.out.println(x == y); System.out.println(x == z); System.out.println((x+y) == (x+z)); System.out.println("------------"); System.out.println(x != y); System.out.println(x > y); System.out.println(x >= y); System.out.println(x < y); System.out.println(x <= y); System.out.println("------------"); int a = 10; int b = 20; //boolean flag = (a == b); //boolean flag = (a = b); //这个是有问题的,不兼容的类型 //System.out.println(flag); int c = (a = b); //把b赋值给a,然后把a留下来 System.out.println(c); } }
/* ^的特点:一个数据对另一个数据位异或两次,该数本身不变。 */ class OperatorDemo2 { public static void main(String[] args) { int a = 10; int b = 20; System.out.println(a ^ b ^ b); //10 System.out.println(a ^ b ^ a); //20 } }
/* 面试题: 请自己实现两个整数变量的交换 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。 */ class OperatorTest { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a:"+a+",b:"+b); //方式1:使用第三方变量(开发中用的) /* int c = a; a = b; b = c; System.out.println("a:"+a+",b:"+b); System.out.println("------------"); */ //方式2:用位异或实现(面试用) //左边:a,b,a //右边:a ^ b /* a = a ^ b; b = a ^ b; //a ^ b ^ b = a a = a ^ b; //a ^ b ^ a = b System.out.println("a:"+a+",b:"+b); */ //方式3:用变量相加的做法 /* a = a + b; //a=30 b = a - b; //b=10 a = a - b; //a=20 System.out.println("a:"+a+",b:"+b); */ //方式4:一句话搞定 b = (a+b) - (a=b); //b=30-20=10,a=20 System.out.println("a:"+a+",b:"+b); } }
/* 为了让程序的数据更符合开发的数据,我们就加入了键盘录入。 让程序更灵活一下。 那么,我们如何实现键盘数据的录入呢? A:导包 格式: import java.util.Scanner; 位置: 在class上面。 B:创建键盘录入对象 格式: Scanner sc = new Scanner(System.in); C:通过对象获取数据 格式: int x = sc.nextInt(); */ import java.util.Scanner;
class ScannerDemo { public static void main(String[] args) { //创建键盘录入数据对象 Scanner sc = new Scanner(System.in); System.out.println("请你输入一个数据:"); int x = sc.nextInt(); System.out.println("你输入的数据是:"+x); } }
class ScannerTest { public static void main(String[] args) { //键盘录入两个数据,并对这两个数据求和,输出其结果 //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数据:"); int x = sc.nextInt(); System.out.println("请输入第二个数据:"); int y = sc.nextInt(); //把键盘录入的数据进行相加即可 int sum = (x + y); System.out.println("sum:"+sum); } }
/* 键盘录入练习:键盘录入两个数据,获取这两个数据中的最大值 */
import java.util.Scanner;
class ScannerTest2 { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数据:"); int a = sc.nextInt(); System.out.println("请输入第二个数据:"); int b = sc.nextInt(); //获取这两个数据中的最大值 int max = (a > b? a: b); System.out.println("max:"+max); } }
class ScannerTest3 { public static void main(String[] args) { //键盘录入三个数据,获取这三个数据中的最大值 //创建键盘录入对象 Scanner sc = new Scanner(System.in); System.out.println("请输入第一个数据:"); int a = sc.nextInt(); System.out.println("请输入第二个数据:"); int b = sc.nextInt(); System.out.println("请输入第三个数据:"); int c = sc.nextInt(); //获取这三个数据中的最大值 int temp = ((a > b)? a: b); int max = (temp > c? temp : c); System.out.println("max:"+max); System.out.println("------------------"); //键盘录入两个数据 System.out.println("请输入第一个数据:"); int x = sc.nextInt(); System.out.println("请输入第二个数据:"); int y = sc.nextInt(); //比较这两个数据是否相等 boolean flag = (x == y); System.out.println("flag:"+flag); } }
class IfTest { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //获取两个数据中较大的值 System.out.println("请输入第一个数据:"); int a = sc.nextInt(); System.out.println("请输入第二个数据:"); int b = sc.nextInt(); //定义一个变量接收最大值 int max; if(a > b) { max = a; }else { max = b; } System.out.println("max:"+max); System.out.println("----------------"); //判断一个数据是奇数还是偶数 System.out.println("请输入你要判断的数据:"); int x = sc.nextInt(); if(x%2 == 0) { System.out.println(x+"这个数据是偶数"); }else { System.out.println(x+"这个数据是奇数"); } } }
/* 获取三个数据中的最大值 由此案例主要是为了讲解if语句是可以嵌套使用的。而且是可以任意的嵌套。 */ class IfTest4 { public static void main(String[] args) { int a = 10; int b = 30; int c = 20; //三元实现 //int temp = (a>b)? a: b; //int max = (temp>c)? temp: c; //System.out.println("max:"+max); //System.out.println("--------"); //用if语句实现 int max; if(a > b) { if(a > c) { max = a; }else { max = c; } }else { if(b > c) { max = b; }else { max = c; } } System.out.println("max:"+max); } }