数据类型及其转换


重点:标识符,Java语言的数据类型
难点:基本数据类型的精度

标识符与关键字

标识符

用来标识类名,数组名,文件名的有效字符(自己可以命名的地方)

命名规定:

标识符由字母、下划线、$和数字(0-9)组成,长度不限;
1. 第一个字符不能是数字字符
2. 不能是关键字
3. 不能是 ture ,false 和null(虽然他们不是关键字)和保留字 goto ,const
4. 区分大小写
5. 不能包含空格

命名规范:

类名和接口:多个单词组成所有单词首字母大写
变量名和函数名:多个单词组成时第一个单词首字母小写,其他首字母大写
常量名:多个单词组成时,字母全部大写,单词之间用__分隔
1”见名知意“
2 由于Java采用Unicode字符集,因此标识符也可以用就汉字声明,但是不建议使用

关键字

具有特定用途,赋予特定意义的一些单词(一般都是小写)
例如:boolean ,byte,short,int ,float,double, char,if ,else 等;

数据类型

基本数据类型(8种)

逻辑类型(布尔型):boolean

整数类型:byte,short ,int ,long

字符类型:char

浮点类型:float,double

逻辑类型(布尔型)
变量:使用关键字boolean来声明逻辑变量,声明时也可以赋给初值。
常量:true、false
只能取两个值之一:true,false
常常在条件判断,循环结构中使用
例如: boolean x,ok=true,关闭=false;
整数类型
在这里插入图片描述
bit 计算机中的最小存储单位,byte 计算机中基本存储单元;
byte型
变量:例如:byte x =-12,tom=28;
常量:一定范围内的int 型常量赋值给byte型变量
内存分配1个字节=8 bit 位 (byte 计算机中基本存储单元)
范围: -128~127
short 型
变量:例如: short x=12,y=1234;
常量:和byte型类似,Java中也不存在short型常量的表示法,但可以把一定范围内的int型常量赋值给short型变量。
对于short型变量,内存分配给2个字节,占16bit位.
范围:-2^15~ 2^15-1
int 型:
变量:例如: int x= 12, y;
常量:int型常量共有三种表示方法:
十进制: 123,6000(十进制)
八进制: 077(八进制,是零开头);
十六进制: 0x3ABC(十六进制)
对于int型变量,内存分配给4个字节(byte)=32bit位.(bit 计算机中的最小存储单位)
范围:-2^31~ 2^31-1
long 型
变量: 例如: long width=12L,height=2005L,length;
常量:声明long型常量须后加‘l’或“L",例如108L(十进制)、07123L(八进制)、 0x3ABCL(十六进制)
对于long型变量,内存分配给8个字节,占64bit位。
范围 :-2^63~ 2^63-1
字符类型
char类型
常量:‘A’,‘b’,‘?’,‘!’,‘9’,‘好’,‘\t’,‘き’,‘モ’等,即用单引号扩起的Unicode表中的一个字符。
例如:char ch=‘A’,home=‘家’,handsome=‘酷’;
变量: 使用关键字char来声明char型变量,对于char型变量,内存分配给2个字节,占16bit位
转义字符常量:例如:\n(换行), \b(退格),\t(水平制表),\‘(单引号), \“(双引号),\(反斜线), \r 回车符
1.有些字符(如回车符)不能通过键盘输入到字符串或程序中,就需要使用转义字符常量,
2.Java语言使用Unicode标准字符集,最多可以识别65536个字
3.直接使用Unicode值来表示字符型常量 ,‘\uXXXX ’ 其中XXXX代表一个十六进制数
浮点类型(带小数点的数值
在这里插入图片描述
float型
常量:453.54F(小数表示法),2e40f(2乘10的40次方,指数表示法).
变量:使用关键字float来声明float型变量,例如:float x=22.76f,tom=1234.987f,weight=1e-12F;
精度:float单精度,变量在存储时保留8位有效数字。
对于float型变量,内存分配给4个字节,占32bit位。
特别注意的是float常量后面必须有后缀f 或F。
double 型
常量:238.539d,231.987(小数表示法),1e-90(1乘10的-90次方,指数表示法).对于double常量,后缀有“d”或“D”,但允许省略后缀.
变量:使用关键字double来声明double型变量,例如:double height=23.345,width=34.56D,length=1e12;
对于double型变量,内存分配给8个字节,占64位 。
精度:double双精度变量在存储double型数据时保留16位有效数字,实际精度取决于具体数值。

引用数据类型

类(class)

接口 (interface)

数组([ ])

类型转换运算

前提:只是7种基本数据类型变量之间的运算,不包含Boolean类型的。

自动类型提升

1.结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型;
2.说明:此时的容量大小,表示的是数的范围的大和小。比如:float容量小于double的容量
byte、char、short→int→ long→float→double
3. 注意:byte,short,char 数据类型数据在运算时都会自动转换成int 类型的数据再计算。

byte b1=1;                     
byte b2=2;                        
byte b3=b1+b2;                 
System.out.println(b3);  (error)   
byte b1=1;
byte b2=2;                      
byte b3=(byte)(b1+b2);                
System.out.println(b3);    (ture)

强制类型转换

自动类型提升的逆运算
1.需要使用强制转换符:( ) 。 例:double d=12.99
int i=(int)d;//截断操作不遵循四舍五入 输出为 12
2.注意点:强制类型转换,可能导致精度损失
3. 当把int型常量赋值给byte和 short变量时,不可超出byte,short的取值范围,否则必须进行强制类型转换运算。如 byte b =128;(error) byte b=(byte)128(ok)
4.注意:两个不同精度的数据运算取决于高精度的数据类型

int i=10;                        
long l=20;                      
i=i+l;                             
System.out.println(i);    (error)  
int i=10;     
long l=20;                            
i=(int)(i+l);                         
System.out.println(i);        (ture)

下面介绍了两种常出现的编码情况:

编码情况1:
long l=123212;
System.out.println(l);//可以运行(int型自动转换为long 型)
//编译失败: 过大的整数
//long l1=21241432462535655;
long l1=21241432462535655L;
//**************************
//float f1=12.3;(12.3 默认为double型,容量大的转换成容量小的,属于强制转换)//编译失败
float 定义的常量后必须加F或 f
编码情况2:
//整型常量,默认类型为int型
//浮点型常量,默认类型为double型
byte s =12;
//byte d=s+1;//编译失败
//float f =s+12.3;//编译失败
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值