四、Java-----数据类型与变量

(一)数据类型

Java中,数据类型主要分为两大类:基本数据类型和引用数据类型。

基本数据类型:

分为四类八种,所谓四类是整型、浮点型、字符型、布尔型。八种是字节型、短整型、整型、长整型、单精度浮点型、双精度浮点型、字符型、布尔型。

用表格可视化基本数据类型如下:

基本数据类型
数据类型(四类)数据类型(八种)关键字所占内存(字节)取值范围
整型字节型byte1-128 ~ 127
整型短整型short2-32768 ~ 32767(-2^15 ~ 2^15-1)
整型整型int4-2^31 ~ 2^31-1
整型长整型long8-2^63 ~ 2^63-1
浮点型单精度浮点型float4有范围,一般不关注
浮点型双精度浮点型double8有范围,一般不关注
字符型字符型char20 ~ 65535(0 ~ 2^16-1)
布尔型布尔型boolean没有明确规定true 和 false

注意:

1.在Java中,不论何种系统,int永远占4个字节,long永远占8个字节。(与C语言区分)

2.整型和浮点型带符号,即有正负;字符型只有正没有负。

3.整型默认为int型,浮点型默认为double型。

引用数据类型:

有类、数组、接口、枚举类型、字符串类型等等。

(二)变量

定义:

在Java中,变量是存储数据值的基本单元,用于在程序中保存和操作数据。通俗地说,在程序中,把经常改变的量称为变量。比如:人的年龄、成绩、函数的计算结果等等。

语法格式:

数据类型 变量名 = 初始值; 

注意:

1. "="(赋值号)左边称为左值,代表对象或在内存中开辟的空间,右边称为右值,代表具体的值。

例如:

int age = 25;           // 整型变量
String name = "Alice";  // 字符串变量
boolean isStudent;      // 未初始化的布尔变量(默认值 false)

2.关于变量初始化:

① 变量在声明时可选择是否初始化。但是一般在声明变量时会赋初值,养成良好的代码习惯。

② Java局部变量一定要赋初值,否则编译不通过。在IDEA中,则直接报错,如下图所示。

3.在一行中,可以定义多个相同类型的变量,中间用“,”隔开。

例如:

int number = 100, score = 90,a1 = 10;

4. 变量三要素:

        数据类型:决定变量存储的数据的种类。

        变量名:需遵循标识符的命名规则。

        初始值:变量存储的具体值。除了final变量(也称常量),其他变量可通过赋值修改。

(final变量(常量)在上篇博客中有介绍,三、Java-----常量-优快云博客

变量的分类:

整型变量:

1.关于声明整型变量(int):

上文说到,变量在声明时可选择是否初始化。

其一,变量在声明时初始化,即在定义时就给出初始值。如果没有合适的初始值,建议初始值赋为0。

例如:

int a = 10;
//定义一个整型变量a,a是变量名,该变量中放置的值为10

其二,变量在声明时不初始化,即在定义时没有给初始值。此时需牢记,该变量在使用前必须设置初值。例如:

int b;
b = 20;
System.out.println(b);

上述代码意为,声明一个int型变量b,输出b之前,必须给b赋初值。如果使用前没有赋值,将会报错。

注意:

①在定义int型变量时,赋值不能超过int的范围(-2^31 ~ 2^31-1)。超出范围会导致溢出。

②Java中不论何种系统,int始终占4个字节。

③int的包装类型为Integer。

2.关于声明短整型变量(short):
short c = 10; //short定义的短整型变量

注意:

①short表示范围为-32768 ~ 32767。

②Java中不论何种系统,short始终占2个字节。

③short的包装类型为Short。

3.关于声明长整型变量(long):
long d = 10; //long定义的长整型变量
long e = 20L;
long f = 30l;

注意:

①为了与int类型区分,在声明long类型变量时,初始值后加L或l,一般加L(因为小写字母l与1容易混淆)。

②long表示范围为-2^63 ~ 2^63-1。

③Java中不论何种系统,long始终占8个字节。

④long的包装类型为Long。

4.关于声明字节型变量(byte):
byte g = 10;

注意:

①byte表示范围为-128 ~ 127。

②Java中不论何种系统,byte始终占1个字节。

③byte的包装类型为Byte。

浮点型变量:

1.关于声明双精度浮点型变量(double):
double h = 3.14;

注意:

①Java中不论何种系统,double始终占8个字节。

②double的包装类型为Double。

2.关于声明单精度浮点型变量(float):
float i = 11.11f;//写作11.11F也行

注意:

①Java中不论何种系统,float始终占4个字节。

②由于float表示的数据精度范围较小,工程上用浮点型数据时优先考虑double。

③float的包装类型为Float。

3.浮点型变量的精度问题

        在Java中,浮点型变量(float 和 double)的内存布局都是基于IEEE 754标准实现的,这和C语言一样。浮点型变量在表示小数时存在精度限制,即它们尝试在有限的内存空间内表示可能无限的小数,一定会出现精度误差,这是由二进制浮点数的本质决定的。因此,浮点数都是近似值,不是精确值。

(1)二进制浮点数的局限:

        计算机使用二进制表示浮点数,而许多十进制小数无法精确转换为二进制。例如十进制的0.1,它的二进制表示是无限循环小数,导致存储时被截断,产生误差。

(2)IEEE 754标准的内存结构:
类型总位数符号位指数位尾数位精度(十进制有效位数)
float32位1位8位23位6~7位
double64位1位11位52位15~16位

                tips:

                        尾数位决定了精度,即尾数位数越多,精度越高;

                        指数位决定了范围,即指数位数越多,能表示的值范围越大。

例1:

int a = 1;
int b = 2;
System.out.println(a / b);//预计值为0.5,实际输出0

      此时,从数学上说,a / b结果是0.5;从程序上说,结果是0。因为int类型不能保存小数部分,发生截断,小数点后的数据丢失。如果想得到结果为0.5,需使用double类型进行计算。

double a1 = 1.0;
double b1 = 2.0;
System.out.println(a1 / b1);//0.5

例2:

double c = 0.1;
double d = 0.2;
double sum = c + d;  // 预期值为0.3,实际输出 0.30000000000000004
System.out.println(sum);

字符型变量:  

关于声明字符型变量(char):
        char c1 = 'A'; // 大写字母
        char c2 = '1'; // 数字字符
        char c3 = '好'; // 中文字符

注意:

①在Java中,使用“单引号+单个字母”的形式表示字符字面值。

②计算机中字符本质是一个整数,字符型变量无负数。

在C语言中,使用ASCII表示字符,char占一个字节;在Java中,使用Unicode表字符,字符种类多,可表示中文,char占两个字节。

③char的包装类型为Character。

布尔型变量:

关于声明布尔型变量(boolean):
        boolean boo1 = true;
        boolean boo2 = false;

注意:

①Java中布尔类型变量只有两种取值:true 和 false。

②在Java中,进行运算时,布尔类型与其它类型不兼容,无法进行运算。

③boolean的包装类型为Boolean。

字符串类型:

关于声明字符串类型变量(String):

在Java中使用String类声明字符串类型。例如:

        String s1 = "hello";
        String s2 = "world";
        System.out.println(s1); // 输出hello
        System.out.println(s2); // 输出world
        System.out.println(s1+s2); // 输出helloworld
        // s1+s2表示:将s1和s2进行拼接

博客均为博主自身学习总结,如有错误之处,烦请大佬们指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圆响石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值