Java从入门到成神【02】变量、基本数据类型、基本数据类型间的转换

我的总结是我自己的理解,在表述上会和别人的不同,仅供参考,如有错误请指正,谢谢!

1.变量

1.1 定义

我对变量的理解是:1.变量可以理解为一个房间,房间里面可以放各种“物品”,而“物品”就是数据,当我们要把数据存起来的时候,就要在内存中开辟一间“房间”(声明一个变量)。2.变量也可以理解为是一个代词,指代的就是变量里面存放的数据。

1.2 声明一个变量

所谓的在内存中开辟一间“房间”,就是声明一个变量。(为什么要叫做“声明”?声明就是“告诉你”的意思,声明一个变量,就是告诉你以前没有这个变量,而现在有了,从现在开始你就可以使用这个变量了。)例:

int a;//声明一个int型变量,变量名为a
int b,c,d;//声明3个int型变量,变量名分别为b,c,d

注:在一个作用域中,不能重复声明“变量名”相同的变量,否则会编译错误。例:

int a;
int a;//变量名a重复了,编译错误
1.3 变量的初始化

变量的初始化是指,第一次给变量赋值。也就是第一次往一间“房间”里放一件物品,第二次往这间“房间”里放物品就不叫初始化了,而且第二次放物品时,第一次放进去的物品就消失了,也就是说当往一个变量里面多次赋值的时候,每一次赋值都会将上一次赋的值覆盖掉。例:

int a = 10;//声明一个int型变量a,赋值为10,第一次赋值称为初始化
a = 20;//再次给变量a赋值为20,不是第一次赋值所以不能称为初始化,同时前面赋值的10被覆盖了

int b = 50;//可以声明的同时赋值

int c;//也可以先声明
c = 50;//后赋值,第一次赋值称为初始化

注:给变量赋值的时候,所赋值的数据类型必须和变量的数据类型一致,否则编译错误。(数据类型下面会介绍,类型转换先不谈)

int a = 3.14;//3.14是浮点型,变量a是int型(整型),数据类型不一致,编译错误
1.4 使用

使用一个变量,就是使用这个变量里面存放的数据。比如使用一个变量进行运算,实质是拿变量中的数据进行运算;使用一个变量拿去输出,实质是输出这个变量中存放的数据。例:

int a = 10;
int b = 20;
ing c;
c = a+b;//使用a和b进行运算,实质是使用a、b中的数据10、20进行运算,a+b就是10+20,然后把结果30赋值给c
System.out.println(c);//输出c就是输出c里面的数据30

注:使用变量有两个前提,一是使用前必须声明,二是使用前必须初始化。没有声明就使用,或者声明了没有初始化都会编译错误。例:

System.out.println(m);//m没有声明,直接输出会编译错误
int m;//声明变量m
System.out.println(m);//m虽然声明了但是没有初始化,编译错误
1.5 变量的命名

1)只能包含字母、数字、_和$符,并且不能以数字开头;

2)严格区分大小写,如student和Student是两个不一样的变量;

3)不能使用关键字;

4)可以用中文命名,但是强烈!不建议!用中文命名;

5)建议用英文命名,尽量做到见名知意,一个英文单词能表示就用一个英文单词表示,一个英文单词不能表示则建议用多个单词拼接命名;

6)建议采用“驼峰命名法”,即第一个单词全小写,其余单词的首字母大写,如myScore、myMathScore等。


2.基本数据类型

2.1 整型

整型变量有4种:byte、short、int和long。

2.1.1 byte型

byte型占1个字节(8位),范围为-128至127(或-2^7至2^7-1)。byte类型进行运算时会自动转换为int型。例:

byte a = 28;
byte b = 30;
byte c = a+b;//byte类型的a和b参与运算时自动转换为int类型,所以用byte类型变量c接收会编译错误
int d = a+b;//用int类型变量则不会出现编译错误
2.1.2 short型(短整型)

short型占2个字节(16位),范围为-32768至32767(或-2^15至2^15-1)。short类型进行运算时也会自动转换为int型。例同byte型。

2.1.3 int型(整型)

int型占4个字节(32位),范围为-2147483648至2147483647(或-2^31至2^31-1)。记住范围在正负21亿多就差不多了。int型是整型直接量的默认类型。

int e = 8;//直接写出来的整数数字就是整型直接量,例如这里的8
int f = 2200000000;//给int型变量f赋值22亿,超出了int型的范围,编译错误 

由于超出数据类型的范围而出现编译错误时,换一个范围更大的数据类型来接收即可。

两个整型相除,结果还是整型,而且小数位被无条件舍弃,不会四舍五入。例:

int g = 4/8;//结果为0,而不是0.5,因为小数位被舍弃
2.1.4 long型(长整型)

long型占8个字节(64位),范围为-9223372036854775808至9223372036854775807(或-2^63至2^63-1)。记住范围很大很大就行。由于int型是整型直接量的默认类型,所以想要将一个超出int型范围的整型直接量存在long型变量中, 就要在直接量后面加上一个字母l或者L。由于l容易与1混淆,所以一般加L。例:

long g = 2200000000L;//22亿超出了int型范围,在后面加上L则可以存在long型变量中
long h = 300;//300为直接量,默认int型,且没有超出int型范围。int型赋值给long型时,会自动转换类型,所以可以不在后面加L

类型转换分为自动转换和强制转换,自动转换就是小的类型转换为大的类型,而大的类型转换为小的类型时就需要强制转换。强制转换可能出现溢出等情况,所以尽量不要强转,要强转前应先确保转换后不会溢出。

2.2 浮点型

浮点型有double型与float型。这两个类型的区别在于小数点后面能保留的位数的多少。

2.2.1 double型(双精度浮点型)

double型占8个字节(64位),范围为4.9E-324至1.7976931348623157E308。double型为小数直接量的默认类型。

2.2.2 float型(单精度浮点型)

float型占4个字节(32位),范围为1.4E-45至3.4028235E38。

double和float型数据进行运算时,有时会发生舍入误差,精确场合不适用。例:

double g = 10.0-4.9;
System.out.println(g);//结果为5.1,结果精确
double h = 6.0-4.9;
System.out.println(h);//结果为1.0999999999999996,发生舍入误差,结果不精确
2.3 字符型

char型(字符型)占2个字节(16位),范围为0至65535。字符型实质上存储的是字符在Unicode编码集中的编号,例如大写字母'A',实际上存储的是65,小写字母'a'实际上存储的是97,数字'0'实际上存储的是48。所以char类型可以参与运算,运算时自动转换为int型。例:

char a = 'a';//字符用单引号''括起来,且只能是单个字符,例如'a'可以,而'aa'则不行
char b = '我';//字符可以存中文
int c = 1;
int d = a+c;//char型参与运算时自动转换为int型,值为Unicode编码集中对应的编号,其中'a'为97,所以d 的值为98
2.4 boolean型(布尔型)

boolean型占1个字节(8位),boolean型的值只能为false或者true。

3.基本数据类型间的转换

3.1 基本数据类型从小到大依次为:

byte < short (char)< int < long < float < double

3.2 转换方式

1)自动转换:从小类型转换到大类型。无隐患。

2)强制转换:从大类型转换到小类型。有可能溢出或丢失精度。例:

long l = 2200000000L;
int i = (int)l;
System.out.println(i);//结果为-2094967296。因为22亿超出了int型的范围,所以溢出了
double d = 2.345;
int e = (int)d;
System.out.println(e);//结果为2,小数点后的345丢失,丢失精度
3.3 两点规则

1)整型直接量可以直接赋值给byte,short,char,但不能超出其范围。

2)byte,short,char型数据参与运算时,会自动转换为int型再进行运算。

猜你喜欢

转载自blog.csdn.net/qq_39516106/article/details/80953642