【Java】基础知识:变量、Java基本数据类型、类型转换

Java基础知识

2021/2/27 周六
复习内容: Java的变量,基本数据类型,数据类型转化

如有错误,欢迎在评论区指出,非常感谢!


一、变量

Java中用于保存数据的量称为变量 ,变量其实代表一块内存区域

1. 声明变量

(1) 变量必须先声明,才能使用,不能直接使用没有声明的变量

数据类型  变量名;  // 声明变量的方法
int a,b,c; // 同时声明多个变量,a,b,c三个变量都是int类型

(2) 变量可以保存数据,只能保存特定(变量)类型的数据,任何一个变量都有数据类型

(3) 在同一个作用域下面,变量不能被重复声明

System.out.println(age); //Error   age没有声明过	
int age;
age = 19;	
age = 18.8; //Error   age是int类型  不能保存浮点类型的数据
int age; //Error  age不能被重复声明
2. 变量名规则

(1) 变量名由 数字、字母、_(下划线)以及$组成

(2) 不能由数字开头

(3) 不能和Java的关键字冲突

如 byte short int long float duble char boolean void break continue for if else …

(4) 在特定的编码下,可以使用中文变量名,但不建议使用。

建议用英文单词,需要用拼音时一般有2种命名方法:

驼峰式: nianLing 首个单词小写,后面的单词首字母大写
下划线: nian_ling 拼音之间用下划线

3. 变量初始化 让变量保存数据

给变量初始值:变量必须初始化之后,才能进行取值操作(变量必须初始化之后才能使用)

(1)直接初始化

int age = 10; // =其实就赋值,就是把=右边的数据保存到变量中去

(2)间接初始化

int m;
m = 20;
4. 变量的操作

所谓变量,其实就是里面的值可以发生改变的量。

变量的操作有:赋值、取值

赋值: 改变变量中存储的数据
变量 = 数据;

取值: 拿到变量里所存储的数据
System.out.println(变量);

二、Java的基本数据类型

1. Java中的基本数据类型

Java中只有两种数据类型:一种是基本数据类型,另外一种是引用数据类型。

其中,基本数据类型有八种:

整型(整数)	byte  short  int  long 
浮点型(小数)	float  double
布尔型		boolean
字符型		char
2. 整数类型

(1) 四个整型 : byte short int long

微观上 体现在每种类型所占的内存大小不一样
宏观上 体现在能够存储的数值的范围不一样

类型   内存大小              能够存储的数值范围
byte   1字节(8个二进制位)    [-128,127]
short  2字节(16个二进制位)   [-32768,32767]
int    4字节(32个二进制位)   [-2^31,2^31 -1]
long   8字节(64个二进制位)   [-2^63,2^63 -1]	

(2) 1字节有8个二进制位,最高位是符号位,0表示正数,1表示负数

如:byte表示数值范围 1000 0000(-128) 0111 1111(127)

(3) 对于变量而言,只能保存该类型所能够保存数值的范围,超出范围将报错。

在Java程序中,直接给出的整数默认是int类型,所以不能直接写超出int表示范围的整数值

如果需要表示long类型的数值,需要在数值末尾加上l或者L,表示long类型的数值。

3. 浮点类型

(1) 两个浮点型 : float double

浮点型数值表示不精确的数值,与整数存储的方式不一样。

float 单精度浮点类型

  • 由32个二进制位 (4字节) 构成:1个符号位 + 8个指数位 + 23个小数位
  • 取值范围: ± 3.4e+38
  • 精确值: 小数点后精确6-7位 (223的结果有7位)
  • 指数范围: -128,127

要把浮点类型的数据换算成 1.xxxxxx * 2n ,保存的只有小数点后的小数位 以及 指数n

double 双精度浮点类型

  • 由64个二进制位 (8字节) 构成:1个符号位 + 11个指数位 + 52个小数位
  • 取值范围: ± 1.79e+308
  • 精确值: 小数点后精确到15-16位 (252有16位)
  • 指数范围:-27,27-1

(2) Java中直接给出的浮点数值默认是double类型,如果要表示float的数值需要在末尾加上f或者F

3. 字符型char

char 2个字节 取值范围为 0-65535

表示用单引号引起来的字母或者汉字,如 ‘a’、‘中’、‘9’。

char的不同形式:

  • 单引号:‘a’ ‘国’
  • unicode编码: ‘\uxxxx’ ‘\u5410’
  • 数值: [0,65535]
4. 布尔型boolean

boolean 1个字节 取值范围为 true/false

表示逻辑 真/假

三、数据类型转换

1.直接字面值

整数字面值默认是int类型 , long类型加l/L
浮点字面值默认是double类型 , float类型加f/F

2.自动类型转换(隐式类型转换)

表示范围窄的变量可以自动转换成表示范围宽的数据

byte->short->int->long->float->double
char->int
(当char在byte或short的范围内也可以自动转)

(1) 对于 byte short char 类型的变量,可以直接用 数据类型取值范围之内的 整数字面值 进行赋值或者初始化,超出范围将报错。

byte b = 1;
short s = 32767;

(2)对于byte short char 类型的变量,不可以用 int 类型变量进行赋值。

int i = 1;
byte b = i; // Error

编译器只知道i是一个int类型的数据,并不知道i是否在byte表示范围。

(3) 对于byte short char 在进行算术运算时,会自动转换成int类型

byte bx = 1+3;
	
byte b1 = 1;
byte b2 = 2;
byte b3 = b1+b2; // Error  

byte+byte 的结果自动转成int类型了

3.强制类型转换(显式类型转换)

由上文可知,范围宽的数据不能自动转换成表示范围窄的数据,但可以强转:

(目标数据类型)源数据

由于强制类型转换会舍弃一些二进制位,可能导致的情况:

(1) 数据溢出
(2) 精度缺失

举例:

int i = 3354; // 0···0 0···0 00001101 00011010
byte b = (byte)i; // 强转,取后8位二进制位 00011010
// 结果就是b的值变成了26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值