Java基本数据类型

  • Post author:
  • Post category:java



目录


逻辑类型:


整型数据:


字符类型:


浮点类型:


算数混合运算的精度:



逻辑类型:

1、boolean型:

常量:true,false。

变量:使用关键字boolean来声明逻辑变量,声明时也可以赋给初值,如

boolean male=true;
boolean off=false;


整型数据:

1、int型:

常量:123(十进制),077(八进制),0x3ABC(十六进制)等。

变量:int型变量,是分配4个字节内存,因此,int型变量的取值范围是-2^31~2^31-1。使用关键字int来声明int型变量,声明时也可以赋给初值,如

int x=12,y=21,i;

2、byte型:

常量:Java中不存在byte型常量的表示法,但可以把一定范围内的int 型常量赋值给byte型变量。

变量:对于byte型变量,分配1个字节内存,占8位,因此 byte型变量的取值范围是-2^7~2^7-1。如果需要强调一个整数是byte型数据时,可以使用类型转换运算的结果来表示,例如:(byte)-12,(byte)21。使用关键字byte来声明byte型变量,声明时也可以赋给初值,如

byte x=12,y=57,i;

3、short型:

常量:和 byte型类似,Java中也不存在short型常量的表示法,但可以把一定范围内的int型常量赋值给short型变量。

变量:对于short型变量,分配2个字节内存,占16位,因此 short型变量的取值范围是-2^15~2^15-1。如果需要强调一个整数是 short型数据时,可以使用强制转换运算的结果来表示,例如:(short)-12,(short)57;使用关键字short来声明short型变量,声明时也可以赋给初值,如

short x=12,y=1234;

4、long型:

·常量: long型常量用后缀L来表示,例如108L(十进制)、07123L(八进制)、0x3ABCL(十六进制)。

·变量:对于 long型变量,分配8个字节内存,占64位,因此 long型变量的取值范围是-2^63~2^63-1。使用关键字long 来声明long型变量,如,

long width=12L, height =2005L,length;

##Java没有无符号的byte,short,int和 long,这一点和C语言有很大的不同。因此,unsigned int m;是错误的变量声明。


字符类型:

1、char型:

常量:’A’,’?’,’好’,’\t’等,即用单引号(需用英文输入法输入)括起的Unicode表中的一个字符。

变量:对于char型变量,分配2个字节内存,占16位,最高位不是符号位,没有负数的char。char型变量的取值范围是0~65535。使用关键字char来声明char型变量,例如,

char ch= 'A', home='家' , handsome='酷';

对于

char x= 'a';

内存x中存储的是97,97是字符a在Unicode表中的排序位置。上面的变量声明也可写成

char x=97;

有些字符(如回车符)不能通过键盘输入到字符串或程序中,这时就需要使用转义字符常量,例如:\n(换行),\b(退格),\t(水平制表),\'(单引号),\”(双引号),ll(反斜线)等。如:

char ch1 = '\n' ,ch2 = '\"',ch3 = '\\';

要观察-一个字符在Unicode表中的顺序位置,可以使用int型类型转换,如(int)’A’。 如果要得到一个0~65 535之间的数所代表的Unicode表中相应位置上的字符,必须使用char型类型转换,如(char)65。

##Java中的char型数据一定是无符号的,而且不允许使用unsigned来修饰所声明的char型变量( 这一点和C语言是不同的)。

在下例中,分别用类型转换来显示一些字符在Unicode表中的位置,以及Unicode表中某些位置上的字符,运行效果如图所示。

public class You {
    public static void main(String[] args) {
        System.out.println("汉字\"你\"在Unicode表中的位置是:"+(int)'你');
        System.out.println("汉字\"我\"在Unicode表中的位置是:"+(int)'我');
        System.out.println("汉字\"他\"在Unicode表中的位置是:"+(int)'他');
        System.out.println("在Unicode表中65位置的字符是:"+(char)65);
    }
}


浮点类型:

1、float型(单精度):

常量:453.5439f, 21379.987F, 231.0f (小数表示法),2e40f (2乘10的40次方,指数表示法)。注意:常量后面必须要有后缀f或F。

变量:使用关键字float来声明float型变量,例如:

float x = 22. 76f, tom = 1234. 987f,weight = 1e-12F;

float变量在存储float型数据时保留8位有效数字(相对double型保留的有效数字,称之为单精度)。对于float 型变量,分配4个字节内存,占32位,float 型变量的取值范围是1.4E- 45~3.4028235E38和-3.4028235E38~-1.4E- 45。

2、double型(双精度):

常量::2389.539d, 2318908.987, 0.05 (小数表示法),1e 90 (1乘10的90次方,指数表示法)。对于double常量,后面可以有后缀d或D,但允许省略该后缀。

变量:使用关键字double来声明double型变量,如,

double height = 23. 345,width = 34.56D, length = 1e12;

对于double型变量,分配8个字节内存,占64位,double型变量的取值范围是4.9E -324~1.7976931348623157E308和-1.7976931348623157E308~- 4.9E- -324。double变量在存储double型数据时保留16位有效数字(相对float型保留的有效数字,称之为双精度)。


算数混合运算的精度:

精度从“低”到“高”排列的顺序是:

byte   short   char   int   long   float   double。

Java在计算算术表达式的值时,使用下列运算精度规则:

(1)如果表达式中有双精度浮点数(double型数据),则按双精度进行运算。例如,表达式5.0/2+10的结果12.5 是double型数据。

(2)如果表达式中最高精度是单精度浮点数(float 型数据),则按单精度进行运算。例如,表达式5.0F/2+10的结果12.5是float型数据。

(3)如果表达式中最高精度是long 型整数,则按long 精度进行运算。例如,表达式12L+100+’a’的结果209是long型数据。

(4)如果表达式中最高精度低于int 型整数,则按int 精度进行运算。例如,表达式(byte)10+’a’和5/2的结果分别为107和2,都是int型数据。

Java允许把不超出byte、short 和char的取值范围的算术表达式的值赋给byte、short 和char型变量。例如,(byte)30+’a’是结 果为127 的int型常量, byte x =(byte)20+’a’;是正确的,但byte X= (byte) 30+’b’;却无法通过编译,编译错误是“可能损失精度,找到int 需要byte”,其原因是(byte)30+”b’的结果是int型常量,其值超出了byte变量的取值范围。



版权声明:本文为qq_51926288原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。