算数运算符: + ++-- 自增自减 赋值运算符: 基础赋值运算符 = 双目运算符 是java中唯一一个自右向左运算的符号 扩展赋值运算符(基础赋值运算符+算数运算符) += -= *= /= %= a+=1; =>a=a+1; a%=1; =>a=a%1; 推荐使用 优点: 执行效率高 编译器会在编译的时候自动优化成扩展赋值运算符,提高效率 自动做强制类型转换 缺点: 不够直观
比较运算符|关系运算符 > < >= <= 操作数类型: byte,short,int,long,float,double,char == != 操作数: 任意类型(基本数据类型,引用数据类型) 结果为boolean类型的数值
逻辑运算符: & 与 两边的操作数都为true,结果为true,如果一个false,结果就为false | 或 一个为true就是true,两个都为false才是false ! 非->取反 !true->false !false->true ^ : 两边都为相等结果为false,不等为true 短路运算符 && : 与&逻辑相同 || : 与|逻辑相同 如果左边的操作数就能够决定最终的结果,右边得操作数不运行 操作数只能为boolean类型,可以结果为boolean类型的表达式 推荐使用短路运算符 && ||
public class OpDemo03 {
public static void main(String[] args) {
System.out.println("---------&----------------");
System.out.println(true && true); //true
System.out.println(true & false); //false
System.out.println(false & false); //false
System.out.println(false & true); //false
System.out.println("---------|----------------");
System.out.println(true || true); //true
System.out.println(true | false); //true
System.out.println(false | false); //false
System.out.println(false | true); //true
System.out.println("---------!----------------");
System.out.println(!true); //false
System.out.println(!false); //true
System.out.println(5+3>7 | 5+4<6);
System.out.println("---------短路----------------");
//ArithmeticException: / by zero 数学异常
//System.out.println(false & 5/0==0); //true
System.out.println(false && 5/0==0); //true
System.out.println("---------^----------------");
System.out.println(true ^ true); //false
System.out.println(true ^ false); //true
System.out.println(false ^ false);//false
System.out.println(false ^ true); //true
System.out.println("=============练习=================");
int a=10;
int b=9;
System.out.println(a>b & ++b>a); //false
System.out.println("a="+a+",b="+b); //10 10
System.out.println(a<b | b<a); //false
System.out.println(!(a>b ^ a>9)); //false
//System.out.println(10<5 & 10/0==0); //异常
System.out.println(10<5 && 10/0==0); //false 短路
}
}
条件运算符|三目运算符|三元运算符 语法: boolean类型表达式 ? 值1 : 值2; 执行流程: 1.执行条件表达式,得到一个boolean类型的结果 2.结果为true,最终的结果为值1 3.结果为false,最终的结果为值2
public class OpDemo04 {
public static void main(String[] args) {
int a = 3;
int b = 5;
//比较2个数 中的最大de值
int max = a>b ? a : b;
System.out.println(max);
//比较两个变量的大小,找到值最大的那个变量的变量名
String str = a>b ? "a最大" : "b最大";
System.out.println(str);
//计算a是否为偶数
System.out.println(a%2 == 0 ? "偶数" : "奇数");;
}
}
位运算符 (了解) 运算的时候,会先把操作数转为二进制,然后进行运算,最终得到的结果转为十进制 & : 二进制的两个操作数,统一位置的两个数如果一个为0就是0,两个都为1才是1 | : 二进制的两个操作数,同一位置的两个数如果一个1就是1,两个都为0才是0 ^ : 二进制的两个操作数,同一位置的两个数如果相等为0,不等为1 以上两边操作数 为boolean类型 作为逻辑运算符使用,如果操作数为整数,作为位运算使用 位移运算符 << 左移 : 第一个操作数转为二进制,向左移动第二个操作数个位置,最终的结果转为十进制 >> 右移 : 第一个操作数转为二进制,向右移动第二个操作数个位置,假设源操作数右边与一条线,移出的忽略,只保留剩下的二进制的数据,最终的结果转为十进制 规律: 右移: 第一个操作数/2^(第二个操作数次幂) 左移: 第一个操作数*2^(第二个操作数次幂) 总结: 位移运算符相对效率较高,直接针对于二进制进行操作
System.out.println(2&3); //2
System.out.println(2|3); //3
System.out.println(2^3); //1
System.out.println(8>>2); //2
System.out.println(8<<2); //32 8 * 2 ^ 2 = 8 * 4 = 32
System.out.println(8<<3); //64 8 * 3 ^ 2 = 8 * 9 = 64
基本数据类型: 数据类型 变量名 = 赋值; int a = 1; 引用数据类型: 1) 定义一个当前引用数据类型 的 一个引用|变量 引用数据类型 变量名|引用 = new 引用数据类型(); 2) 可以引用|变量使用当前引用数据类型中的功能 引用名|变量名.功能名字(); Scanner : 接收用户键盘输入的内容 步骤 : 1.导包 告诉java类的位置 import 报名.类名; import java.util.Scanner; 位置: 类的上面 导包 2.定义一个Scanner数据类型的引用 Scanner sc = new Scanner(System.in); 3.使用功能 sc.功能名字(); nextInt() 接受用户键盘输入的int类型整数 nextByte() 接受用户键盘输入的byte类型整数 nextShort() 接受用户键盘输入的short类型整数 nextLong() 接受用户键盘输入的Long类型整数 nextDouble() 接受用户键盘输入的double类型小数 nextFloat() 接受用户键盘输入的float类型小数 4.关闭 sc.close(); 注意: 一定要在当前类中使用完毕Scanner之后再关闭,否则会 造成再当前类中再也无法使用
import java.util.Scanner;
public class ScannerDemo06 {
public static void main(String[] args) {
//1.导包
//2.定义一个Scanner数据类型的引用
Scanner sc = new Scanner(System.in);
//3.使用功能
int num = sc.nextInt();
System.out.println(num);
System.out.println("请输入您的银行卡余额:");
double d = sc.nextDouble();
System.out.println("您的银行卡余额为:"+d);
//关闭
sc.close();
}
}