📜  Java变量和(原始)数据类型

📅  最后修改于: 2020-09-26 15:42:39             🧑  作者: Mango

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

Java变量

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

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


如何在Java中声明变量?

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

int speedLimit = 80;

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

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

int speedLimit;
speedLimit = 80;

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

int speedLimit = 80;
... .. ...
speedLimit = 90; 

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

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

int speedLimit = 80;
... .. ...
float speedLimit;

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


Java中的变量命名规则

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

  • Java中的变量区分大小写。
  • 变量的名称是Unicode字母和数字的序列。它可以以字母$_开头。但是,习惯上以字母开头的变量名。同样,变量名称不能在Java中使用空格。
    Java variable naming convention
    可变命名约定
  • 创建变量时,请选择一个有意义的名称。例如, scorenumberlevel比诸如snl的变量名称更有意义。
  • 如果选择一个单词的变量名,请使用所有小写字母。例如,最好使用speed而不是SPEEDsPEED
  • 如果选择具有多个单词的变量名,请对第一个单词使用所有小写字母,并在每个后续单词中使用大写字母。例如, speedLimit

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

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

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


Java原始数据类型

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

int speed;

在这里, speed是变量,变量的数据类型为intint数据类型确定speed变量只能包含整数。

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

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

8种原始数据类型

布尔值

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

输出


true

字节

  • byte数据类型的值可以从-128到127(8位带符号二进制补码整数)。
  • 如果可以确定变量的值在[-128,127]之内,则可以使用它代替int或其他整数数据类型来节省内存。
  • 默认值:0
  • 例:
class ByteExample {
    public static void main(String[] args) {

        byte range;
        range = 124;
        System.out.println(range);
    }
}

输出


124

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

运行该程序时,输出为:


-200

整型

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

输出


-4250000

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

输出

-42332200000

注意,在-42332200000结尾使用L这表示它是不可或缺的字面量 long类型。您将了解整体的字面量在本文后面。


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

输出


-42.3

浮动

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

输出

-42.3

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


烧焦

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

输出

Q

你得到的输出Q,因为Q的Unicode值是'\u0051'

这是另一个示例:

class CharExample {
    public static void main(String[] args) {
        
        char letter1 = '9';
        System.out.println(letter1);
        
        char letter2 = 65;
        System.out.println(letter2);

    }
}

输出

9
A

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

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


Java也提供了通过支持java.lang.String类。以下是如何在Java中创建String对象的方法:

myString = "Programming is awesome";

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


Java 字面量

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

boolean flag = false;

这里,

  • boolean -是数据类型。
  • 标志 -是可变的
  • false是字面量。

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

像的值1.54true'\u0050' ,在一个程序中直接出现,而不需要计算是字面量。

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


整数字面量

  • 整数字面量用于初始化整数数据类型byteshortintlong变量。
  • 如果整数字面量以lL结尾,则其类型为long 。提示:最好使用L代替l
    // Error! literal 42332200000 of type int is out of range
    int myVariable1 = 42332200000;// 42332200000L is of type long, and it's not out of range
    long myVariable2 = 42332200000L;
  • 整数字面量可以用十进制,十六进制和二进制数字系统表示。
  • 以前缀0x开头的数字表示十六进制。同样,以前缀0b开头的数字表示二进制。
    // decimal
    int decNumber = 34;
    int hexNumber = 0x2F; // 0x represents hexadecimal
    int binNumber = 0b10010; // 0b represents binary

浮点字面量

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

        System.out.println(myDouble);
        System.out.println(myFloat);
        System.out.println(myDoubleScientific);
    }
}

输出


3.4
3.4
344.5

字符和字符串字面量

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

输出

g


Java 8