Lazy loaded image
编程
📗Day02-类型转换和运算符
字数 3153阅读时长 8 分钟
2019-1-14
2025-8-13
type
status
date
slug
summary
tags
category
icon
password

类型转化

byte short int long float double char直接可以互相转化 但不包括 boolean类型, 布尔类型和数字类型不能转换

自动类型转化

  1. 范围大的变量可以接收范围小的值
  1. 范围小的变量和范围大的变量做算数运算时,结果自动提升为是范围大数据类型,float4个字节,但是比long8个字节的容量还要大。
  1. 特别的: char byte short 只要做算数运算,结果是 int
  1. 只涉及除了boolean以外的其他7中基本数据类型

强制类型转换:

  1. 范围大的值可以强制转换成为范围小的变量,可能会出现精度丢失的问题
  1. 范围小的值可以强制转换成为范围大的变量
  1. 需要使用强转符:()

基本数据类型变量间运算规则

自动类型提升:当容量小的数据类型变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型 byte/char/short-->int-->long-->float-->double,特别的,当byte、char、short三种类型的变量做运算时候,结果为int型 强制类型转换:通常是自动类型提升逆过程,从容量大的往容量小的去转换,需要使用强制转换符,注意强制类型转换的时候,可能导致精度受损。

String与其他类型数据的计算

  1. string属于引用数据类型,字符串
  1. 声明string类型变量的时候,需要使用""
  1. string可以与8种基础数据类型做连接运算+,运算的结果仍然是string类型的

算数运算符的使用

  1. 如果是 byte / short /char 来做算数运算,结果是 int 类型
  1. 整数和整数做算数运算,得到的结果一定是整数 10 / 4 --> 2 而不是 2.5
  1. 浮点数做算数运算,会有精度丢失的风险(浮点数的二进制表示方式导致的)
  1. 字符串只支持 + 运算,得到的结果是一个字符串,用来拼接字符串

赋值运算符

= 等号被称为赋值运算符,作用是将等号右边的值赋值给等号的左边! 等号的左边不能是常量、表达式
复合赋值运算符: += -= *= /= %=

交换两个变量的值

自增、自减运算符

前自增运算 ++a 后自增运算 a++ 相同点:无论是前自增还是后自增, 变量a 都会加1 不同点:前自增是先自增后赋值,后自增是先赋值再自增

表达式

使用运算符连接起来的语句,有一个确定结果,自增运算符也是

比较运算符

也被称为关系运算符,操作的是布尔类型带值,运算的结果也是布尔类型的值(true和false),< >= <= == !=
  1. 比较两个数据是否相等,要使用==,而不是 =,= 是赋值运算符,将等号右边的值赋值给等号左边,不能用于比较;
  1. 字符串不能使用 == 和 != . == 和 != 用于引用数据类型,比较的是内存地址。要使用 equals方法来比较。
  1. > < >= <= :只能使用在数值类型的数据之间。

逻辑运算符

逻辑与
逻辑或
逻辑非
逻辑异或
&
|
!
^
&&
||
逻辑运算符得到的结果是 布尔类型,而且参数运算的值也是布尔类型

位运算符

位运算符将数字转换成为二进制以后再计算
按位与
按位或
按位异或
按位取反
左移
右移
无符号右移
&
|
^
~
<<
>>
>>>
notion image
怎样区分逻辑与 和 按位与,逻辑或 和 按位或? 如果参与运算的数是 布尔类型, & | 表示的是逻辑运算符; 如果参与运算的数是 数字类型, & | 表示的是位运算符。
特别说明的,位运算符操作的都是整型的数据

位运算的练习

运算符的优先级要求:

  1. 表达式尽量不写得太复杂
  1. 对于需要先运算的表达式,建议加 ()
 
上一篇
Day01-变量和数据类型
下一篇
Day03-流程控制语句(顺序、选择 、循环)