JavaSE(2) -- 常量变量和数据类型

目录

一、常量与变量

二、数据类型 

1. 数据类型的分类

2. 数据类型的字节大小及数据范围

3. 类型转化

3.1 自动类型转换(隐式) 

3.2 强制类型转换(显式)

4. 类型提升


一、常量与变量

常量:程序运行期间,固定不变的量

变量:会发生改变的量

注意:

在之前的文章中,我们提到过“Java源文件都是由一个或者多个类组成”

既然如此,为了更好的分辨成员变量与局部变量,我们来看一个图:

成员变量 :定义在类体中方法外的变量

                   如果没有指定初始值,Java编辑器会为其指定默认值。对于Boolean变量,默认值是false;对于byte、short、int、和long变量,默认值是0;对于char变量,默认值是'\0'空字符;对于float和double变量,默认值是0.0;对于引用型变量,默认值是null

局部变量 :定义在类体中方法中的变量 

                   如果没有指定初始值,Java编辑器会为报错!

不管是哪种变量,定义后都应该初始化,防止出现不必要的错误          以上提到的Boolean、byte、short等是变量的数据类型,接下来一起来看Java中数据类型的分类...

二、数据类型 

数据类型就是用来定义不同种类变量的

1. 数据类型的分类

2. 数据类型的字节大小及数据范围

​​​​​​​

​​​​​​​​​​​​​​

 特别注意:

1. 系统默认整型是int型,为了区分int类型与long类型变量,通常在long类型定义的变量数值后加上l或者L。尽量大写。因为小写的l和数字1在某些编辑器实在是太像了!

2. 定义float类型,float a=1 如果不在数值后标注小写f或者大写F,编译器会自动识别成double型。最好写成float a=1.F

3. Java中的char类型是2个字节,与c语言中不同!  char定义的数值只能是正整数!                 Java中使用 Unicode表示字符. 因此一个字符占用两个字节,表示的字符种类更多, 包括中文

 执行 javac 的时候可能出现乱码,可以在执行 javac 时加上 -encoding UTF-8 选项即可

4.  boolean 类型只有 true 或 false ,Boolean类型是用来判断条件的。                                        Java当中只能用true or false判断条件,不能用0或者非0。否则程序报错!

数据范围到底是怎么计算出来的呢?

我们以char类型举例来看一看 :

注意:10000000在计算机中无法用原反补码的形式计算,计算机会自动将其识别成-128

将数据范围画成一个⚪,以中心为轴。我们发现:无论是左半圆还是右半圆,顺时针旋转,数值会越来越大!

做个题感受一下:

解析:答案:256 

3. 类型转化

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

在Java中,当参与运算数据类型不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换(隐式)  和 强制类型转换(显式)

3.1 自动类型转换(隐式) 

数据范围小的转为数据范围大的时会自动进行

​​​​​​​ 整型默认是int型,所以这里整型100赋值给a变量的话,会发生隐式类型转化​​​​​

​​​​​​​

整型与double的转换

3.2 强制类型转换(显式)

范围大的赋值给范围小的会报错。但特殊情况下,我们又需要这种操作,该怎么办呢?

这就需要我们的强制类型转换了!

1. 范围大的类型 -> 范围小的, 需要强制类型转换, 但是可能精度丢失
2. 不相干的类型不能互相转换

4. 类型提升

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

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

2. byte与byte的运算

 注意:

虽然 a 和 b 都是 byte, 但是在计算 a + b 时会先将 a 和b 都提升成 int, 再进行计算。得到的结果也是 int, 此时赋给 c, 就会出现上述错误。
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据。为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 都会先提升成 int, 再参与计算。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值