type
status
date
slug
summary
tags
category
icon
password
类型转化
byte short int long float double char直接可以互相转化
但不包括 boolean类型, 布尔类型和数字类型不能转换
自动类型转化
- 范围大的变量可以接收范围小的值
- 范围小的变量和范围大的变量做算数运算时,结果自动提升为是范围大数据类型,float4个字节,但是比long8个字节的容量还要大。
- 特别的: char byte short 只要做算数运算,结果是 int
- 只涉及除了boolean以外的其他7中基本数据类型
强制类型转换:
- 范围大的值可以强制转换成为范围小的变量,可能会出现精度丢失的问题
- 范围小的值可以强制转换成为范围大的变量
- 需要使用强转符:()
基本数据类型变量间运算规则
自动类型提升:当容量小的数据类型变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型
byte/char/short-->int-->long-->float-->double,特别的,当byte、char、short三种类型的变量做运算时候,结果为int型
强制类型转换:通常是自动类型提升逆过程,从容量大的往容量小的去转换,需要使用强制转换符,注意强制类型转换的时候,可能导致精度受损。
String与其他类型数据的计算
- string属于引用数据类型,字符串
- 声明string类型变量的时候,需要使用""
- string可以与8种基础数据类型做连接运算+,运算的结果仍然是string类型的
算数运算符的使用
- 如果是 byte / short /char 来做算数运算,结果是 int 类型
- 整数和整数做算数运算,得到的结果一定是整数 10 / 4 --> 2 而不是 2.5
- 浮点数做算数运算,会有精度丢失的风险(浮点数的二进制表示方式导致的)
- 字符串只支持 + 运算,得到的结果是一个字符串,用来拼接字符串
赋值运算符
= 等号被称为赋值运算符,作用是将等号右边的值赋值给等号的左边!
等号的左边不能是常量、表达式
复合赋值运算符: += -= *= /= %=
交换两个变量的值
自增、自减运算符
前自增运算 ++a 后自增运算 a++
相同点:无论是前自增还是后自增, 变量a 都会加1
不同点:前自增是先自增后赋值,后自增是先赋值再自增
表达式
使用运算符连接起来的语句,有一个确定结果,自增运算符也是
比较运算符
也被称为关系运算符,操作的是布尔类型带值,运算的结果也是布尔类型的值(true和false),< >= <= == !=
- 比较两个数据是否相等,要使用==,而不是 =,= 是赋值运算符,将等号右边的值赋值给等号左边,不能用于比较;
- 字符串不能使用 == 和 != . == 和 != 用于引用数据类型,比较的是内存地址。要使用 equals方法来比较。
- > < >= <= :只能使用在数值类型的数据之间。
逻辑运算符
逻辑与 | 逻辑或 | 逻辑非 | 逻辑异或 |
& | | | ! | ^ |
&& | || | ㅤ | ㅤ |
逻辑运算符得到的结果是 布尔类型,而且参数运算的值也是布尔类型
位运算符
位运算符将数字转换成为二进制以后再计算
按位与 | 按位或 | 按位异或 | 按位取反 | 左移 | 右移 | 无符号右移 |
& | | | ^ | ~ | << | >> | >>> |

怎样区分逻辑与 和 按位与,逻辑或 和 按位或?
如果参与运算的数是 布尔类型, & | 表示的是逻辑运算符;
如果参与运算的数是 数字类型, & | 表示的是位运算符。
特别说明的,位运算符操作的都是整型的数据
位运算的练习
运算符的优先级要求:
- 表达式尽量不写得太复杂
- 对于需要先运算的表达式,建议加 ()
- 作者:tacjin
- 链接:http://jin.wiki/article/65e0c91f-8af2-4c63-8806-800a497d7a72
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。