原文: https://www.programiz.com/java-programming/variables-primitive-data-types

在本教程中,您将了解变量,如何创建变量以及 Java 编程语言支持的用于创建变量的不同数据类型。

Java 变量

变量是内存中用于存储数据的位置(存储区域)。

为了指示存储区域,应该为每个变量赋予唯一的名称(标识符)。 了解有关 Java 标识符的更多信息。


如何在 Java 中声明变量?

这是在 Java 中声明变量的示例。

  1. int speedLimit = 80;

在此,speedLimitint数据类型的变量,并分配了值 80。这意味着speedLimit变量可以存储整数值。 您将在本文稍后详细了解 Java 数据类型。

在示例中,我们在声明期间为变量分配了值。 但是,这不是强制性的。 您可以在不分配值的情况下声明变量,以后可以根据需要存储值。 例如,

  1. int speedLimit;
  2. speedLimit = 80;

变量的值可以在程序中更改,因此名称为“变量”。 例如,

  1. int speedLimit = 80;
  2. ... .. ...
  3. speedLimit = 90;

Java 是一种静态类型的语言。 这意味着必须先声明所有变量,然后才能使用它们。

同样,您不能在同一范围内更改 Java 中变量的数据类型。 变量范围是什么? 暂时不要担心。 现在,请记住您不能做这样的事情。

  1. int speedLimit = 80;
  2. ... .. ...
  3. float speedLimit;

要了解更多信息,请访问:我可以更改 Java 中变量的声明类型吗?


Java 中的变量命名规则

Java 编程语言具有一套自己的变量命名规则和约定。 这是您需要了解的内容:

  • Java 中的变量区分大小写。

  • 变量的名称是 Unicode 字母和数字的序列。 它可以以字母$_开头。 但是,习惯上以字母开头的变量名。 同样,变量名称不能在 Java 中使用空格。
    Java 变量和(原始)数据类型 - 图1
    变量命名约定

  • 创建变量时,请选择一个有意义的名称。 例如,scorenumberlevel比诸如sn等变量名更有意义。 和1

  • 如果选择一字变量名称,请使用所有小写字母。 例如,最好使用speed而不是SPEEDsPEED

  • 如果选择具有多个单词的变量名,请为第一个单词使用所有小写字母,并大写每个后续单词的第一个字母。 例如,speedLimit


Java 编程语言中有 4 种类型的变量:

  • 实例变量(非静态字段)
  • 类变量(静态字段)
  • 局部变量
  • 参数

您将在后面的章节中学习。 如果您有兴趣现在了解更多信息,请访问 Java Variable Types


Java 原始数据类型

如上所述,Java 是一种静态类型的语言。 这意味着必须先声明所有变量,然后才能使用它们。

  1. int speed;

在此,speed是变量,并且变量的数据类型是intint数据类型确定speed变量只能包含整数。

简单来说,变量的数据类型决定了变量可以存储的值。 Java 编程语言中预定义了 8 种数据类型,称为原始数据类型。

除了原始数据类型外,Java 中还引用了数据类型(您将在后面的章节中了解到)。

8 种原始数据类型

boolean

  • boolean数据类型具有两个可能的值,即truefalse
  • 默认值:false
  • 它们通常用于对/错条件。 例如,
  1. class BooleanExample {
  2. public static void main(String[] args) {
  3. boolean flag = true;
  4. System.out.println(flag);
  5. }
  6. }

输出


  1. true

byte

  • byte数据类型的值可以从 -128 到 127(8 位带符号二进制补码整数)。
  • 如果可以确定变量的值在[-128, 127]之内,则可以用它代替int或其他整数数据类型来节省内存。
  • 默认值:0
  • 示例:
  1. class ByteExample {
  2. public static void main(String[] args) {
  3. byte range;
  4. range = 124;
  5. System.out.println(range);
  6. }
  7. }

输出


  1. 124

short

  • short数据类型的值可以从 -32768 到 32767(16 位带符号二进制补码整数)。
  • 如果可以确定变量的值在[-32768, 32767]之内,那么它将用于代替其他整数数据类型以节省内存。
  • 默认值:0
  • 示例:
  1. class ShortExample {
  2. public static void main(String[] args) {
  3. short temperature;
  4. temperature = -200;
  5. System.out.println(temperature);
  6. }
  7. }

运行该程序时,输出为:


  1. -200

int

  • int数据类型的值可以从-2 ^ 312 ^ 3 -1(32 位带符号二进制补码整数)。
  • 如果您使用的是 Java 8 或更高版本,则可以使用无符号 32 位整数,最小值为 0,最大值为2 ^ 32 -1。 如果您想了解更多有关它的信息,请访问:如何在 Java 8 中使用无符号整数?
  • 默认值:0
  • 示例:
  1. class IntExample {
  2. public static void main(String[] args) {
  3. int range = -4250000;
  4. System.out.println(range);
  5. }
  6. }

输出


  1. -4250000

long

  • long数据类型的值可以从-2 ^ 632 ^ 63 -1(64 位带符号二进制补码整数)。
  • 如果您使用的是 Java 8 或更高版本,则可以使用无符号的 64 位整数,其最小值为 0,最大值为2 ^ 64 -1
  • 默认值:0
  • 示例:
  1. class LongExample {
  2. public static void main(String[] args) {
  3. long range = -42332200000L;
  4. System.out.println(range);
  5. }
  6. }

输出

  1. -42332200000

注意,在-42332200000末尾使用L。 这表示它是long类型的整数。 您将在本文稍后了解整数。


double

  • double数据类型是双精度 64 位浮点。
  • 切勿将其用于诸如货币之类的精确值。
  • 默认值:0.0(0.0d
  • 示例:
  1. class DoubleExample {
  2. public static void main(String[] args) {
  3. double number = -42.3;
  4. System.out.println(number);
  5. }
  6. }

输出


  1. -42.3

float

  • float数据类型是单精度 32 位浮点。 如果您有兴趣,请详细了解单精度和双精度浮点
  • 切勿将其用于诸如货币之类的精确值。
  • 默认值:0.0(0.0f
  • 示例:
  1. class FloatExample {
  2. public static void main(String[] args) {
  3. float number = -42.3f;
  4. System.out.println(number);
  5. }
  6. }

输出

  1. -42.3

请注意,在上述程序中,我们使用-42.3f代替-42.3。 这是因为-42.3double字面值。 要告诉编译器将-42.3视为float而不是double,您需要使用fF


char

  • 这是一个 16 位 Unicode 字符。
  • char数据类型的最小值为'\u0000'(0)。 char数据类型的最大值为'\uffff'
  • 默认值:'\u0000'
  • 示例:
  1. class CharExample {
  2. public static void main(String[] args) {
  3. char letter = '\u0051';
  4. System.out.println(letter);
  5. }
  6. }

输出

  1. Q

因为Q的 Unicode 值为'\u0051',所以您得到输出Q

这是另一个示例:

  1. class CharExample {
  2. public static void main(String[] args) {
  3. char letter1 = '9';
  4. System.out.println(letter1);
  5. char letter2 = 65;
  6. System.out.println(letter2);
  7. }
  8. }

输出

  1. 9
  2. A

当您打印letter1时,会得到9,因为letter1被分配了字符'9'.

当您打印letter2时,会得到A,因为'A'的 ASCII 值为 65。这是因为 Java 编译器将字符视为整数类型。 要了解有关 ASCII 的更多信息,请访问什么是 ASCII 代码?


String

Java 还通过java.lang.String类提供了对字符串的支持。 您可以在 Java 中创建String对象的方法如下:

  1. myString = "Programming is awesome";

Java String是一个重要的主题,您将在后面的章节中详细学习。 但是,如果您不是编程的新手,现在想学习它,请访问 Java String


Java 字面值

为了理解字面值,让我们举个例子来给变量赋值。

  1. boolean flag = false;

这里,

  • boolean - 是一种数据类型。
  • flag - 是变量。
  • false - 是字面值。

字面值是固定值的源代码表示。

直接在程序中出现而无需计算的值1.54true'\u0050'是字面值。

在上面的示例中,flag是变量。 由于它是boolean类型的变量,因此可以存储falsetrue。 为了使编译器理解它,需要进行计算。 但是,诸如-5'a'true之类的字面值表示固定值。


整数字面量

  • 整数字面值用于初始化整数数据类型byteshortintlong的变量。

  • 如果整数字面值以lL结尾,则其类型为long。 提示:最好使用L代替l

    1. // Error! literal 42332200000 of type int is out of range
    2. int myVariable1 = 42332200000;// 42332200000L is of type long, and it's not out of range
    3. long myVariable2 = 42332200000L;
  • 整数字面值可以用十进制,十六进制和二进制数字系统表示。

  • 以前缀0x开头的数字表示十六进制。 同样,以前缀0b开头的数字表示二进制。

    1. // decimal
    2. int decNumber = 34;// 0x represents hexadecimal
    3. int hexNumber = 0x2F;// 0b represents binary
    4. int binNumber = 0b10010;

浮点字面值

  • 浮点字面值用于初始化数据类型floatdouble的变量。
  • 如果浮点字面值以fF结尾,则其类型为float。 否则,它的类型为double。 双重类型可以选择以Dd结尾。 但是,这不是必需的。
  • 它们也可以使用Ee以科学计数法表示。
  1. class DoubleExample {
  2. public static void main(String[] args) {
  3. double myDouble = 3.4;
  4. float myFloat = 3.4F;
  5. // 3.445*10^2
  6. double myDoubleScientific = 3.445e2;
  7. System.out.println(myDouble);
  8. System.out.println(myFloat);
  9. System.out.println(myDoubleScientific);
  10. }
  11. }

输出


  1. 3.4
  2. 3.4
  3. 344.5

字符和字符串字面值

  • 它们包含 Unicode(UTF-16)字符
  • 对于char字面值,使用单引号。 例如'a''\u0111'等。
  • 对于String字面值,使用双引号。 例如"programming""Java 8"
  • Java 还支持一些特殊的转义序列。 例如,\b(空格),\t(标签),\n(换行),\f(换页),\r(回车),\"(双引号),[ \'(单引号)和\\(反斜杠)。
  1. class DoubleExample {
  2. public static void main(String[] args) {
  3. char myChar = 'g';
  4. char newLine = '\n';
  5. String myString = "Java 8";
  6. System.out.println(myChar);
  7. System.out.println(newLine);
  8. System.out.println(myString);
  9. }
  10. }

输出

  1. g
  2. Java 8