常量的概述和使用
A、什么是常量
在程序执行的过程中其值不可以发生改变
B、Java中常量的分类
字面值常量
自定义常量
C、字面值常量的分类
字符串常量 用双引号括起来的内容
整数常量 所有整数
小数常量 所有小数
字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
布尔常量 只有true和false
空常量 null
变量
定义:在程序执行的过程中,在某个范围内其值可以发生改变的量
格式:数据类型 变量名 = 变量值
例:int a = 1; String str = “abc”;
为什么要定义变量
用来不断的存放同一类型的变量,并可以重复使用
定义不同数据类型的变量
A:为什么有数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
B:Java中数据类型的分类
基本数据类型
引用数据类型
面向对象部分讲解
C:基本数据类型分类(4类8种)
整数型
byte 占一个字节 -128到127
short 占两个字 -2^15~2^15-1
int 占四个字节 -2^31~2^31-1
long 占八个字节 -2^63~2^63-1
浮点型
float 占四个字节 -3.403E38~3.403E38
double 占八个字节-1.798E308~1.798E308
字符型
char 占两个字节 0~65535
布尔型
boolean
boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
使用变量的注意事项
a:作用域问题
同一个区域不能使用相同的变量名
b:初始化值问题
局部变量在使用之前必须赋值(我们现在所使用的变量都是局部变量,因为都是定义在方法中的)
数据类型转换之隐式转换
A:案例演示
a:int + int
b:byte + int
B:Java中的默认转换规则
取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
数据类型转换之强制转换
A:强制转换问题
int a = 10;
byte b = 20;
b = a + b;
B:强制转换的格式
b = (byte)(a + b);
C:强制转换的注意事项
如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
注意:
进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char -- int -- long -- float -- double(依次向右提升)
变量相加和常量相加的区别
题目:
看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
回答:
b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
byte类型的变量在进行运算的时候,会自动类型提升为int类型
byte b4 = 3 + 4;
3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
long与float的取值范围谁大谁小
A:它们底层的存储结构不同。
B:float表示的数据范围比long的范围要大
long:2^63-1
float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
几个基本类型的取值范围如下:byte,short,char < int < long < float < double
不同进制数据的表现形式
A、二进制的数据表现形式
由0,1组成,以0b(b可以大写也可以小写)开头
B、八进制的数据表现形式
由0,1,...7组成,以0开头
C、十进制的数据表现形式
由0,1,2,......9组成,整数默认是十进制的
D、十六进制的数据表现形式
由0,1.....9,a,b,c,d,e,f(大小写均可)组成。以0x开头