聊一聊java中的常量与变量

首先在讲讲变量之前我想先聊一聊常量的概念,区别于变量,常量是java运行过程中值不发生改变的量,比如整数常量100、10000;小数常量1.0;字符常量’中’、‘a’;字符串常量"java";布尔常量 true、false;最后的空常量null;以及最后的自定义常量。这些常量在java程序编写一旦写上就不可改变。
那什么是变量呢?变量就像一个可以储存数据的容器,不同类型的变量可以储存不同类型数据。数据类型分类基本数据类型和引用数据类型,基本数据类型又可分为整形:byte(字节)、short(短整型)、int(整形)、long(长整型);浮点型:float(单精度)、double(双精度)、布尔型:boolean;字符型:char(字符)。可以简称为四类八种。

基本数据类型

上面一段中讲了基本数据都有哪些种类,接下来具体聊一聊什么是基本数据类型,以及基本数据类型的使用方法。
在说明之前,我先简单说一下计算机中字节的概念。是字节(byte)计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位,一个字节可以表示的数据范围为-128~127。简单说就是储存数据的单位,不同的数据类型有不同的存储空间,byte是1字节、short是2字节、int是4字节、long是8字节,float是4字节、double是8字节、boolean是1字节、字符型是2字节。

整形

占用大小(字节)

表示范围

byte

1字节

-128~127

short

2字节

-32768~32767

int

4字节

-231~231-1

long

8字节

-263~263-1

float

4字节

-e^38 ~e^38 (e表示已10为底)

double

8字节

-e^38 ~e^38

boolean

1字节

true和false

char

2字节

0~65535

变量在程序中如何声明及初始化

先我们先声明一个整形int类型的变量

int i;
i=100;

然后再声明一个浮点型double类型的变量

double d;
d=3.1415926;

在变量声明及初始化过程中切记不要超出所使用变量的范围

基本数据类型的数据转换

1.给定值如果是整数默认就是int类型,如果加上L/l就会变成长整形long

long l=10000000000L;

2.给定值如果是小数默认就是double类型,如果加上F/f就会变成float类型

float f=3.14F

3.隐式类型转换:类型提升(从小到大)
1)byte、short、char的任意操作都会提升为int类型

byte a=1;
int b=1;
//由于a是byte类型在进行加法操作后的结果会变成int类型
int c=a+b;
byte a=1;
byte b=1;
//就算a和b都是byte类型,相加后的结果也是int类型
int c=a+b;

2)整数类型提升为小数类型时精度会丢失

long l=168416548948L;
float f=l;//结果为1.68416543E11

4.强制类型转换
1)大范围的数据类型可以强制转化为小范围数据类型,数据值在不超范围的情况时如下

int a=100;
byte b=a;

2)大范围的数据类型可以强制转化为小范围数据类型,在超范围的情况下会造成数据精度丢失

double b=3.1415926535;
  float f=(float)b;  //f=3.1415927

3)我在举一个神奇的例子

int a=128;
 //b在进行强制类型转后的结果为-128
 byte b=(byte)a;  //b=-128

在这个例子中我们可以看到在程序编译后的结果为-128;这是因为int类型的数据在内存中占4个字节强转为byte后会变成1个字节。

int a=100;//  可以表示为                 00000000 00000000 00000000 10000000
 byte b=(byte)a;//在强转为byte后                                    10000000 
 //也就是说变成了一个字节 10000000中第一个1代表符号“-”号 然后由于又要代表数据 
 //2进制数10000000 变成十进制数128,故最后出来的结果为-128

这里用到了计算机底层的2进制,不太清楚的小伙伴可以去翻阅一下相关的资料

最后由于我的水平有限,写出来也就这么多,感谢阅读。