Two Day(1)---基本数据类型

来源:互联网 发布:java中重载的意义 编辑:程序博客网 时间:2024/05/23 17:53

好,现在我们来说一下java数据类型的问题,这一点很值得你去学习一下,会又你收获的地方
Java语言基础(常量的概述和使用)(掌握)
    A:什么是常量
在程序执行的过程中其值不可以发生改变
B:Java中常量的分类
字面值常量
自定义常量(面向对象部分讲)
C:字面值常量的分类


字符串常量        用双引号括起来的内容
整数常量        所有整数
小数常量        所有小数
字符常量        用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
布尔常量        较为特殊,只有true和false
空常量        null(数组部分讲解)
关于进制转化的问题我们就不在这阐述了,感兴趣的可以参考一下计算机组成原理,值得提一下的是计算机中所有的数值运算都是以补码的形式运算的。

Java语言基础(变量的概述及格式)
A:什么是变量
在程序执行的过程中,在某个范围内其值可以发生改变的量
B:变量的定义格式
数据类型 变量名 = 变量值;
C:为什么要定义变量
用来不断的存放同一类型的常量,并可以重复使用


02.10_Java语言基础(数据类型的概述和分类)
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类型没有明确指定他的大小


好了基本的也介绍完了先在我先提一句话(整数默认的数据类型是int类型,浮点数默认的数据类型是double)
1:






大家发现了吗? long类型按理说是可以存储888888888的,但是为是说是过大的整数呢? 对是的“整数默认的数据类型是int类型,888888888超出了int类型的表达范围,所以报错了”!
浮点数默认的数据类型是double同理我就不演示了。
大家可能会得上面的代码有些疑问:为什么你不是说整数默认的数据类型是int型,byte b = 7;怎么没有报错呢??? 因为java编译器有常量优化机制,既在编译时会判断7有没有超出-128--127的取值范围之间,如果没有,则不会提示有精度损失。

数据类型转化之(隐式转换)
int x = 3;
byte b = 4;
x=x+b;
这段代码是没有问题的
因为java在进行计算是,默认的是将数据类型从较小的转化到较大的数据类型后进行计算的。

数据类型转化之(强制类型转化)
int x = 3;
byte b = 4;
b = b + x;
会报错提示说会有精度损失。
我们可以这样写:
b = (byte) (b + x) ;
注意:强制类型转化如果超出了被赋值的数据类型的取值范围,得到的结果会与你期望的不同。

面试题值变量相加和常量相加的区别
w
我们把那个注释部分调试一下:



为什么会是这样呢,又得扯会了: b1 b2 是变量jvm无法判断其值为多少,两数相加可能会溢出,所以b1 b2都会提升为int类型,故会报错,
下面这个怎么会可以呢,java编译器有常量优化处理机制,既在编译的过程中会计算3+4 的结果7 就相当于 byte b4 = 7 结合上面提到的,所以不会报错。


值得一提的是进行混合运算时 byte char short 型都会转化为int型进行计算 其他的数据类型会按照从小转到大的数据类型。
好了 那摩long类型和float类型谁大谁小呢??



所以我们可以知道float比long类型要大;
为什么呢??
IEEE规定float的格式为:
1位符号位    23位尾数位 8位指数位
指数位的大小为0-255
0代表0
255代表无穷小
还剩1-254
但是IEEE规定在原基础上减掉127
故为 -126-127
故其全值为-126-127
所以要不long大






1 0
原创粉丝点击