网站首页 > java教程 正文
一:数据类型的转换
Java中要求参与计算的数据,需要数据类型一致,数据类型不一致需要发生类型的转换。
1.自动转换
int类型变量和byte类型变量进行加法运算,结果是什么数据类型?
int i = 6;
byte b = 8;
运算结果,变量的类型将是int类型,这就是出现了数据类型的自动类型转换现象。
自动转换:将取值范围小的类型自动提升为取值范围大的类型
public static void main(String[] args) {
int i = 6;
byte b = 8;
// byte x = b + i; // 报错误
//int类型和byte类型运算,结果却是int类型
int j = b + i;
System.out.println(j);
}
同理可得,int类型和double类型运算
public static void main(String[] args) {
int i = 6;
double d = 6.6;
double e = d + i;
System.out.println(e);
}
转换的规则
范围小的类型向范围大的类型提升,byte、short、char运算时直接提升为int
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
2.强制转换
将取值范围大的类型强制转换成取值范围小的类型。
格式
数据类型 变量名 = (数据类型)被转数据值;
比如:
// double强制转成int类型,去掉小数点。
public static void main(String[] args) {
double i = 6.6;
int b = (int)i;
System.out.println(b);
}
同理
public static void main(String[] args) {
//short类型变量,内存中2个字节
short s = 6;
int i = 8;
/*
编译失败
s和i运算的时候,i是int类型,s会被提升为int类型
s+i后的结果是int类型,将结果在赋值会short类型时发生错误
short内存2个字节,int类型4个字节
必须将int强制转成short才能赋值
*/
//s = s + i;报错
s =(short)(s + i);//编译成功
System.out.println(s);
}
注意
浮点转成整数,取消小数点,造成数据损失精度。
int强转short少2个字节,能造成数据丢失。
二:运算符
对变量进行操作
运算符的分类有:算数运算符、赋值运算符、比较运算符、逻辑运算符、三元运算符
+ 加法运算,字符串连接运算
- 减法运算
* 乘法运算
/ 除法运算
% 取模运算,两个数字相除取余数
++ 、 -- 自增自减运算
1.算术运算符
public static void main(String[] args) {
// 定义变量
int a = 6;
int b = 8;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
System.out.println("‐‐‐‐‐‐‐‐‐");
// 整数相除,结果是整数,得到小数,需要有小数参与运算
System.out.println(8.0 / 6);
System.out.println(8 / 6.0);
}
Java中,整数相除结果是整数,例如
int a = 4567;
System.out.println(a/1000*1000);
%取余结果符号与左边符号相同
++运算,变量自己增长1。相反,--运算,变量自己减少1,用法与用法与++一样
变量在独立运算时,前++和后++无区别
变量前++:如++i;
变量后++:如i++;
和其他变量放在一起,前++和后++就不同
变量前++:变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2。
public static void main(String[] args) {
int a = 1;
int b = ++a;// 先++,后=赋值
System.out.println(a);
System.out.println(b);
}
变量后++:变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2,b的结果是1。
public static void main(String[] args) {
int a = 1;
int b = a++;// 先++,后=赋值
System.out.println(a);
System.out.println(b);
}
+符号在字符串中的操作:
符号在遇到字符串的时候,表示连接、拼接的含义。
"a"+"b"的结果是“ab”,连接含义
public static void main(String[] args) {
//+遇到字符串表示连接
System.out.println("abc" + "def");
System.out.println("abc" + 6);
System.out.println("abc" + 6 + 6);
System.out.println(6 + 6 + "abc");
}
2.赋值运算符
= 赋值
+=加后赋值
-=减后赋值
*=乘后赋值
/=除后赋值
%=取模后赋值
public static void main(String[] args) {
int a = 10; // 基本赋值运算符
System.out.println(a);
int i = 20;
// i += 5;
// 将+=左边的变量和右边的值进行操作(+), 将结果赋值给左边的变量
i = i + 5;
System.out.println(i);
byte b = 5;
b += 2;
// 不兼容类型: 从int转换到byte可能会有损失
// b = (byte)(b + 2); byte + int => int + int => int
System.out.println(b);
// 注意:左边一定要是变量
int x = 5;
//10 += x;
// 10 = 10 + x; // 10是常量不能改变值
}
3.比较运算符
比较运算符又叫关系运算符,是两个数据之间进行比较的运算,运算结果都是布尔值true或者false
== 比较符号两边数据是否相等,相等结果是true。
< 比较符号左边的数据是否小于右边的数据,如果小于结果是true。
> 比较符号左边的数据是否大于右边的数据,如果大于结果是true。
<= 比较符号左边的数据是否小于或者等于右边的数据,如果小于或等于结果是true。
>= 比较符号左边的数据是否大于或者等于右边的数据,如果小于或等于结果是true。
!= 不等于符号 ,如果符号两边的数据不相等,结果是true。
public static void main(String[] args) {
System.out.println(5 == 5);
System.out.println(3 == 5);
System.out.println(3 > 5);
System.out.println(3 < 5);
System.out.println("----------");
System.out.println(3 <= 5);
System.out.println(5 <= 5);
System.out.println(8 >= 5);
System.out.println(5 >= 5);
System.out.println(5 != 5);
System.out.println(3 != 5);
int i = 5;
int j = 6;
System.out.println(i = j);
System.out.println(i == j);
}
4.逻辑运算符
逻辑运算符,是用来对两个布尔类型进行运算的,运算结果都是布尔值true或者false
与,| 或,! 非,^ 异或案例
public static void main(String[] args) {
// &: 与,并且,都要满足
// &: 有false则false
System.out.println(false & false);
System.out.println(false & true);
System.out.println(true & false);
System.out.println(true & true);
System.out.println("----------------");
// |: 或,或者,满足一个即可
// |: 有true则true
System.out.println(false | false);
System.out.println(false | true);
System.out.println(true | false);
System.out.println(true | true);
System.out.println("----------------");
// !: 非,反过来
System.out.println(!false);
System.out.println(!true);
System.out.println(!!true);
System.out.println("----------------");
// ^: 异或
// ^: 不同为true,相同为false.
System.out.println(false ^ false);
System.out.println(false ^ true);
System.out.println(true ^ false);
System.out.println(true ^ true);
}
&& 逻辑与,|| 逻辑或案例
public static void main(String[] args) {
// &&: 双与
// &&: 结果和&一样 有false则false, 具有短路效果,左边为false右边不执行,提高效率
System.out.println(false && false);
System.out.println(false && true);
System.out.println(true && false);
System.out.println(true && true);
int i = 3;
int j = 4;
// false && true
System.out.println(i == j && ++i > 1); // 有false则false,左边为false,不管右边是什么,结果是false
System.out.println(i); // 3, i的值没有变化,说明右边没有走
System.out.println("---------");
// ||: 双或
// ||: 结果和|一样 有true则true, 具有短路效果,左边为true右边不执行,提高效率
System.out.println(false || false);
System.out.println(false || true);
System.out.println(true || false);
System.out.println(true || true);
int m = 3;
int n = 3;
// true || true
System.out.println(m == n || ++ m > 1); // 有true则true,左边是true,不管右边是什么,结果是true
System.out.println(m); // 3, m的值没有变化,说明右边没有走
// & 和 && 结果是一样的, &&具有短路效果,工作中常用&&
// | 和 || 结果是一样的, ||具有短路效果,工作中常用||
/*
什么时候用&&,什么时候用||?
如果2个条件都需要满足&&
如果只需要满足其中一个条件即可 ||
你去相亲,你的要求是女的活的, 2个都要满足使用&&
你去相亲,你的要求是漂亮的或者有钱的,2个条件满足其中一个就可以 ||
*/
}
5.三元运算符
格式:数据类型 变量名 = 布尔类型表达式?结果1:结果2;
计算方式:
布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。
布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。
public static void main(String[] args) {
int a = 43;
int b = 20;
int c = a > b ? 200 : 20;
System.out.println(c);
}
猜你喜欢
- 2024-10-11 Java的“异常”(JAVA的异常体系)
- 2024-10-11 第四讲《JAVA基础之运算符》,小妙招教你速记、速填坑
- 2024-10-11 容易让人忽视的,java高精度运算(java高精度转低精度的原则)
- 2024-10-11 提高千倍效率的 Java 代码小技巧(java提高班)
- 2024-10-11 一文搞明白java中的位运算、补码、反码、原码
- 2024-10-11 十五、Java运算符-赋值运算符与instanceof运算符
- 2024-10-11 一文掌握Java二、八、十六进制运算实现原理
- 2024-10-11 计算机进制转换(计算机进制转换教程)
- 2024-10-11 Java基础之try catch finally的原理
- 2024-10-11 LeetCode算法第29题:两数相除(计算两数相除并输出结果)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)