前言:
🌈✨之前小怡带大家大概了解一下Java这门语言,今天要给大家分享的是Java的数据类型和变量。
1.字面常量
常量即程序运行期间,固定不变的量成为常量。
接下来,小怡用代码来让大家更清楚的了解常量。
public class Demo {
public static void main(String[] args) {
System.out.println("hello world");//字符型常量,被“”括起来的
System.out.println(100);//整型常量,直接写的数字,没小数点
System.out.println(3.14);//浮点数常量,直接写的小数
System.out.println('A');//字符常量,用单引号括起来的单个字符
System.out.println(true);//布尔常量,只有true和false
System.out.println(false);
}
}
还有一种叫空常量:null(后面讲) 。
被final修饰的变量叫常量,不能再修改了。
final int a=1;
注:字符串、整型、浮点型、字符型以及布尔型,在Java中都称为数据类型。
那知道了字面常量,这些常量能用来干什么呢,小怡带你接着往下看数据类型。
2.数据类型
在Java中数据类型主要分为两类:基本数据类型和引用数据类型。
基本 数据 类型 | 数据类型 | 关键字 | 内存占用 | 范围 |
字节型 | byte | 1字节 | -128~127 | |
短整型 | short | 2字节 | -32768~32767 | |
整型 | int | 4字节 | -2^31~2^31-1 | |
长整型 | long | 8字节 | -2^63~2^63-1 | |
单精度浮点数 | float | 4字节 | 有范围,一般不关注 | |
双精度浮点数 | double | 8字节 | 有范围,一般不关注 | |
字符型 | char | 2字节 | 0~65535 | |
布尔型 | boolean | 没有明确规定 | true和false | |
引用数据类型 | 数组、类、接口、String...... |
在Java里,不管是多少位系统,数据类型占用的字节数是一定的。
优点:可移植性高。
注意:
- 不论是在16位系统还是32位系统,int都占用4个字节,long都占用8个字节。
- 整型和浮点型都是带有符号的。
- 整型默认为int型,浮点型默认为double。
- 字符串属于引用类型。
小怡在这里给大家补充这些单位和进制哦
嘿嘿,有一个好记的方法:程序员节是10月24日
3.变量
3.1 变量概念
在Java中,对于那些经常改变的内容,称为变量。而数据类型就是用来定义不同种类变量的。
3.2 语法格式
定义变量的语法格式为:
数据类型 + 变量名=初始值
例如:
int a=1;
double d=3.14;
char c='A';
boolean b=true;
也可以
a=1;
在这里,a是变量,a中的值是可以修改的,注意:= 在Java中表示赋值,即把1赋给a,a中保存的值就是1。
在一行代码中也可以定义多个相同类型的变量。例如:
int a1=1,a2=2,a3=3;
3.3 整型变量
3.3.1 整型变量
方式一:在定义时给出初始值
方式二:在定义时没有给初始值,但使用前必须设置初始值
使用方式二定义后,如果在使用前没有赋值,则会报错
int型变量所能表示的范围:
这里的Integer,术语:包装类
通俗理解:int的plus版本
注意:在定义int型变量时,所赋值不能超过int的范围,否则编译时会报错。
注意事项:
- int无论是在任何系统下都是4个字节。
- 推荐使用方式一定义,如果没有合适的初始值,可以设置为0;
- 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出。
- 变量在使用之前必须赋值,否则编译报错。
- int的包装类为Integer。
3.3.2 长整型变量
这里是long定义的长整型变量
一般建议用大写L
long型变量所能表示的范围:这个数据范围远超过int的表示范围,足够绝大部分的工程场景使用。
注意事项:
- 长整型变量的初始值后加L或者l,推荐加大写L;
- 长整型不论在哪个系统下都占8个字节;
- 长整型的表示范围为:-2^63~2^63-1;
- long的包装类型为Long。
3.3.3 短整型变量
short型变量所能表示的范围:
注意事项:
- short在任何系统下都占2个字节
- short的表示范围为:-32768~32767
- 使用时注意不要超过范围(一般使用比较少)
- short的包装类型为Short
3.3.4 字节型变量
byte型变量所能表示的范围:
注意事项:
- byte在任何系统下都占1个字节
- byte的范围:-128~127
- 字节的包装类型为Byte
为什么byte、short、int、long都可以定义整型变量,要给出四种呢?
因为这就好像买衣服时候选尺码,要选合适的
3.4 浮点型变量
3.4.1 双精度浮点型
先给大家看一个神奇的代码:
大家猜猜会输出0.5吗?答案实际上是这样的:
因为在Java中,int除以int的值仍然是int(会直接舍弃小数部分),如果想得到0.5,需要使用double类型计算。
再给大家看一个神奇的代码:
它的结果不是1.21,而是:
小数点是不能精确表示每一位的,只能说精确到小数点后几位。
注意事项:
- double在任何系统下都占8个字节;
- 浮点数和整数在内存中的存储方式不同,不能单纯的使用2的n次方的形式来计算;
- double的包装类型是Double;
- double类型的内存布局遵守IEEE 754标准(和C语言一样),尝试使用有限的内存空间表示可能无限的小数,比会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。
3.4.2 单精度浮点数
注:如果不加F/f会被认为是double。
float类型在Java中占四个字节,同样遵守IEEE754标准。由于表示的数据精度范围较小,一般在工程上用到浮点数都优先考虑double,不太推荐float。float的包装类型为Float。
3.5 字符型变量
在Java中,字符可以存放整型。
注意事项:
- Java中使用 单引号+单个字母 的形式表示字符字面值。
- 计算机中的字符本质上是一个整数。在C语言中使用ASCII表示字符,而Java中使用Unicode表示字符。因此一个字符占用两个字节,表示对字符种类更多,包括中文。
- char的包装类型为Character。
int的包装类型为Integer,char的包装类型为Character,其余的都是首字母大写。
3.6 布尔型变量
注意事项:
- boolean类型的变量只有两种取值,true表示真,false表示假;
- Java的boolean类型和int类型不能相互转换,不存在1表示true,0表示false这样的用法。
- boolean的包装类型为Boolean。
🌈✨今天的分享到这里结束啦,小怡和大家一起进步,“学如逆水行舟,不进则退”,让我们一起努力加油吧!