类型转换
隐式转换
取值范围小的数据,给取值范围大的类型赋值,可以直接赋值
int a = 10; double b = a; System.out.println(b); //10.0
上述代码中,int占4字节,double占8字节。
赋值时,可以直接赋值,先将int转为doublue类型,系统在转换过程中会自动将int类型小数位补全。
举例说明:4升的水,要倒入8升的水桶中,可以直接倒入。
// 隐式转换 public class Expression { // 取值范围小的数据,给取值范围大的类型赋值,可以直接赋值 public static void main(String[] args) { int m = 10; double h = m; System.out.println(h); // 10.0 // 系统在将int转为double类型的时候,会自动在后面补全小数位。 int a = 10; double b = 10.1; double c = a + b; System.out.println(c); // 20.1 // 步骤解析:先将int类型转为double类型,在相加,相加后结果为小数,则用double类型去接收。 // byte short char 三个类型的数据在做运算的时候,会默认转为int类型。 byte d = 10; byte e = 20; int f = d + e; System.out.println(f); // 30 // 先将d e类型转为int类型,在做运算。 } }
强制转换
取值范围大的数据,给取值范围小的类型赋值,需要做强制转换。
double a = 10.10; // 报错,不兼容的类型: 从double转换到int可能会有损失 // 需要做强制类型转换 int b = a;
上述代码中,double占用内存8个字节,int占用内存4个字节。
4 => 8
4接收8,无法接受,所以需要做强制类型转换。
转换后可能会造成精度丢失问题。
转换格式:
目标数据类型 变量名 = (目标类型数据)值||变量
// 强制转换 public class Force { public static void main(String[] args) { double a = 10.10; // int b = a; // 错误: 不兼容的类型: 从double转换到int可能会有损失 // int类型的b需要接受double类型的a时,需要做强制转换。 // int占用内存4字节,double占用内存8字节。 // 4 =》 8 无法接受,所以需要强制转换。 int b = (int) a; System.out.println(b); // 10 会造成精度丢失问题 } }
类型转换demo
public class ConvertDemo { public static void main(String[] args) { // demo1 byte a = 3; byte b = 4; // byte 数据类型在做运算的时候,会自动转为int类型。 // byte c = a + b; // 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte c = (byte) (a + b); System.out.println(c); // demo2 // 以下代码不会报错。 // java常量优化机制:3 + 4的时候会判断结果(7)是否在byte取值范围内。 // 不在范围内直接报错,在范围内则编译通过。 byte d = 3 + 4; System.out.println(d); } }
算术运算
+ - * / %
// java中的算术运算 public class Arithmetic { public static void main(String[] args) { // 加 减 乘 System.out.println(1 + 2); System.out.println(1 - 3); System.out.println(1 * 4); // 除 // * 整数相除,结果只能为整数 System.out.println(10 / 5); System.out.println(10 / 3); // 只能拿到整数 // 想要拿到小数,做除法的时候就必须加入小数。 System.out.println(10.0 / 3); System.out.println(10 / 3.0); // 取余 System.out.println(5 % 2); // 1 5 / 2 余数为1 // 字符的 + 操作 // 字符a会转码 97 System.out.println('a' + 1); // 97 + 1 // 字符串 + 操作 // 字符串相加 =》 相连 System.out.println("1" + 1); // 11 } }
算术运算demo
输入一个三位数,分别输出个位,十位,百位
个位计算:值 % 10
十位计算:值 / 10 % 10
百位计算:值 / 100
输入使用java工具类 Scanner
// 输入一个三位数,分别取个位 十位 百位 import java.util.Scanner; public class ArithmeticDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); // 个位数 System.out.println("个位数为:" + num % 10); // 十位数 System.out.println("十位数为:" + num / 10 % 10); // 百位数 System.out.println("百位数为:" + num / 100); } }
自增自减
对变量或值的+1或-1
常量不可自增自减
// 符号在后 // 先操作,后运算 // 符号在前 // 先运算,后操作 // 自增自减 int a = 20; int b = 10; a++; b--; System.out.println(a); // 21 System.out.println(b); // 9
赋值运算
+= -+ *= /+ %=
// java中的赋值运算 public class Operators { public static void main(String[] args) { // 直接赋值,将10赋值给变量a int a = 10; // += // a += 10 可以理解为 a = a + 10 a += 10; System.out.println(a); // 20 // -= // a -= 10 可以理解为 a = a - 10 a -= 10; System.out.println(a); // *= // a *= 10 可以理解为 a = a * 10 a *= 5; System.out.println(a); // /= // a /= 10 可以理解为 a = a / 10 a /= 10; System.out.println(a); // %= // a %= 10 可以理解为 a = a % 10 a %= 2; System.out.println(a); } }
关系运算
== != > >= < <=
// java中的关系运算符 public class RelationalOperation { public static void main(String[] args) { System.out.println(1 == 3); // false; System.out.println(1 != 2); // true System.out.println(1 > 2); // false System.out.println(2 >= 2); // true System.out.println(2 < 3); // true System.out.println(10 <= 10); // true } }
短路运算
&& 前面为false 后面不执行
|| 前面为true 后面不执行
// java中的短路运算 public class Shortcircuit { // 短路运算总结 // && 前面为false 后面不执行 // || 前面为true 后面不执行 public static void main(String[] args) { int a = 10; int b = 20; // a先计算 后做运算 11 < 10 false // && 前面为false 则后面不执行 System.out.println(++a < 10 && ++b > 10); System.out.println(a + "---a"); // 11 System.out.println(b + "---b"); // 20 &&后未执行,所以值未变 int c = 10; int d = 10; // c先计算 11 > 10 true // || 前面为true 则后面不执行 System.out.println(++c > 10 || ++d > 10); System.out.println(c + "---c"); // 11 System.out.println(d + "---d"); // 10 ||后未执行,所以值未变 } }
三元表达式
表达式 ? 表达式1 : 表达式2
表达式为true 则取表达式1的值
表达式为false 则取表达式2的值
// java中的三元表达式 public class Ternary { public static void main(String[] args) { int a = 10; int b = 20; // 表达式 ? 表达式1 : 表达式2 // 表达式为true 则取表达式1的值 // 表达式为false 则取表达式2的值 int max = a > b ? a : b; System.out.println(max); // 20 } }
demo 三个数中取最大值
// demo 找三个值中的最大值 int v1 = 100; int v2 = 200; int v3 = 300; // 先比较v1 v2的值,取最大值,在将最大值与v3比较 int result = v1 > v2 ? v1 : v2 > v3 ? v2 : v3; System.out.println(result);
if判断
满足条件则执行,不满足则不执行
// java中的if判断语句 public class Ifstatement { public static void main(String[] args) { System.out.println("start"); int age = 20; // 满足条件,则会执行 if (age >= 18) { System.out.println("年龄满18,可以去上网"); } // 不满足条件,不会执行 if (age <= 14) { System.out.println("还没上高中"); } System.out.println("end"); } }
if else
满足条件执行if中代码 不满足则执行else中的代码
// if else int num = 20; // if (num % 2 == 0) { System.out.println("偶数"); } else { System.out.println("奇数"); }
if else if else
// if else if else int score = 80; if (score >= 85) { System.out.println("优秀"); } else if (score <= 85 & score >= 60) { System.out.println("及格"); } else { System.out.println("不及格"); }
最终demo 成绩录入
import java.util.Scanner; // if判断demo public class Ifdemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入您的成绩:"); int score = sc.nextInt(); if (score >= 0 && score <= 100) { if (score >= 95 && score <= 100) { System.out.println("自行车一辆"); } else if (score >= 90 && score <= 94) { System.out.println("游乐场一次"); } else if (score >= 80 && score <= 89) { System.out.println("变形金钢一个"); } else { System.out.println("挨顿揍"); } } else { System.out.println("输入的成绩有误"); } } }
发表评论