专业的JAVA编程教程与资源

网站首页 > java教程 正文

数据类型的转换、运算符(数据类型转换的类是,单选题)

temp10 2024-10-11 18:28:39 java教程 14 ℃ 0 评论

一:数据类型的转换

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);
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表