(006) java后台开发之基本数据类型

来源:互联网 发布:杭州网络推广营销 编辑:程序博客网 时间:2024/06/05 09:11

参考:https://course.tianmaying.com/java-basic+data-types#

数据类型是一门程序语言的基本构成元素,Java语言提供了八种基本类型,其中包括六种数字类型(四种整数型,两种浮点型),一种字符类型,还有一种布尔型。

byte

  • byte数据类型是8位、有符号整数;有符号指的是有正数和负数之分
  • 最小值是-128(-2^7)
  • 最大值是127(2^7-1)
  • 默认值是0
  • byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一

示例:

byte foo = 100;byte bar = -50;

short

  • short数据类型是16位、有符号整数
  • 最小值是-32768(-2^15)
  • 最大值是32767(2^15 - 1)
  • 默认值是0
  • short数据类型也可以像byte那样节省空间,一个short变量是int变量所占空间的二分之一

示例:

short number1 = 100;short number2 = -2000

int

  • int数据类型是32位、有符号整数
  • 最小值是-2,147,483,648(-2^31)
  • 最大值是2,147,485,647(2^31 - 1)
  • 默认值是0

示例:

int number1 = 50000;int number2 = -60000

整型变量默认为int类型。

long

  • long数据类型是64位、有符号整数
  • 最小值是-9,223,372,036,854,775,808(-2^63)
  • 最大值是9,223,372,036,854,775,807(2^63 -1)
  • 默认值是0L
  • 这种类型主要使用在需要比较大整数的系统上

示例:

long number1 = 50000L;long number2 = -60000L

float

  • float数据类型是单精度、32位的浮点数
  • float在储存大型浮点数组的时候可节省内存空间
  • 默认值是0.0f
  • 浮点数不能用来表示精确的值,如货币
float f1 = 123.f;float f2 = 456.f;

double

  • double数据类型是双精度、64位的浮点数
  • 浮点数的默认类型为double类型
  • 默认值是0.0d
  • double类型同样不能表示精确的值,如货币

示例:

double number1 = 3333.4;

boolean

  • boolean数据类型表示一位的信息
  • 只有两个取值:truefalse
  • 默认值是false
  • 这种类型只作为一种标志来记录true/false情况

示例:

boolean flag = trueboolean active = false;

char

  • char类型是一个单一的16位Unicode字符
  • 最小值是'\u0000'(即为0)
  • 最大值是'\uffff'(即为65,535)
  • 默认值是'\u0000'(即为0)
  • char数据类型可以储存任何字符

示例:

char letter = 'A';

类型转换

一个浮点数字面量默认是double类型,如果要定义float类型则要在字面量最后添加f或者F

double a = 1.23;float b = 1.23F;float c = 1.23; // 编译错误

以上代码中,第三行代码将出现编译错误,因为1.23这个字面量是double类型的,不能将其赋值给float类型。

一个整数字面量默认是int类型,如果要定义长整形(long)则要在字面量最后添加l或者L。但是

int a = 100;long b = 100000L;long c = 100000;

第三行代码long c = 100000;不会有编译错误,虽然字面量100000int类型的,但是当int类型赋值给long类型时,可以自动转换long类型。

占用内存空间小的类型可以自动转换为占用空间大的类型,反之则不成立。你把一个变量的想象成一个箱子,更小的箱子里的东西可以放入到更大的箱子中,将更大的箱子里的东西放到更小的箱子则可能装不下。比如:

  • b = a;是合法的赋值
  • a = b;则是非法的赋值,会有编译错误,这其实也是代码float c = 1.23;会发生编译错误的原因

如果一定要将b的值(long类型)赋值给a,则要进行强制转换

a = (int)b;

b变量前的(int)表示将b的值强制转换为int类型。注意强制类型转换时,可能导致数据错误,比如b的值超过了int类型的表示范围,此时就会进行数据截断(丢掉箱子装不下的东西),我们应该尽量避免这种情况。

基本类型之间的自动转换关系如下:

以上8种基本类型都不是类,Java提供了对应的类,称之为包装类。包装类可以认为是将基本类型转换成的一个引用类型。

我们来比较以下三个字符串:

String str1;String str2 = "";String str3 = new String();
  • str1的值为null,表示没有指向任何字符串对象
  • str2已经指向了一个字符串对象,这个对象的字符序列内容为空
  • str3是显式地调用构造函数创建字符串对象,该对象的字符序列内容为空,与第二行代码是基本一样的。

原创粉丝点击