数据类型-Java基础一-初学者笔记

初学者笔记

1.Java中的两种类型

  在java源代码中,每个变量都必须声明一种类型(type)。
有两种类型:primitive type和reference type。引用类型引用对象(reference to object),基本类型直接包含值(directly contain value)。

primitive types(基本类型)

  包括boolean类型以及数值类型(numeric types)共8种。
numeric types又分为整型(integer types)和浮点型(floating-point type)。
整型有5种:byte short int long char(char本质上是一种特殊的int)。
浮点类型有:float和double。

reference to object(引用类型饮用对象)

包括四种

  1. class type类类型;
  2. interface type接口类型;
  3. array type数组类型;
  4. null type;

  Java是强类型语言,所有的变量必须先声明后使用,定义变量需要显示的声明一个在编译时就能确定的类型。
Java中的数据类型有两种,基本类型(Primitive Type)和引用类型(Reference Type)。

2.基本数据类型

Java提供了八种基本数据类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

一般把基本类型分为4类,如下表:

分类 类型 长度
整数型 int 32位
--- long 64位
--- short 16位
--- byte 8位
字符型 char 16位
浮点型 double 64位
--- float 32位
布尔型 boolean 1位

整型:

int为最常用的整型变量。系统中的整数常量会被看作int处理。但有以下两个例外:

  1. 如果一个整数很小(在byte或short)的范围内,当这个整数常量被付给一个byte或short变量时,整数常量会被当作byte或short类型。
  2. 如果一个巨大的整数常量(超出了Int的存储范围)时,系统不会把这个整数当作long类型处理,除非用户在常量后加上一个字母"L"。

示例:

1.  publicclass IntegerValTest{
2.  publicstaticvoidmain(String\[\]args){
3.  //下面代码是正确的,系统会自动把56当成byte类型处理
4.  bytea=56;
5.  /*
6.  下面代码是错的,系统不会把9999999999999当成long类型处理,
7.  所以超出int的表数范围,从而引起错误
8.  */
9.  //longbigValue=9999999999999;
10.  //下面代码是正确的,在巨大的整数常量后使用L后缀,强制使用long类型
11.  longbigValue2=9223372036854775807L;

13.  //以0开头的整数常量是8进制的整数
14.  intoctalValue=013;
15.  System.out.println(octalValue);
16.  //以0x或0X开头的整数常量是16进制的整数
17.  inthexValue1=0x13;
18.  inthexValue2=0XaF;

21.  System.out.println(hexValue1);
22.  System.out.println(hexValue2);

25.  //定义二个8位的二进制数
26.  intbinVal1=0b11010100;
27.  bytebinVal2=0b01101001;
28.  //定义一个32位的二进制数,最高位是符号位。
29.  intbinVal3=0B10000000000000000000000000000011;
30.  System.out.println(binVal1);//输出212
31.  System.out.println(binVal2);//输出105
32.  System.out.println(binVal3);//输出-2147483645
33.  /*
34.  定义一个8位的二进制,该数值默认占32位,因此它是一个正数。
35.  只是强制类型转换成byte时产生了溢出,最终导致binVal4变成了-23
36.  */
37.  bytebinVal4=(byte)0b11101001;
38.  /*
39.  定义一个32位的二进制数,最好位是符号位。
40.  但由于数值后添加了L后缀,因此该整数的实际占64位,第32位的1不是符号位。
41.  因此binVal5的值等于2的31次方+2+1
42.  */
43.  longbinVal5=0B10000000000000000000000000000011L;
44.  System.out.println(binVal4);//输出-23
45.  System.out.println(binVal5);//输出2147483651
46.  }
47.  }

字符型

  字符型用于表示耽搁的字符。字符常量通常用单引号(')括起来。Java使用unicode编码方式,所以字符型变量能够表示大部分国家的文字字符。

字符表示有以下几种方式:

  1. 直接使用字符常量:如 ‘a’、'我'等。
  2. 使用转移字符:如'\n'、'\t'等。
  3. 使用unicode表示字符:如'\uxxxx',其中x表示一个十六进制整数。

如果把一个整数(0~65535之间)常量赋给字符类型变量,系统会把整数当作char处理。

示例:

1.  publicclassCharTest{
2.  publicstaticvoidmain(String\[\]args){
3.  //直接指定单个字符作为字符常量
4.  charaChar='a';
5.  //使用转义字符来作为字符常量
6.  charenterChar='\\r';
7.  //使用Unicode编码值来指定字符常量
8.  charch='\\u9999';
9.  //将输出一个'香'字符
10.  System.out.println(ch);
11.  //定义一个'疯'字符常量
12.  charzhong='疯';
13.  //直接将一个char变量当成int类型变量使用
14.  intzhongValue=zhong;
15.  System.out.println(zhongValue);
16.  //直接把一个0~65535范围内的int整数赋给一个char变量
17.  charc=97;
18.  System.out.println(c);
19.  }
20.  }

浮点型

  Java中浮点型有两种:double和float,两个浮点型的长度分别为64位和32位,且长度不因环境的改变而改变。浮点数的特点是不能够精确的表示一个小数位数较多的小数。

浮点数有两种表示方式:

  1. 十进制表示:3.11、5.2、4等
  2. 科学计数法表示:4.12E3、5.12E2;

java中一个浮点数常量默认为double类型,如果要系统把一个小数常量当作float处理,需要在小数后加上f字母。
示例:

1.  publicclassFloatTest{
2.  publicstaticvoidmain(String\[\]args){
3.  floataf=5.2345556f;
4.  //下面将看到af的值已经发生了改变
5.  System.out.println(af);
6.  doublea=0.0;
7.  doublec=Double.NEGATIVE_INFINITY;
8.  floatd=Float.NEGATIVE_INFINITY;
9.  //看到float和double的负无穷大是相等的。
10.  System.out.println(c==d);
11.  //0.0除以0.0将出现非数
12.  System.out.println(a/a);
13.  //两个非数之间是不相等的
14.  System.out.println(a/a==Float.NaN);
15.  //所有正无穷大都是相等的
16.  System.out.println(6.0/0==555.0/0);
17.  //负数除以0.0得到负无穷大
18.  System.out.println(-8/a);
19.  //下面代码将抛出除以0的异常
20.  //System.out.println(0/0);
21.  }
22.  }

布尔型

  布尔型只有一个boolean类型,用于表示逻辑真或者逻辑假。boolean的值只能为true或者是false,其他基本类型不能转换到boolean类型。

示例:

1.  publicclassBooleanTest{
2.  publicstaticvoidmain(String\[\]args){
3.  booleanb1=true;
4.  booleanb2=false;
5.  //下面代码将出现错误:字符串不能直接变成boolean型的值
6.  //booleanb3="true";
7.  //使用boolean和字符串进行连接运算,boolean会自动转换成字符串
8.  Stringstr=true+"";
9.  //下面将输出true
10.  System.out.println(str);
11.  }
12.  }

3.基本类型之间的转换

  Java中基本类型有两种转换方式自动转换和强制转换。讲一个表数范围小的变量赋给一个表数范围大的变量,系统将进行自动转换,将小便量转换为大变量在进行赋值操作。

示例:

1.  publicclassAutoPromote{
2.  publicstaticvoidmain(String\[\]args){
3.  //定义一个short类型变量
4.  shortsValue=5;
5.  //下面代码将出错:表达式中的sValue将自动提升到int类型,
6.  //则右边的表达式类型为int,将一个int类型赋给short类型的变量将发生错误。
7.  //sValue=sValue-2;
8.  byteb=40;
9.  charc='a';
10.  inti=23;
11.  doubled=.314;
12.  //右边表达式中在最高等级操作数为d(double型)
13.  //则右边表达式的类型为double型,故赋给一个double型变量
14.  doubleresult=b+c+i*d;
15.  //将输出144.222
16.  System.out.println(result);
17.  intval=3;
18.  //右边表达式中2个操作数都是int,故右边表达式的类型为int
19.  //因此,虽然23/3不能除尽,依然得到一个int整数
20.  intintResult=23/val;
21.  //将输出7
22.  System.out.println(intResult);
23.  //输出字符串Hello!a7
24.  System.out.println("Hello!"+'a'+7);
25.  //输出字符串104Hello!
26.  System.out.println('a'+7+"Hello!");

29.  }
30.  }

  如果系统把大范围变量转换为小范围变量就需要强制转换,强制转换的语法格式是(type)value,可将valae强制转换为type类型的变量。当强制转换可能会导致数据精度的丢失,请看示例:

1.  publicclassNarrowConversion{
2.  publicstaticvoidmain(String\[\]args){
3.  intiValue=233;
4.  //强制把一个int类型的值转换为byte类型的值
5.  bytebValue=(byte)iValue;
6.  //将输出-23
7.  System.out.println(bValue);
8.  doubledValue=3.98;
9.  //强制把一个double类型的值转换为int
10.  inttol=(int)dValue;
11.  //将输出3
12.  System.out.println(tol);
13.  }
14.  }

4.表达式类型的自动提升

当一个算术表达式中包含多个基本类型时,整个表达式的类型会发生自动提升,Java定义了如下的提升规则:

  • 所有的byte类型,short类型和char经提升到int类型。
  • 怎个算术表达式的数据类型提升到最高等级操作时的类型。

示例:

1.  publicclassAutoPromote{
2.  publicstaticvoidmain(String\[\]args){
3.  //定义一个short类型变量
4.  shortsValue=5;
5.  //下面代码将出错:表达式中的sValue将自动提升到int类型,
6.  //则右边的表达式类型为int,将一个int类型赋给short类型的变量将发生错误。
7.  //sValue=sValue-2;
8.  byteb=40;
9.  charc='a';
10.  inti=23;
11.  doubled=.314;
12.  //右边表达式中在最高等级操作数为d(double型)
13.  //则右边表达式的类型为double型,故赋给一个double型变量
14.  doubleresult=b+c+i*d;
15.  //将输出144.222
16.  System.out.println(result);
17.  intval=3;
18.  //右边表达式中2个操作数都是int,故右边表达式的类型为int
19.  //因此,虽然23/3不能除尽,依然得到一个int整数
20.  intintResult=23/val;
21.  //将输出7
22.  System.out.println(intResult);
23.  //输出字符串Hello!a7
24.  System.out.println("Hello!"+'a'+7);
25.  //输出字符串104Hello!
26.  System.out.println('a'+7+"Hello!");
27.  }
28.  }

5.Java中的引用数据类型

  1. 引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时候被指定为一个特定的类型,声明之后不能改变。
  2. 引用数据类型包括:类(对象)、接口、数组。
  3. 所有引用类型默认值都是null.
  4. 一个引用变量可以用于引用任何与之兼容的类型。

猜你喜欢

转载自www.cnblogs.com/chuxuezhe-xyz/p/11920409.html
今日推荐