JAVASE-02:常量、变量、运算符和数据类型转换方式

JAVASE-02:常量、变量、运算符和数据类型转换方式


1.常量

程序执行过程当中 其值不发生变化的量,在java中分为字面值常量自定义常量

字面值常量–

整数常量 -- 100  200  3  
小数常量 -- 3.123  4.21
布尔常量 -- true  false
字符常量 -- 被单引号 所括起来的单个字符  'a' '1' 'A'
字符串常量 -- 被双引号所括起来的单个或多个字符  ”a“  ”asd“   ”你好“   ”hello world“
空常量   --   null

2.进制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YWM0WZMz-1594537196092)(D:\JavaStudy\07-11\进制的由来.bmp)]

国际组织规定8个开关位为一个字节 1byte=8 bit

1kb=1024byte 1M=1024kb …

由 1 、0 组成的数据称之为2进制数据,但是对于描述数据表现形式过长,对其进行优化

8进制: 把2进制数据每3位分一组,不够的补零,然后把每一组数据换算为十进制,拼起来就是8进制数据

16进制: 把2进制数据每4位分一组,不够的补零,然后把每一组数据换算为十进制,拼起来就是16进制数据 (由0–9 a–f组成)

进制越大数据表现形式越短
在这里插入图片描述
在这里插入图片描述
为了区分不同进制数

有符号数据表示法:符号定位法–符号位区分正负 0-正数 1-负数;计算机做底层运算,采用补码来运行,正数的原码 反码 补码是一样的;负数的反码是其他位取反,符号位不变

原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码: 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码: 正数的补码与其原码相同;负数的补码是在其反码的末位加1。

符号位数值位
原码10000111
反码11111000
补码11111001

练习:

A:已知原码求补码:已知某数X的原码为 0B 1 0110100,试求X的反码,补码。

​ 0B 1 0110100

反码 0B 1 1001011
补码 0B 1 1001100

B:已知补码求原码:已知某数X的补码 0B11101110,试求其原码。

​ 0B 1 1101110

反码 0B 1 1101101
原码 0B 1 0010010


3.变量

在程序执行过程中其值可以发生变化的量,其实就是在内存中开辟的一小块空间可以用来存储数据

对于变量我们对其有一定的约束,约束他的范围和取值类型–通过数据类型

java中的数据类型基本数据类型引用数据类型

基本数据类型:整数型 浮点型 布尔型 字符型

**整数型** 

byte--占一个字节(8bit) 所代表整数范围 (-128 ~ +127) 

short--占两个字节(16bit) (-2^15 ~ 2^15-1)

int--4个字节(32bit) (-2^31 ~ 2^31 - 1)

long--8个字节(64bit) (-2^63 ~ 2^63 - 1) (L)

 **浮点型**

float--占4个字节 (-3.403*10^38 ~ 3.403*10^38) (F)

double--占8个字节 (-1.798*10^308 ~ 1.798*10^308)

 **布尔型** 

boolean--占1个字节 只占两个值 true false

 **字符型**

char--占两个字节 (0 ~ 2^16 - 1 = 65535)
Java中的字符可以存储一个中文汉字 Unicode编码中的每个字符占用两个字节

定义变量格式: 数据类型 变量名=值;

整数默认是int类型的 , 浮点数默认是 double类型的


注意事项:

1.在同一个作用域里面不能定义两个同名变量(作用于指同一对大括号所括起来的范围);

2.变量必须赋值才能使用;

3.一行也可以定义多个变量;

4.为什么byte的取值范围是-128~127:-1-127的结果应该是-128, 在用补码运算的结果中, [1000 0000]补 就是-128. 但是注意因为实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示.(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 这是不正确的),使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127]。


4.数据类型的转换机制

4.1 java中的数据类型的隐式转换:

当byte short char参与运算时,会自动提升为int类型;

如果还有long float double参与运算,则会相应的提升为long float double类型;

byte short char他们三个之间不参与转换,boolean不参与数学运算。

4.2 **强制类型转换:**原理-把多余字节丢弃掉,保留目标数据类型的字节,有可能会发生精度损失,不建议使用。
在这里插入图片描述
4.3 **常量优化机制:**当多个常量参与运算时,会先计算他们的结果在不在这个数据类型的范围内,如果在就报错,如果不在就报错。

4.4 整数默认是int类型,小数默认是double类型。

4.5 char可以表示一个中文 占两个字节 GBK码表一个汉字占两个字节 UTF-8码表 一个汉字占3个字节。

4.6 **字符类型提升:**字符参与运算时会查找该字符在ASCII码表中的十进制值

’a’=97 ‘A’=65 ‘0’=48 其余往后推(空格也是字符)。

4.7 字符串 “ ” 的拼接:+加号 一种作用就是我们数学中的相加作用,在代码中还有一种拼接符的作用。当+号的运算两段,只要任意一端是字符串,那么就会起拼接符的作用,将两端内容拼接起来形成一个新的字符串


5.运算符

对常量和变量进行操作的符号-数学运算符 比较运算符 逻辑运算符 位运算符 三元运算符

5.1 数学运算符 + - * / ++ – %

/除 两个整数形相除,结果取商

++自增1 --自减1 单独使用时放在前面或者后面没有区别,

++/–在后 先使用再自增 ++/–在前 先自增再使用

5.2 赋值运算符 = ,+= ,-= ,*= ,/= ,%=

= 把右边的赋值给左边, b+=10等价于b=b+10, +=等赋值运算符会自动强制类型转换

5.3 比较运算符 <, >, ==, <=, >=, !=, instanceof 比较运算符的运算结果是布尔类型
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值