Java基础之一字面值常量与变量

Java基础之一字面值常量与变量

字面值常量分类

字面值常量有两种使用场景:一种是在定义变量时进行初始化,这是一种极好的习惯;另外一种比如在计算圆的面积时,会用到3.1415也就是圆周率,也用到字面值常量,但是这种用法并不是一个很好的编程习惯,后面我们会使用final修饰的常量去替换字面值常量,对于字面值常量我们分为以下五种:

类别 示例 说明
整型 10、12 主要是有进制的区别,当表示二进制时用0b10(表示二进制用0b)、010(表示八进制用0)、0x10(表示十六进制用0x)
浮点型 3.1415 浮点字面值常量当没有任何的标志时会存储成double类型,当要使用float类型时,3.14f表示该数为float类型
字符型 ‘c’、’1’ ‘10’错误,包含了两个字符,分别是字符1和字符0
字符串型 “zhujunpeng” 该类型不是基本数据类型,在Java中被称为引用数据类型
布尔型 true、false 只有这两个值
变量分类

  • 整型变量分为四种:
类型 占用内存 实例
byte 1个字节 byte b = 120
short 2个字节 short s = 30
int 4个字节 int i = 1000
long 8个字节 long l = 100L

注意:Java默认的整型是int,如果要使用long类型的数据,必须要在数据之后添加L或者小写的l,一般使用的是大写的L,代码的可读性更好。
Java是编译型语言,在Java编译阶段检查数据是否超过执行的值,如果没有超过则不会报错,但是要注意,Java在编译阶段并没有将值存储在内存中,只有在运行阶段才会将值存储在内存中,举个例子:

byte b1 = 10 ; //在编译阶段,会检查发现10没有超过byte类型的最大值
byte b2 = 12; //同样没有超过
byte b = b1 + b2; //byte类型在计算时会自动提升为int类型,此时就会报错,因为b1+b2实际上是int类型,但是左侧的变量为byte类型,在编译时就会报错:提示可能损失精度。
  • 浮点类型分为两种:
类型 占用内存 实例
float 32位 float f = 3.17f
double 64位 double d = 3.1415

注意:浮点数默认是double类型,如果要使用float,则在数据之后添加f标志

  • boolen类型(boolen):
    网上一直有一个争论,就是说boolen类型在内存中到底是用几个字节在存储?回答基本上是以下几种:1bit、1字节这两种,但是Java 2.0规范(sun公司发表的Java语言白皮书)中明确表示,boolen类型的变量占一个字节或者四个字节,那么你可能有疑问了,为什么会这么奇怪的答案,到底是1个字节还是4个字节?Java 2.0规范中解释,如果申请一个普通的boolen类型变量,则会分配四个字节,如果申请一个boolen类型的数组,则数组的每个单元都是一个字节,由于Java的安全性,我们不能像C语言那样使用&符号去操作地址,查看到底是怎么进行存储的,所以也无从考证,并且上面的说法是sun公司给出的,可信度很高(毕竟java语言是sun公司开发出来的),我们应该记住,并且结束这场争论。

  • 字符类型(char):
    在Java中字符存储为Unicode编码,占用2个字节,当需要传输或者存储到硬盘的时候可能具体实现为UTF-8(without BOM)格式,但是一旦存储到内存中之后,就编程两个字节,简单的解释其中的原因:因为我们实际上存在这样的需求,当我们在存储英文字母等时实际上只需要一个字节就可以,但是当我们存储汉字时必须使用两个字节,如果我们一味的使用Unicode编码就会造成空间的浪费,所以Unicode在具体的实现技术上可能使用的是UTF-8编码,这样就能灵活的调整存储的字节。

  • 字符串类型(String)
    String不属于基本数据类型,属于引用数据类型,但是String是我们经常用到的格式,所以将以下这个问题,""属于空串,只要用""引起来就是字符串,比如"a"。一切的字符串都要使用""引起来,换句话说只要用""引起来全部都是String类型。

类型转换

  • 类型转换的规则:
    • 小数据类型向大数据类型转换:自动类型转换
    • 大数据类型想小数据类型转换:强制类型转换

我们对这个问题进行形象的描述,我们将小数据类型类比为一个100ml的矿泉水瓶,将大数据类型类比为一个1000ml的矿泉水瓶,那么将小数据类型转换为大数据类型,实际上就相当于将原来存储在100ml的的东西放在1000ml的瓶中,这显然是可以的,但是当我们反过来就不一定可以了,所以在编译的过程中,java编译器会检查可能发生数据的溢出,报错让程序员检查,只能说这样的做法十分的人性化,避免了程序员不小心犯错,实际上我们在编程的过程中应该很好的设计数据的类型。

技巧:在做程序时一定要认真的设计变量的数据类型,这是一种良好的编程风格

  • 两个隐藏的原则
  • 凡是byte、short、char类型在进行运算的时候会首先将转换为int类型,如下代码:
byte b1 = 1;
byte b2 = 2;
byte b3 = b1+b2;//输出错误,将代码修改为byte b3 =(byte)(b1+b2),原因是在运算时发生了自动类型的提升
System.out.println(b3);
System.out.println('a'+1) //输出为98,char发生了自动类型提升
* 两个不同的数据类型数据在运算时,结果会转换成大的数据类型,这也是一种自动类型提升,例如:
int i = 10;
long l = 100;
i = i + l;
System.out.println(i);//输出错误,需要进行强制类型转换
联系我

Java基础之一字面值常量与变量_第1张图片

你可能感兴趣的:(Java)