JAVA-初_须知3_数据类型

==>基本数据类型

Java基本数据类型主要包括整数类型、浮点类型、字符类型和布尔类型。

各基本数据类型的取值范围、占用的内存大小及默认值:
在这里插入图片描述

1.整数类型
整数类型用来存储整数数值,即没有小数部分的数值。与C、C++语言相同,整数在Java语言中有3种表示形式:十进制、八进制和十六进制。

  • 十进制整数:以1~9开头的数,如:123,−456,0。
  • 八进制整数:以0开头且其后以0~7范围(包括0和7)内的数组成的整数,如:01011,−031,分别表示十进制数521和−25。计算方式如下:
    在这里插入图片描述
  • 十六进制整数:以0x或0X开头且其后以0~9、a~f(包括0和9,a和f)组成,如:0x25,0Xb01e,分别表示十进制数37和45086。计算方式如下:
    在这里插入图片描述
    注意:在十六进制数中,0~9由数字表示,10~15分别由a、b、c、d、e、f代替。无论是十进制数、八进制数还是十六进制数,计算机会先将它们转换成二进制数,然后再进行计算。

二进制数是由数字0和1组成的数据流(或数据序列),在内存中只能存放二进制形式的数据,例如00011101,这个二进制数据流(或称二进制数据序列)共有8位(最左面的为最高位,最右面的为最低位),每一位称做1个比特(bit),每8位称做1个字节(byte)。这个二进制数表示十进制整数29,计算方式:
在这里插入图片描述
在Java中存在4种类型来存储整数:byte、short、int和long,它们的取值范围如表2.2所示。其中int是最常使用的一种整数类型,但在大型的计算中常会生成很大的整数,超出int类型所表示的取值范围,此时要使用long类型;byte和short类型主要用于一些特殊的情况。

可以根据这些类型定义相应的整型变量,定义方法如下:

byte a                                 //定义变量a并指定为byte型

short b                               //定义变量b并指定为short型

int c                                         //定义变量c并指定为int型

long d                                 //定义变量d并指定为long型

在为这些整型变量赋值时,既可赋值为十进制的整数,也可以赋值为八进制或十六进制的整数,但要注意变量能够接受的最大与最小值,否则会出现错误。对于long型值,若赋给的值大于int型的最大值或小于int型的最小值,则需要在数字后加L或l(小写的L),表示该数值为长整数。例如,long num=2147483649L。

对变量赋值后,通过输出语句会自动地将变量值转换为十进制整数输出。

例如:分别为字节型变量a赋值为十进制数123,短整型变量b赋值为八进制数045,整型变量c赋值为十六进制数0xb12f和长整型变量d赋值为十六制数0x160000000L,然后输出这些变量值。

byte a=123;                    //定义byte型变量a, 并赋给十进制数值123

short b=045;                   //定义short型变量b, 并赋给八进制数值045

int c=0xb12f;                        //定义int型变量c, 并赋给十六进制数值0xb12f

long d=0x160000000L;                //定义long型变量d, 并赋给十六进制数值0x160000000L

System.out.println(a);                       //输出结果为: 123

System.out.println(b);                       //输出结果为: 37

System.out.println(c);                       //输出结果为: 45359

System.out.println(d);                       //输出结果为: 5905580032

说明:
赋给long型变量d的十六进制数0x160000000转换为二进制数后需占用内存36位(由左至右,每位数字转换成4位的二进制数,如0x39将转换为0011 1001),而Java中规定int型数据占用内存为32位,所以十六进制数0x160000000超出了int范围,需要在数字后加L或l(小写的L)表示它是一个长整数,计算机将为其分配64位内存空间进行存储。

2.浮点类型
Java语言包含两种浮点类型:单精度浮点类型和双精度浮点类型,它们分别用float和double关键字来标识,计算机通过这两种数据类型来存储小数。

在Java中,默认情况下小数都被看做double型,占用内存64位,若想使用float型小数,则需要在小数后面添加字母F或f。如1.23F,它占用内存32位。

计算机计算出的小数点后的n位,与实际的数值会有一定的误差。它只能尽量地去接近实际值,所以位数越多越精确。通常float型就足够了,若要求更精确的计算可以使用double型,但也要节约资源。

定义浮点型变量的方法如下:

float a              //定义变量a并指定为float型

double b            //定义变量b并指定为double型

在为浮点型变量赋值时,既可以赋值为以十进制表示的小数,也可以赋值为以科学记数法形式表示的数值。对于float型,必须在数值后加F或f,表示该数值为单精度浮点数。

例如:分别为单精度浮点型变量a1赋值为十进制表示的小数12.34F,单精度浮点型变量a2赋值为科学记数法表示的数值1.234E1F,双精度浮点型变量b1赋值为十进制表示的小数56.78,双精度浮点型变量b2赋值为科学记数法表示的数值567.8E-1,然后输出这些变量值。

float a1=12.34F;                  //为float型变量a1赋值为十进制表示的单精度小数(在数字后加F)

float a2=1.234E1F;              //为float型变量a2赋值为科学记数法表示的单精度小数(在数字后加F)

double b1=56.78;                 //为double型变量b1赋值为十进制表示的双精度小数

double b2=567.8E-1;                  //为double型变量b2赋值为科学记数法表示的双精度小数

System.out.println(a1);                     //输出结果为: 12.34

System.out.println(a2);                     //输出结果为: 12.34

System.out.println(b1);                     //输出结果为: 56.78

System.out.println(b2);                     //输出结果为: 56.78

3.字符类型
Java语言中的字符类型用来存储单个字符,它占用16位(两个字节)的内存空间,使用关键字char进行标识。

因为计算机只能存储二进制数据,所以需要将字符通过一串二进制数据来表示,也就是通常所说的字符编码。Java对字符采用Unicode字符编码,Unicode使用两个字节表示1个字符,并且Unicode字符集中的前128个字符与ASCII字符集兼容。

如字符’a’的ASCII编码的二进制数据形式为01100001,Unicode字符编码的二进制数据形式为00000000 01100001,它们都表示十进制数97。因此与C、C++语言一样,Java同样把字符作为整数对待。

说明:

ASCII是用来表示英文字符的一种编码,每个字符占用一个字节,所以最多可表示256个字符。但英文字符并没有那么多,ASCII使用前128个(字节中最高位为0)字符来存放包括控制符、数字、大小写英文字母和其他一些符号的字符。而字节的最高位为1的另外128个字符称为“扩展ASCII”,通常存放英文的制表符、部分音标字符等其他一些符号。使用ASCII编码无法表示中文等其他一些国家的语言文字。

Unicode编码采用无符号编码,可以存储65536个字符(0x0000~0xffff),所以Java中的字符几乎可以处理所有国家的语言文字。

Java中的字符通过Unicode编码以二进制的数据形式存储到计算机中,计算机可以通过数据类型判断要输出的是一个字符还是一个整数。

定义字符类型的变量,可以通过关键字char来定义。定义方法如下:

char c1                               //定义字符型变量c1 

char c2                               //定义字符型变量c2 

赋给char型变量的字符常量值必须用英文状态下的一对单引号括起来,由于Java的字符采用Unicode编码,一个中文字与一个英文字母在Java中同样都是用一个字符来表示。

例如分别为字符型变量a赋值为’m’、字符变量b赋值为’明’、字符变量c赋值为’9’和字符变量d赋值为’@’,然后输出。

char a='m';                          //为字符型变量ch1赋值字符常量'm'

char b='明';                         //为字符型变量ch1赋值字符常量'明'

char c='9';                                //为字符型变量ch1赋值字符常量'9'

char d='@';                         //为字符型变量ch1赋值字符常量'@'

System.out.println(a);                       //输出结果为: m

System.out.println(b);                       //输出结果为: 明

System.out.println(c);                       //输出结果为: 9

System.out.println(d);                       //输出结果为: @

也可以为字符变量赋值为0~65535范围内的整数,这些整数可使用十进制、八进制或十六进制来表示。根据变量类型,计算机会自动将这些整数转换为所对应的字符输出。

例如分别为字符变量ch1赋值为十进制数97、字符变量ch2赋值为八进制数0142、字符变量ch3赋值为十六进制数0x63,然后输出。

char ch1=97;                             //为字符型变量ch1赋值十进制数97

char ch2=0142;                         //为字符型变量ch2赋值八进制数0142

char ch3=0x63;                         //为字符型变量ch2赋值十六进制数0x63

System.out.println(ch1);                   //输出结果为: a

System.out.println(ch2);                   //输出结果为: b

System.out.println(ch3);                   //输出结果为: c

与C、C++语言一样,Java语言提供了转义字符来表示一些特殊的字符。转义字符以反斜杠开头,Java中提供的转义字符:
在这里插入图片描述

将转义字符赋值给字符变量时,与字符常量值一样需要使用单引号将转义字符括起来,例如:分别为字符变量c1赋值为’\’、字符变量c2赋值为’’’、字符变量c3赋值为’\115’、字符变量c4赋值为’\u0052’,字符变量c5赋值为’\u2605’,然后输出。

char c1='\\';                                      //为变量c1赋值转义字符“\\”

char c2='\'';                                     //为变量c2赋值转义字符“\'”

char c3='\115';                                  //为变量c3赋值转义字符“\115”表示的字符

char c4='\u0052';                               //为变量c4赋值转义字符“\u0052”表示的字符

char c5='\u2605';                               //为变量c5赋值转义字符“\u2605”表示的字符

System.out.println(c1);                       //输出结果为: \

System.out.println(c2);                       //输出结果为: '

System.out.println(c3);                       //输出结果为: M

System.out.println(c4);                       //输出结果为: R

System.out.println(c5);                       //输出结果为: ★

在Java中,对字符变量进行如下的赋值也是合法的:

char char1='B'+1;                     //将字符常量值'B'与十进制整数1相加的结果赋给字符变量char1

char char2='B'+'1';                     //将两个字符常量值'B'与'1'相加的结果赋给字符变量char2

char char3=24+76;                    //将两个十进制整数24与76相加的结果赋给字符变量char3

char char4='n'-32;                     //该操作将得到大写的字母N,'N'+32将得到小写的字母n

System.out.println(char1);                 //输出结果为: C

System.out.println(char2);                 //输出结果为: s

System.out.println(char3);                 //输出结果为: d

System.out.println(char4);                 //输出结果为: N

4.布尔类型
布尔型数据只有两个值:true和false,分别代表布尔逻辑中的“真”和“假”,且布尔值不能与整数进行转换,通常布尔型数据在流程控制中作为判断条件。

定义布尔型变量,可以通过关键字boolean来定义。定义方法如下:

boolean b1;                       //定义boolean型变量b1

boolean b2;                       //定义boolean型变量b2

布尔型数据只存在true和false数值,所以在为boolean型变量赋值时,除这两个值外的任何数值都是非法的。

例如,分别为布尔型变量married赋值为false,alive赋值为true,然后输出。

boolean married=false;

boolean alive=true;

System.out.println("已婚:"+married);                      //输出结果为: false

System.out.println("生命:"+alive);                          //输出结果为: true

猜你喜欢

转载自blog.csdn.net/qq_39839745/article/details/86413815
今日推荐