运算符
算术运算符
直接看代码:
public class AriTest {
public static void main(String[] args){
//除号
int num1 = 12;
int num2 =5;
int result1 = num1 / num2;
System.out.println(result1);//2
int result2 = num1 / num2 * num2;
System.out.println(result2);//10
double result3 = num1 / num2;
System.out.println(result3);//2.0
double result4 = (double)num1 / num2;
System.out.println(result4);//2.4
double result5 = num1 / (num2+0.0);
System.out.println(result5);//2.4
//*****************************************************************
// %
//结果的符号与被模数的符号一致
int m1 = 12;
int n1 = 5;
System.out.println("m1 % n1 = " + m1 % n1);//2
int m2 = -12;
int n2 = 5;
System.out.println("m2 % n2 = " + m2 % n2);//-2
int m3 = 12;
int n3 = -5;
System.out.println("m3 % n3 = " + m3 % n3);//2
int m4 = -12;
int n4 = -5;
System.out.println("m4 % n4 = " + m4 % n4);//-2
//*****************************************************
// (前)++|-- 先自增(自减)1,然后再运算
//(后)++|-- 先运算,后自增(自减)1
int a1 = 10;
int b1 = ++a1; //先赋值再运算
System.out.println("a1 = "+ a1 + ",b1 = " + b1);
int a2 = 10;
int b2 = a2++; // 先运算再赋值
System.out.println("a2 = "+ a2 + ",b2 = " + b2);
short s1 =10;
//s1 = s1 + 1; //出错,不能从int转为short
s1 = (short)(s1 + 1);
System.out.println(s1);
}
}
赋值运算符
符号:=
- 当“ = ” 两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
- 支持连续辅助
拓展:
+= 、-= 、 *= 、 /= 、 %=
public class SetValueText {
public static void main(String[] args){
int i1 =10;
int j1 = 10;
//连续赋值
int i2,j2;
i2 = j2 = 10;
int i3 = 10,j3 = 30;
//********************************************
int num1 = 10;
num1 += 2;
System.out.println(num1); //12 以此类推,加减乘除都一样
}
}
比较运算符
public class AriText {
public static void main(String[] args){
int i =10;
int j = 20;
System.out.println(i == j);//false
System.out.println(i =j);//20
boolean b1 = true;
boolean b2 = false;
System.out.println(b2 == b1);//false 判断是否相等
System.out.println(b2 = b1);//true 赋值运算
}
}
逻辑运算符
& —— 逻辑与 、 |—— 逻辑或 、 ! —— 逻辑非
&&—— 短路与 、 || —— 短路或 、 ^ —— 逻辑异或
public class LogicText {
public static void main(String[] args){
//区分 & 与 &&
// 相同点1:& 与&&的运算结果相同
// 相同点2:当符号左边是true时,而这都会执行括号右边的运算
// 不同点: 当符号左边是false时,&继续执行符号右边的运算,&&则会短路,不继续运算
boolean b1 = false;
int num1 = 10;
if(b1 & (num1++ >0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num1 = " + num1);
boolean b2 = false;
int num2 = 10;
if(b2 && (num2++ >0)){ //b2为true 需要看后面(num2++ >0) 若b2为false 则不需看后面的那个,&& 短路
System.out.println("我现在在北京");
}else{
System.out.println("我现在再南京");
}
System.out.println("num2 = " + num2);
// | 与|| 的区别与 & 与 && 的区别一样
//区分 | 与 ||
// 相同点1:| 与||的运算结果相同
// 相同点2:当符号左边是false时,而这都会执行括号右边的运算
// 不同点: 当符号左边是true时,&继续执行符号右边的运算,||则会短路,不继续运算
boolean b3 = false;
int num3 = 10;
if(b3 | (num3++ >0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num3 = " + num3);
boolean b4 = true;
int num4 = 10;
if(b4 || (num4++ >0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num4 = " + num4);
}
}
位运算符
package day02;
//结论:
//1.位运算符操作的都是整型的数据
//2.<<:在一定范围内,每向左移1位 相当于*2
//3.>>:在一定范围内,每向右移1位 相当于 / 2
public class BitTest {
public static void main(String[] args){
int i = 21;
System.out.println("i<<2:"+(i<<2));
System.out.println("i<<3:"+(i<<3));
System.out.println("i<<27:"+(i<<27));
int num1 = 10;
int num2 = 20;
System.out.println("num1 = " + num1 + ",num2 = " + num2);
/** int temp = num1;
num1 = num2;
num2 = temp;
System.out.println("num1 = " + num1 + ", num2 = " + num2);*/
//方法二: 好处:不用定义临时变量
//弊端:相加操作可能超出存储范围,有局限性,只能适用于数值类型。
//num1 = num1 + num2;
//num2 = num1 - num2;
//num1 = num1 - num2;
//方法三:使用位运算符
num1 = num1 ^ num2 ;
num2 = num1 ^ num2;
num1 = num1^num2;
System.out.println("num1 = " + num1 + ", num2 = " + num2);
}
}
三元运算符
package day02;
import sun.awt.windows.WPrinterJob;
/*
三元运算符:
1.结构:(条件表达式)?表达式1:表达式2
2.说明
①条件表达式的结果位boolean类型
②根据表达式真或假,决定执行表达式1,还是表达式2
如果表达式为true,则执行表达式1
如果表达式为false,则执行表达式2
③表达式1 和表达式2 要求类型时一致的
④ 三目运算符 可以嵌套
*/
public class SanYuanText {
public static void main(String[] args){
//int m = 12;
//int n = 150;
//int max = (m > n)?m:n;
int m = 12;
int n = 150;
// int max = (m > n)?2:1.0; //报错
double max = (m > n)? 2:1.0;//可以
System.out.println(max);
int n1 =12;
int n2 = 13;
int n3 = 14;
int max1 = (((n1>n2)? n1 : n2) >n3)? ((n1>n2)? n1 : n2):n2;
System.out.println(max1);
}
}
运算符的优先级
分支结构
public class IfText {
public static void main(String[] args){
//举例1
int heartBeats = 79;
if (heartBeats < 60 ||heartBeats>=120){
System.out.println("需要进一步检查");
} else{
System.out.println("检查结束");
}
//举例2
int age = 80;
if(age<18){
System.out.println("1");
}else if(age>=18 & age<36){
System.out.println("2");
}else if (age >=36 & age<48){
System.out.println("3");
}else if (age >=48 & age<60){
System.out.println("4");
}else{
System.out.println("5");
}
}
}
循环结构
public class IfText {
public static void main(String[] args){
//举例1
int heartBeats = 79;
if (heartBeats < 60 ||heartBeats>=120){
System.out.println("需要进一步检查");
} else{
System.out.println("检查结束");
}
//举例2
int age = 80;
if(age<18){
System.out.println("1");
}else if(age>=18 & age<36){
System.out.println("2");
}else if (age >=36 & age<48){
System.out.println("3");
}else if (age >=48 & age<60){
System.out.println("4");
}else{
System.out.println("5");
}
}
}
Scanner从键盘获取int型数据
package day02;
/*
从键盘获取数据
步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化 Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法(next() / netXxx()),来获取指定类型的变量
注意:
需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchExce
导致程序终止。
*/
//1.导包: import java.util.Scanner;
import java.util.Scanner;
public class ScannerText {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.print("请你输入姓名:");
String name = scan.next(); //字符串
//int num = scan.nextInt();
System.out.println(name);
System.out.print("请你输入年龄:");
int age = scan.nextInt(); //int型
System.out.println(age);
System.out.print("请输入体重:");
double weight = scan.nextDouble(); //double型
System.out.println(weight);
System.out.print("是否单身:");
boolean isLove = scan.nextBoolean(); //boolearn型
System.out.println(isLove);
System.out.print("请输入男/女:");
String gender = scan.next();
char genderChar = gender.charAt(0);
System.out.println(genderChar);
}
}