【Java】数据类型和运算符

目录

一、八大基本数据类型

1、数值型(有符号)

2、字符型,默认值为“\u0000”

3、布尔型,默认值为false

二、引用数据类型:

三、计算机存储数据的基本单位

1、两种基本单位

2、单位换算

3、举例

四、数据类型的应用

1、变量的初始值

2、变量溢出问题

3、 定义变量

4、包装类

5、字面量

6、其他的整型变量

五、类型转换与类型提升

1、关于int,byte,char之间的转换问题

六、 字符串类型

一、算术运算符

1、基本的数学四则运算+ - * /  取模%

2、增量运算符 += -= *=  /=

3、自增/自减运算符++ --

 二、关系运算符

三、逻辑运算符

1、逻辑与&&

2、逻辑或 || 

3、逻辑去反!

4、关于逻辑运算符的短路求值问题

四、位运算符

1、按位与&

2、按位或|

3、按位异或^

4、按位取反~

五、移位运算符

1、左移位<<

2、右移位>>

3、无符号右移>>>

六、条件运算符

三目运算符

七、运算符优先级


Java是一门强类型语言,定义一个变量时,必须要明确该变量的类型。

所有数据类型都有默认值(类中属性才具备默认值),方法中的局部变量不存在默认值。

一、八大基本数据类型

1、数值型(有符号)

最高位不存储具体数据(01),0表示正数,1表示负数。

(1)整型,默认值均为0

数据类型关键字内存占用
字节型byte1字节
短整型short2字节
整型int4字节
长整型long8字节

(2)浮点型,默认值均为0.0

数据类型关键字内存占用
单精度浮点数float4字节
双精度浮点数double8字节

2、字符型,默认值为“\u0000”

数据类型关键字内存占用
字符型char2字节

3、布尔型,默认值为false

数据类型关键字内存占用
布尔类型boolean没有明确规范,1字节

二、引用数据类型:

数组、类、接口,默认值为null。

字符串String也是类。

三、计算机存储数据的基本单位

1、两种基本单位

bit:二进制位

byte:字节(计算机保存单位,以字节为基本单位)

2、单位换算

1 byte = 8 bit

1 GB = 8G byte

1KB = 1024 byte

1MB = 1024 KB

1 GB = 1024 MB

1 TB = 1024 GB

1 PB = 1024 TB

3、举例

int类型为4字节,则有32比特位,但是第一位是符号所以数量级是2^31。

四、数据类型的应用

1、变量的初始值

在main方法中定义的局部变量a没有复制的情况下,是没有默认值的,可以这样定义但是在使用的时候会出现错误(使用的情况比如输出a的值),所以使用的时候一定要定义值。

 如果是在类中定义的变量a是成员变量,他有默认值(就是该数据类型的默认值),可以在main方法中不用赋值就使用。

2、变量溢出问题

int类型的数据范围在[-2147483648,2147483647]。

如果超出范围的赋值,int只能表示32bit,无法再给上进位,只能进位到符号位。

所以这个时候就需要长整型long,long是8字节,就可以存储2147483648。

 当一个数比长整型的最大值还大,可以用BigInterger类来存储,也可以用字符串String来存储。

3、 定义变量

long和float定义变量时,赋的值后需要加L、l和F、f,但是long不是必须的,float是必须的,不加会编译错误。而布尔类型只可以定义false和true。

而char类型定义时需要加单引号,因为java语言字符采用Unicode编码,16位编码(2字节),所以支持地球上所有的语言,都可以定义为char类型。

4、包装类

在java中一切皆对象,认为一切失误都可以用类来进行描述,但是8大基本类型不属于类。

所以在java中将8大基本类型都有对应的类进行包装,这种类称之为包装类。

数据类型对应的包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

5、字面量

直接写出来的数值就称之为字面量,字面量也存在数据类型。

10->整型字面量,默认为int类型

10.1->浮点数字面量,默认为double类型

'a'->字符字面量,默认为char类型

false->布尔值字面量,默认为boolean类型

"abc"->字符串字面量,默认为String类型

6、其他的整型变量

0b10 为二进制表示十进制2

010 为八进制表示十进制8

0x10 为十六进制表示十进制16

五、类型转换与类型提升

小类型转换为大类型是自动转换。

大类型转换为小类型需要强制类型转换,有精度丢失问题。

1、关于int,byte,char之间的转换问题

计算机存储数据时默认采用4字节存储,所有小于4字节的数据类型,隐式提升为int之后进行存储,boolean除外。

(1)byte和int转换

byte是1字节,所以范围是[-128,127],所以在这个范围内的数可以直接转换,但是当赋的值不在这个范围内就会出现错误,所以需要在值前面加上(byte),但是输出结果仍然不是正确的,如下图,赋值130,强制类型转换后变成了-126。

如下图,在编译时,a和b直接算做了int类型,并且是变量不知道值具体是多少不知道是否在范围内,所以需要强制类型转换。

 char和int的转换与byte和int转换是类似的。

2、类型提升

当不同数据类型进行运算时,会将小的类型自动提升为大的类型参与运算。

如下图,进行了两次自动类型提升,b赋值为2是int类型,自动提升味double。输出结果时,a参与运算又自动提升为double类型,结果则为0.5。

六、 字符串类型

1、int转换为String

在java中字符串和任何其他类型“+”,都会将其他类型转换为字符串类型拼接。

调用String的valueof函数也可以输出为字符串类型。

 2、String转换为int

调用整形包装类Interger的parseInt方法,前提字符串必须是纯数字字符串。

 如果字符串是纯数字但是超过了整型的存储范围,会报错。


一、算术运算符

计算结果要么是小数要么是整数。

1、基本的数学四则运算+ - * /  取模%

2、增量运算符 += -= *=  /=

3、自增/自减运算符++ --

当+号在前面,先运算再取值。

+号在后面,先取值在运算。

 二、关系运算符

计算结果为布尔值,要么是false,要么是true

==  !=  >  <  >=  <=

关系运算符不能连着写。

三、逻辑运算符

计算结果也是布尔值。

1、逻辑与&&

语法规则:表达式1&&表达式2,其中两个表达式都是布尔表达式,得到的结果也是布尔值。

当且仅当表达式1和2都是true,表达时才会返回true。

2、逻辑或 || 

语法规则:表达式1 || 表达式2,其中两个表达式都是布尔表达式,得到的结果也是布尔值。

当且仅当表达式1和2都是false,表达时才会返回false。

3、逻辑去反!

!表达式1 表达式1是布尔表达式。进行取反操作。

4、关于逻辑运算符的短路求值问题

表达式1&&表达式2,当表达式1为false,不管表达式2直接返回false(第二个表达式根本不执行)

表达式1 || 表达式2,当表达式1为true,不管表达式2直接返回true。

四、位运算符

直接在二进制位上操作的运算符& |  ^ ~

1、按位与&

如果两个二进制位都为1,则返回1,否则返回0。

2、按位或|

如果两个二进制位都为0,则返回0,否则返回1。

3、按位异或^

两个二进制位相同返回0,不相同返回1。

4、按位取反~

符号位也会发生变化,正数变为负数,负数变为正数。

正数变为负数,则加符号减一。

负数变为正数,则绝对值减一。

五、移位运算符

直接在二进制位上进行操作的运算符

1、左移位<<

最左侧不要,最右侧补0。

当一个数x<<1,结果左移乘二

2、右移位>>

最右侧不要,最左侧补0。

当一个数x>>1,结果左移除二。

3、无符号右移>>>

六、条件运算符

三目运算符

语法规则:条件表达式1?表达式2:表达式3

根据布尔表达式1的返回值,返回true则取布尔表达式2的值,返回false则取表达式3的值。

表达式2和表达式3必须是同类型的,否则会发生隐式转换。

三目运算符不能单独存在,必须有一个相对应的变量接收它的返回值。

七、运算符优先级

* / 优先级高于+ -

需要优先运算的加上括号。

加法优先级高于移位运算。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世界级白日梦冠军

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值