java02 数据类型 数据转换 运算符
1 数据类型
java中数据分为基本数据(4类的8种)和引用数据
说明
浮点数 :默认double类型。L 可以不加,如果右边字符区域小于左边。
public class Hello{ public static void main(String[] args){ //输出整数 int类型 System.out.println(1024); //输出整数 这是一个浮点数,默认double System.out.println(10.2); //long --float,范围是float范围更大,符合从小到大的规则 double num2 = 2.5F; System.out.println(num2); } } 结果: 1024 10.2 2.5
自动转换: int→long 符合数据范围从小到大的要求
public class Hello{ public static void main(String[] args){ //格式:范围小的类型 范围小的变量名 = 范围小的类型 原本范围大的数据 long num = 100L; System.out.println(num); } } 结果 100.0
强制类型转换格式:范围小的类型 范围小的变量名 = 范围小的类型 原本范围大的数据
public class Hello{ public static void main(String[] args){ //格式:范围小的类型 范围小的变量名 = 范围小的类型 原本范围大的数据 int num = (int) 100L; System.out.println(num); } } 结果 100
注意事项:
1.强制类型转换,一般不建议使用,主要是有可能精度损失,数据溢出
简单说就是整数过大会溢出,小数会丢弃
public class Hello{ public static void main(String[] args){ //世界人口70亿 int num = (int) 7000000000L; System.out.println(num); } } 结果: -1589934592 发生了溢出,也就是水撒了
2 byte short char 三种数学运算,例如+
流程 :首先提升为int类型,然后进行运算
byte + byte → int + int
public class Hello{ public static void main(String[] args){ char zifu1 = 'A'; //char 类型进行数学运算,那么字符按照一定规则会进行换算 System.out.println(zifu1 + 1); } } 结果66
public class Hello{ public static void main(String[] args){ char zifu1 = 'A'; //char 类型进行数学运算,那么字符按照一定规则会进行换算 System.out.println(zifu1 + 1); byte num1 = 40; byte num2 = 50; int re1 = num1 + num2; System.out.println(re1); //byte + short → int + int → int short num3 = 60; //需要用short (两个变量) short re3 = (short)(num3 + num2); System.out.println(re3); } } 结果 66 90 110
3 boolean类型不能发生数据类型转换
2 运算符
2.1定义:
运算符 进行特定的计算
表达式 用运算符连起来的公式 就是表达式
2.2分类:
2.2.1. 算术运算符
public class Hello{ public static void main(String[] args) { //两个常量之间可以进行运算 System.out.println(20+30); int a = 10; int b = 20; //首先计算得到表达式的值,然后再打印输出这个结果 System.out.println(a-b); //被除数/除数 = 商。。。余数 float result1 = b / a; System.out.println(result1); } }
package hello; public class Hello{ public static void main(String[] args){ String str1 = "hello"; int str2 = 20; System.out.println(str1); // 字符串类型的加号,字符串是引用型变量,加号属于连接功能 数据类型 变量名称 = 数据值 System.out.println(str1+str2); //优先级问题 int str3 = 30; System.out.println(str1 + str2 +str3); } }
自增自减运算符
++ 自增 让一个变量涨一个数据1 写在变量名字之前,之后
-- 自减 让一个变量减一个数据1 写在变量名字之前,之后
使用方式
单独使用 变量前后++ -- 无区别
混合使用 变量前++ 用完再加; 变量后++用前加
public class Hello{ public static void main(String[] args){ int num1 = 10; System.out.println(num1); num1++;// 单独使用,意思是独占一行,前++与后++无区别 System.out.println(num1); ++num1;// 单独使用,意思是独占一行,前++与后++无区别 System.out.println(num1); System.out.println("----------------"); int num2 = 20; System.out.println(num2++); System.out.println(num2); System.out.println(++num2); } }
结果 :
10
11
12
----------------
20
21
22
说明:
取模运算符只有对整数才有意义。
一旦数据有不同类型的,以数据类型范围大的为准。
2.2.2.赋值运算符
赋值运算符包含 基本运算符和复合运算符(包含算术运算符)
基本运算符:= 代表右侧数据 赋值给 左侧的变量;
复合运算符:
package hello; public class Hello{ public static void main(String[] args){ int a = 10; int b = 10; int c = 10; int d = 10; a += 10; // 实际效果为 a = a + 10; System.out.println(a); b -= 10; // 实际效果为 b = b - 10; System.out.println(b); c /= 10; // 实际效果为 c = c / 10; System.out.println(c); d %= 10; // 实际效果为 d = d % 10; System.out.println(d); } }
2.2.3.比较运算符
说明:
两个等号连起来叫比较,比较结果是 true 或 false,一个等号叫赋值;
比较运算符是二元运算符,不允许出现1<x<3这类表达式出现,只能用逻辑运算符表达
public class Hello{ public static void main(String[] args){ //常量与常量对比 System.out.println(10 > 5); int num1 = 100; System.out.println(num1 > 101); System.out.println(10 == 10); System.out.println(20 != 20); } }
结果
true
false
true
false
2.2.4.逻辑运算符
与 并且 && 全都是true 才能true
或 或者 || 部分true或者全都是true 是true
非 取反 ! 全都是false 才是true
说明
逻辑运算符是 连接两个或多个字符的表达式
条件A && 条件B && 条件C
短路 与&& 或|| 具有短路效果,如果根据左边已经判断得到最终结果,那么表达式为false
public class Hello{ public static void main(String[] args){ // false System.out.println(true && true); // true System.out.println(3 < 4 && 10 < 20); System.out.println( true || false); int a = 10; // ++a 未改变a的值,因为下面表达式左边为false,不再执行。 System.out.println(3 > 4 && ++a < 100); // 使用|| 左边为true,右边将不再执行 System.out.println("------------"); int b = 20; System.out.println( 3 < 4 || ++b < 100); System.out.println( b ); System.out.println( 3 < 4 && ++b < 100); System.out.println( b ); } } 结果 true true true false ------------ true 20 true 21
2.2.5三元运算符
一元运算符:
只需要一个数据就可以进行操作的运算,例 取反 ! 自增++ 自减--
二元运算符:
需要两个数据才可以进行操作的运算,例如 + – * / 和赋值=
三元运算符:
需要三个数据才可以进行操作运算符 如
数据类型 变量名称 = 条件判断 ? 表达A : 表达式B;
流程:
1 判断条件是否成立
2 如果成立为true,那么表达式A 的值赋给左侧的变量;
3如果不成立为false,那么将表达式B的值赋值给左侧的变量;
public class Hello{ public static void main(String[] args){ int a = 10; int b = 20; //数据类型 变量名称 = 条件判断 ? 表达A : 表达式B; int x = a > b ? a: b; System.out.println(x); } }
结果
20
说明:
1.右侧表达式必须同时符合左侧的数据类型要求,int x = 3> 4? 2.4:10; 不对
2.三元运算符的结果 必须被引用,要么有变量接受,要么println打印出来;
3.三元表达式可以直接放在打印结果
public class Hello{ public static void main(String[] args){ int a = 10; int b = 20; //数据类型 变量名称 = 条件判断 ? 表达A : 表达式B; int x = a > b ? a: b; System.out.println(x); //三元表达式可以直接放在打印结果 是正确写法 System.out.println(x = a > b ? a: b); } }
结果
20
20