类型转换与运算 您所在的位置:网站首页 强制类型转换运算符怎么使用java 类型转换与运算

类型转换与运算

#类型转换与运算| 来源: 网络整理| 查看: 265

Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有较严格的校验

Java中类型转换主要分为两类:自动类型转换(隐式) 和 强制类型转换(显式)。

1)自动类型转换(隐式)

在Java中,自动类型转换的规则如下:

将小的数据类型自动转换为大的数据类型。如果两个操作数其中一个是 double 类型,另一个操作数就会转换为 double 类型。如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。如果其中一个操作数是 long 类型,另一个操作数将会转换为 long 类型。否则,两个操作数都将转换为 int 类型。 int intValue = 10; double doubleValue = intValue; // 自动类型转换,将int转换为double float floatValue = 5.5f; double result = floatValue * doubleValue; // floatValue自动转换为double再相乘 long longValue = 10000000000L; double doubleResult = longValue * doubleValue; // longValue自动转换为double再相乘

(2)强制类型转换 (显式)

在Java中,如果需要将一个数据范围大的类型转换为数据范围小的类型,就需要使用强制类型转换(显式类型转换)。强制类型转换需要使用括号将目标类型括起来,并将需要转换的值放在括号内。但需要注意,强制类型转换可能会导致数据丢失或溢出,因此应谨慎使用。

注意事项:

不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型

如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失

强制类型转换不一定能成功,不相干的类型不能互相转换

5,类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。

(1)int与long之间:int 会被 提升为 long

当int类型和long类型进行运算时,int类型会提升为long类型,故所得的值也是long类型

(2)byte 与 byte的运算

byte类型的变量在进行运算时,编译器会先将其提升成int类型再进行运算,所以得到的结果也是int

类型提升小结:

不同类型的数据混合运算,范围小的会提升为范围大的对于short、byte这类小于4字节的类型,在运算前编译器会先将其提升至int类型后再进行计算

引用数据类型:

所谓引用数据类型,即是实质内容存储在对象中,该变量实际存储的是对象的地址。

1,字符串类型

在Java中使用String类定义字符串类型,比如:

在某些情况下,需要将字符串和整形数字之间进行转换:

(1)int 转成 String

(2)String 转成 int

3,运算符

1,算术运算符

算数运算符分为三种,如下:

基本四则运算符:加减乘除模(+ - * / %)

注意:

(1)整型/整型,结果还是整型,会自动舍弃小数位(与C语言一致)。如下:

移位运算符有三个: > >>> ,都是二元运算符,且都是按照二进制比特位来运算的。

左移 :最左侧位舍弃,最右侧位补0

注意:左移时丢弃的是符号位,因此正数左移可能会变成负数

右移 >> :最右侧位舍弃,最左侧补符号位(正数补0,负数补1)

无符号右移 >>> :最右侧位舍弃,最左侧位补0,不考虑正负数。

注意:

1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方

2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方

3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替

4. 移动负数位或者移位位数过大都没有意义

(若想结果为带小数,需要两个操作数中至少有一个操作数是浮点数类型)

(2)做除法和取模时,右操作数不能为0

(3)在Java中,不仅可以对整型取模,也可以对double取模,但是没有意义

(4)两侧操作数类型不一致时,向类型大的提升

增量运算符:加等,减等,除等,乘等,模等..(+=,-=,/=,*=,%= ..)

在java语言中,加等运算符会自动进行类型转换,如下:

自增自减运算符:前置++,后置++,前置--,后置--

注意:

(1)在Java语言中,对一个n=n++赋值后,会取赋值时的值

后置++,先使用再++

2,关系运算符

关系运算符与C语言一致,主要有==, !=, , =,其计算结果为true或者false。

需要注意的是,当需要多次判断时,不能连着写,比如:3 < a < 5,Java程序与数学中是有区别的。

3,逻辑运算符

逻辑运算符主要有三个: && || ! ,运算结果都是 boolean类型。

&& 与 || 两个逻辑运算符都遵守短路求值的规则。

但是,在Java语言中,& | 在布尔表达式中,也可以充当逻辑运算符,与&& || 不同的是,其不支持短路求值,示例如下:

4,位运算符

位运算符主要有四个: & | ~ ^ ,除 ~ 是一元运算符外,其余都是二元运算符。

Java中的按位运算符与C语言中同理,下面简要概述:

按位与 & :有0为0,全1为1

按位或 | : 有1为1,全0为0

注意: 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算

按位取反~ :如果该位为 0 则转为 1, 如果该位为 1 则转为 0

按位异或^ :相同为0,不同为1

5,移位运算符

6,条件运算符

条件运算符只有一个,简称为三目运算符,如下:

表达式1?表达式2:表达式3

当表达式1的值为true时,整个表达式的值为表达式2的值

当表达式1的值为false时,整个表达式的值为表达式3的值

注意:

表达式2和表达式3的结果要是同类型的,除非能发生隐式类型转换表达式不能单独存在,其产生的结果必须要被使用

三目运算符示例:

7,运算符的优先级

运算符是有优先级的,但是具体的规则不必记忆,我们只需要在有歧义的语句中加上小括号即可。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有