ArithmeticOperator.java
//演示算术运算符的使用 // public class ArithmeticOperator { //编写一个main方法 public static void main(String[] args){ //除法使用 System.out.println(10 / 4);//数学中结果为2.5,java中为2 System.out.println(10.0 / 4);//java中结果为2.5 double d = 10 / 4; System.out.println(d);// 结果为2.0 // % 取模,取余 // 在java中,%的本质是公式 a % b = a - a / b *b // -10 % 3 = -10 - (-10) / 3 * 3 = -10 - (-9) = -1 // 10 % -3 = 10 - 10 / (-3) * (-3) = 10 - 9 = 1 // -10 % -3 = -10 - (-10) / (-3) * (-3) = -10 + 9 = -1 System.out.println(10 % 3);//1 System.out.println(-10 % 3);//-1 System.out.println(10 % -3);//1 System.out.println(-10 % -3);//-1 //++的使用 //做为独立语句使用 int i = 10; i++;//自增 等价于i = i + 1;=>i = 11 ++i;//自增 等价于i = i + 1;=>i = 12 System.out.println("i=" + i);//12 //作为表达式使用 //前++:++i先自增后赋值 //后++:i++先赋值后自增 // int j = 8; // int k = ++j;//等价于 j=j+1;k=j // System.out.println("k=" + k + "\n" + "j=" + j);//k=9 j=9 int k = j++;//等价于k=j;j=j+1; System.out.println("k=" + k + "\n" + "j=" + j);//k=8 j=9 } }
ArithmeticOperatorExercise01.java
//联系1 // public class ArithmeticOperatorExercise01 { //编写一个main方法 public static void main(String[] args){ // int i = 1;//i ->1 // i = i++;//规则使用临时变量:(1)temp=i;(2)i=i+1;(3)i=temp; // System.out.println(i);//1 // int j = 1;//j ->1 // j = ++j;//规则使用临时变量:(1)j=j+1;(2)temp=j;(3)j=temp; // System.out.println(j);//2 //测试输出 // int i1 = 10; int i2 =20; int i = i1++; //print后不加ln表示不换行 System.out.print("i=" +i);//10 System.out.println("i2=" +i2);//20 i = --i2; System.out.print("i=" +i);//19 System.out.println("i2=" +i2);//19 } }
ArithmeticOperatorExercise02.java
//课堂练习2 // public class ArithmeticOperatorExercise02 { //编写一个main方法 public static void main(String[] args){ //1.需求: //假如还有59天放假,问:合xx个星期零xx天 //2.思路分析 //(1)使用int变量 days 保存天数, //(2)一个星期是7天,星期数weeks就是days / 7,零xx天leftDays就是days % 7 //3.走代码 int days = 59; int weeks = days / 7; int leftDays = days % 7; System.out.println("合" + weeks + "个星期零" + leftDays + "天"); //合8个星期零3天 //1.需求: //定义一个变量保存华氏温度,华氏温度转换为摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。 // //2.思路分析 //(1)先定义一个double huaShi 变量保存 华氏温度 //(2)根据给出的公式,进行计算即可5/9*(华氏温度-100) //考虑数学公式和java语言的特性,此时写代码时5应改为5.0 //(3)将得到的结果保存到double sheShi double huaShi = 234.5; double sheShi = 5.0 / 9 * (huaShi - 100); System.out.println("华氏温度=" + huaShi + "对应的摄氏温度=" + sheShi); //华氏温度=234.5对应的摄氏温度=74.72222222222223 } }
RelationalOperator.java
// public class RelationalOperator { //编写一个main方法 public static void main(String[] args){ int a = 9; int b = 8; System.out.println(a > b);//true System.out.println(a >= b);//true System.out.println(a <= b);//false System.out.println(a < b);//false System.out.println(a == b);//false System.out.println(a != b);//true boolean flag = a > b; System.out.println("flag = " + flag);//flag = true } }
LogicOperator01.java
//演示逻辑运算符的使用 // public class LogicOperator01 { //编写一个main方法 public static void main(String[] args){ //&& 短路与和 & 案例演示 // int age = 50; if(age > 20 && age < 90){ System.out.println("ok100");//结果ok100 } //& 逻辑与的使用 if(age > 20 & age < 90){ System.out.println("ok200");//结果ok200 } //区别 int a = 4; int b =9; //对于&&短路与而言,如果第一个条件为false,后面的条件不再判断 if(a < 1 && ++b < 50){ System.out.println("ok300"); } System.out.println("a=" + a + "b=" + b);//结果a=4 b=9 //对于&逻辑与而言,如果第一个条件为false,后面的条件仍然判断 if(a < 1 & ++b < 50){ System.out.println("ok300"); } System.out.println("a=" + a + "b=" + b);//结果a=4 b=10 } }
LogicOperator02.java
//演示逻辑运算符 | 和 || 使用 // public class LogicOperator02 { //编写一个main方法 public static void main(String[] args){ // ||短路或 和 |逻辑或 案例演示 // 规则都为:两个条件中只要有一个成立,结果为true,否则为fasle int age = 50; if(age > 20 || age < 30){ System.out.println("ok100");//结果输出ok100 } //&逻辑与使用 if(age > 20 | age < 30){ System.out.println("ok200");//结果输出ok200 } //区别 //(1)||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高 //(2)|逻辑或:如果第一个条件为true,则第二个条件都会判断,效率低 int a = 4; int b = 9; if(a > 1 || ++b > 4){ System.out.println("ok300");//输出ok300 } System.out.println("a=" + a + "b=" + b);//a=4 b=9 if(a > 1 | ++b > 4){ System.out.println("ok300");//输出ok300 } System.out.println("a=" + a + "b=" + b);//a=4 b=10 } }
InverseOperator.java
//! 和 ^ 案例演示 // public class InverseOperator { //编写一个main方法 public static void main(String[] args){ //! 操作是取反 true->false,false->true System.out.println(60 > 20);//true System.out.println(!(60 > 20));//false //a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false boolean b = (10 > 1) ^ (3 < 5);//false System.out.println("b=" + b);//b=false } }
AssignOperator.java
//演示赋值运算符的使用 // public class AssignOperator { //编写一个main方法 public static void main(String[] args){ int n1 = 10; n1 += 4; //n1 = n1 +4 System.out.println(n1);//14 n1 /= 3; //n1 = n1 / 3 System.out.println(n1);//4 //复合赋值运算符会进行类型转换 byte b =3; b += 2;//b = byte(b + 2),直接写成b = b + 2是错误的因为b + 2的精度为int b++;//b = (byte)(b + 1) System.out.println(b);//6 } }
TernaryOperator.java
//三元运算符使用 public class TernaryOperator { //编写一个main方法 public static void main(String[] args){ int a = 10; int b = 99; //解读 //1.a > b 为false //2.返回 b--,先返回 b的值,然后再 b-1 //3.返回的结果是99 int result = a > b ? a++ : b--; System.out.println("result=" + result);//result=99 System.out.println("a=" + a);//10 System.out.println("b=" + b);//98 } }
TernaryOperatorDetail.java
//三元运算符细节 public class TernaryOperatorDetail { //编写一个main方法 public static void main(String[] args){ //表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换或强制转换) int a = 3; int b = 8; int c = a > b ? (int)1.1 : (int)3.4;//满足 double d = a > b ? a : b + 3;//满足int -> double System.out.println(c);//3 System.out.println(d);//11.0 } }
TernaryOperatorExercise.java
public class TernaryOperatorExercise { //编写一个main方法 public static void main(String[] args) { //案例:实现三个数的最大值 int n1 = 553; int n2 = 33; int n3 = 123; //思路 //1.先得到n1和n2中最大数,保存到max1 //2.然后再求出max1和n3的最大数,保存到max2中 int max1 = n1 > n2 ? n1 : n2; int max2 = max1 > n3 ? max1 : n3; System.out.println("最大的数是" + max2);//最大的数是553 //使用一条语句实现,推荐使用上面方法,后面会有更好的方法 int max = (n1 > n2 ? n1 : n2) > n3 ? (n1 > n2 ? n1 : n2) : n3; System.out.println("最大的数是" + max);//最大的数是553 } }
input.java
import java.util.Scanner;//把java.util下的Scanner类导入 public class input { //编写一个main方法 public static void main(String[] args) { //演示接收用户的输入 //具体步骤 //Scanner类表示简单的文本扫描器,在java.util包里 //1.引入Scanner类所在的包 //2.创建Scanner对象,new 创建一个对象,体会 Scanner myScanner = new Scanner(System.in); //3.接收用户输入,使用相关的方法 System.out.println("请输入名字"); //当程序执行到next方法时,会等待用户输入 String name = myScanner.next();//接收用户输入字符串 System.out.println("请输入年龄"); int age = myScanner.nextInt();//接收用户输入int System.out.println("请输入薪水"); double sal = myScanner.nextDouble();//接收用户输入double System.out.println("人的信息如下:"); System.out.println("名字=" + name + " 年龄=" + age + " 薪水=" + sal); } }
BinaryTest.java
//演示四种进制 public class BinaryTest { //编写一个main方法 public static void main(String[] args) { //n1 二进制,0b或0B开头 int n1 = 0b1010; //n2 10进制 int n2 = 1010; //n3 8进制,0开头 int n3 = 01010; //n4 16进制,0x或0X开头 int n4 = 0x10101; System.out.println("n1=" + n1);//10 System.out.println("n2=" + n2);//1010 System.out.println("n3=" + n3);//520 System.out.println("n4=" + n4);//65793 } } /* 0b110001100=1*2^2+1*2^3+1*2^7+1*2^8=4+8+128+256=396 02456=6*8^0+5*8^1+4*8^2+2*8^3=6+40+256+1024=1326 0xA45=5*16^0+4*16^1+10*16^2=5+64+2560=2629 */
/* 0b110001100 = 1*2^2+1*2^3+1*2^7+1*2^8=4+8+128+256=396 02456 = 6*8^0+5*8^1+4*8^2+2*8^3=6+40+256+1024=1326 0xA45 = 5*16^0+4*16^1+10*16^2=5+64+2560=2629 */
BitOperator.java
//位运算 // public class BitOperator { //编写一个main方法 public static void main(String[] srgs) { //推导过程 //1.得到2的原码 00000000 00000000 00000000 00000010 // 得到2的补码,和原码一样 00000000 00000000 00000000 00000010 //2.得到3的原码 00000000 00000000 00000000 00000011 // 得到3的补码,和原码一样 00000000 00000000 00000000 00000011 //3.按位与&; //00000000 00000000 00000000 00000010 //00000000 00000000 00000000 00000011 //00000000 00000000 00000000 00000010 运算结果得到为补码 //运算结果的原码是00000000 00000000 00000000 00000010 //结果就是2 System.out.println(2&3);//2 //推导的过程 //1.得到-2的原码 10000000 00000000 00000000 00000010 //2.得到-2的反码 11111111 11111111 11111111 11111101 //3.得到-2的补码 11111111 11111111 11111111 11111110 //4.按位取反~-2操作 00000000 00000000 00000000 00000001 运算结果得到为补码 //5.运算结果的原码是00000000 00000000 00000000 00000001 //结果就是1 System.out.println(~-2);//1 //推导过程 //1.得到2的原码 00000000 00000000 00000000 00000010 //2.得到2的补码,和原码一样 00000000 00000000 00000000 00000010 //3.~2操作 11111111 11111111 11111111 11111101 运算结果得到为补码 //4.运算结果的反码是 11111111 11111111 11111111 11111100 //5.运算结果的原码是 10000000 00000000 00000000 00000011 //结果就是-3 System.out.println(~2);//-3 //推导过程 //1.得到2的原码 00000000 00000000 00000000 00000010 // 得到2的补码 00000000 00000000 00000000 00000010 //2.得到3的原码 00000000 00000000 00000000 00000011 // 得到3的补码 00000000 00000000 00000000 00000011 //3.2|3操作 //00000000 00000000 00000000 00000010 //00000000 00000000 00000000 00000011 //00000000 00000000 00000000 00000011 运算结果为补码 //运算结果的原码是00000000 00000000 00000000 00000011 //结果就是3 System.out.println(2|3);//3 //推导过程 //1.得到2的原码 00000000 00000000 00000000 00000010 // 得到2的补码 00000000 00000000 00000000 00000010 //2.得到3的原码 00000000 00000000 00000000 00000011 // 得到3的补码 00000000 00000000 00000000 00000011 //3.2^3操作 //00000000 00000000 00000000 00000010 //00000000 00000000 00000000 00000011 //00000000 00000000 00000000 00000001运算结果为补码 //运算结果的原码是00000000 00000000 00000000 00000001 //结果就是1 System.out.println(2^3);//1 } }
BitOperator02.java
//位运算 // public class BitOperator02 { //编写一个main方法 public static void main(String[] srgs) { System.out.println(1 >> 2);//0 System.out.println(1 << 2);//4 System.out.println(4 << 3);//4*2*2*2=32 System.out.println(15 >> 2);//15*2*2=3 } }