第一章Java 编程中的数据类型


介绍

在本文中,我们将了解 Java 中的不同数据类型。数据类型构成了学习编程语言指南的基本构建块。每种编程语言都提供自己的一组具有不同特性和功能的数据类型(通常相同)。

因此,了解 Java 编程中的数据类型对于更深入地了解该语言的核心概念非常重要。我们将通过详细的解释和示例来查看 Java 中的不同数据类型,以展示我们如何声明、初始化和使用变量。

Java中的数据类型是什么?

数据类型定义为可以存储在变量中的数据类型。它告诉 Java 编译器用户想要如何使用数据。除此之外,数据类型限制了变量或函数可能采用的值,同时它定义了数据在内存中的存储方式。

由于 Java 是一种强类型语言,您需要定义变量的数据类型才能使用它,并且不能分配不兼容的数据类型,否则编译器会报错。

Example of Data Type in Java:
int num = 10;

这里我们定义了一个数据类型为int的变量**num是 Integer 的缩写。这表明变量num**只能存储整数值。因此我们给它赋值 10。

如果我们尝试分配整数以外的值,它将与变量的数据类型不兼容。

Example:

``如果我们这样声明一个变量:

int d="Hello";

编译器将通过此消息给您一个错误 - "Type mismatch: cannot convert from String to int"

我们收到此错误是因为我们将 String 分配给了 int 类型变量。因此,为了将字符串值分配给变量,我们在 Java 中使用字符串数据类型。

所以我们这样定义它:

String d = "Hello";

Java中的数据类型

java中有两种数据类型。

  • 原始数据类型
  • 引用或非原始数据类型。

原始数据类型

原始数据类型是由 Java 语言本身定义的那些数据类型。

java中有8种原始数据类型。

Data Type Default Value Default size
boolean false 1 bit
char ‘\u0000’ 2 byte
byte 0 1 byte
short 0 2 byte
int 0 4 byte
long 0L 8 byte
float 0.0f 4 byte
double 0.0d 8 byte

现在,让我们快速浏览一下每种数据类型。

  • boolean:* 此原始数据类型仅表示 1 位信息,因此只有两个允许值:TrueFalse。布尔变量可以同时保存两个值中的任何一个。它用于表示逻辑值,在条件语句(if、else if 等)中很有用。

例子: boolean var = true;

这里我们定义一个布尔变量 var initialize 为true

  • char:该数据类型用于声明可以存储字符值的字符类型变量。它使用内存中的2 个字节空间来存储每个变量。char 范围介于 0 到 65,535(含)之间。

例子:char i = 'a';

我们在单引号中输入 char 值。如果我们将整数值分配给 char 类型变量,编译器将通过将整数转换为其相应的 ASCII 值来隐式地将整数类型转换为 char。

​ 因此,如果我们分配 char i = 97,那么变量i将保存该值a,因为 a 的 ASCII 值是 97。

  • byte: Java 中的这种数据类型声明了一个变量,该变量可以保存 8 位或1 字节有 符号(正值和负值)二进制补码整数。它的范围在 -128 到 127 之间,如果超出任一范围,编译器将抛出错误。

示例: byte num1 = 127;是一个有效的声明。

byte num2 = -129;是无效的声明。

  • 短: 与字节不同,此数据类型存储一个 16 位有符号 2 的补码整数,每个变量使用 2 个字节的空格。其允许值范围介于 -32,768(最小值)到 32,767(最大值)之间。在java中,默认初始化为0。

例子: short num = 10;

  • int:此数据类型用于声明可以保存32 位有符号二进制补码整数的变量。因此,它需要4 个字节的空间来存储每个 int 类型变量。int 类型变量的允许值在2,147,483,648 到 2,147,483,647的范围内。

我们已经在文章中讨论了上面的例子。Java 中有一个关于int的有趣特性。如果我们将字符值分配给int类型变量,编译器将隐式将其转换为 int 类型并分配相应的ASCII值。

例子:int var = 'A';

在这种情况下,var将保存值65,因为 ASCII 代码中的 A 具有值 65。隐式类型转换的这一特性也适用于数据类型。

  • long:当我们必须存储大整数值时使用此数据类型。它可以表示一个64 位有符号二进制补码整数,每个变量需要8 个字节的空间。

例子:long num = 10000000000000L;

在这里,当我们将一个大于 Java 中的整数范围(- 2,147,483,648 到 2,147,483,647)的值分配给 long 数据类型变量时,我们必须为其提供L上面示例中声明的 an 。这告诉编译器该值是长类型的。如果你这样分配它:

long num = 10000000000000;

编译器会报错:integer number too large当我们硬编码一个值时,Java 不知道它是否是一个长类型的值。它对所有数字一视同仁。

  • float: 此数据类型用于表示小数或小数。它使用32 位 IEE-754 浮点标准的内存中的 4 字节空间。在 Java 中,float类型变量可以存储最多 5 个小数位的值。如果我们分配的值在小数部分中具有超过 5 个数字,那么它会被四舍五入到它的前 5 位。

例子:float num = 10.567F;

我们用后缀声明浮点变量,F or f以指示编译器它是一个浮点变量,类似于我们在数据类型示例中看到的。如果我们声明它没有像这样的后缀:

float num = 10.567;

然后编译器会抛出一个错误:possible lossy conversion from double to float. 原因是,在 Java 中,您分配给变量的任何十进制数默认情况下都被视为精度字面量或值,我们正在尝试将精度值分配给浮点类型。

  • double:这种原始数据类型也用于表示十进制或小数,但比浮点类型具有更高的精度。遵循64 位IEEE-754 浮点标准,此数据类型可以存储精度高达 12 位小数的值。它为每个变量使用8 个字节的空间。因此,它对于保持大十进制值的精度很有用。

例子:double num = 10034.5674546;

为什么java中char的大小为2字节..?

在 Java 中,char 的大小为2 个字节,而 C/C++ 等编程语言只为 char 类型变量分配了 1 个字节的空间。原因是 Java 支持Unicode 字符并使用UTF-16编码其字符,而不是 ASCII 代码系统。在开发 Java 时,预计任何 Unicode 字符都需要16 位或 2 字节的内存来存储,这些 Unicode 用于表示特殊符号。因此, char 在 Java 中的大小为 2 个字节。

现在,让我们看一些原始数据类型的实际示例:

两个整数相加

package org.arpit.java2blog;

public class DataTypesDemo {

    public static void main(String[] args) {
        int a=10;
        int b=20;
        int c=a+b;
        System.out.println(c);
    }
}

当你运行上面的程序时,你会得到下面的输出:

30

将 int 分配给 double(加宽)

在这里,我们将分配一个 int 给 double。因为双比 int 占用更多的内存。这是一个加宽操作。

package org.arpit.java2blog;

public class DataTypesDemo {

    public static void main(String[] args) {
        int a=30;
        double b=a;
        System.out.println(a);
        System.out.println(b);
    }
}

当你运行上面的程序时,你会得到下面的输出:

30
30.0

将 double 分配给 int(缩小或类型转换)

在这里,我们将 double 分配给 int。因为双比 int 占用更多的内存。这是一个收窄操作。

package org.arpit.java2blog;

public class DataTypesDemo {

    public static void main(String[] args) {
        double a=30.0;
        int b=(int) a;
        System.out.println(a);
        System.out.println(b);
    }
}

你运行上面的程序时,你会得到下面的输出:

30.0
30

将 int 分配给字节(溢出条件)

当您将 int 分配给 byte 并且 int 的值大于 byte 的大小时,这是一种溢出的情况。

package org.arpit.java2blog;

public class DataTypesDemo {

    public static void main(String[] args) {
        int a=200;
        byte b=(byte) a;
        System.out.println(a);
        System.out.println(b);
    }
}

当你运行上面的程序时,你会得到下面的输出:

200
-56

引用或非原始数据类型:

简单来说,引用数据类型是由 Java API 或您创建的类作为类提供的那些数据类型。因此,类类型的变量是引用数据类型或非原始数据类型。它并不总是 Java 的内置功能,但是有一个例外。

String 类是 java 提供的 Reference 数据类型的一个示例,它不是原始类型,因为它也提供了内置方法。

每次我们将 String 变量创建为对象或字面量时,都会在内部创建一个对象,当我们将其分配给变量时,它就成为引用数据类型。数组也是非原始数据类型的一个例子,因为我们必须在定义数组时创建一个对象。

Java 默认为我们创建的每个引用类型变量分配8 个字节的空间。

总结 Java 中的数据类型:

img


原始数据类型和非原始数据类型有什么区别?

现在让我们快速浏览一下原始数据类型和非原始数据类型或引用数据类型之间的主要区别。

Primitive Data Types Non-Primitive or Reference Data Types
1. 是Java自己预定义的内置Data Type。 1.它是用户定义的数据类型,除了String类之外,Java没有预定义。
2. Java 为每个 Primitive Data Type 分配不同的大小或字节。每种原始数据类型的大小因类型而异。 2. Java 为每个非原始数据类型分配固定大小(8 字节)。
3. 它不提供任何内置方法来调用以对数据执行操作。 3.我们可以调用或调用方法,甚至可以定义自己的方法来执行操作。
4.它总是有一个值,不能为 4.它可以有一个值。
5. 以小写字母开头。示例: int、char、float、double 等。 5. 作为引用数据类型,它必须以大写字母开头,因为Java中的所有类都遵循相同的约定。示例:数组、字符串、对象类和所有用户定义的类。
6. 在创建原始数据类型时,我们为其分配一个值。 6. 在这里,我们为变量分配一个引用。

以上就是 Java 编程中的数据类型。


原文链接:https://codingdict.com/