1.创建变量并命名它们
变量
对象将其状态存储在字段中。
Java 编程语言定义了以下类型的变量:
- 实例变量(非静态字段)从技术上讲,对象将其各个状态存储在“非静态字段”中,即没有关键字的字段。非静态字段也称为实例变量,因为它们的值对于类的每个实例(换句话说,对于每个对象)都是唯一的;一辆自行车独立于另一辆自行车。
static
currentSpeed
currentSpeed
- 类变量(静态字段)类变量是使用修饰符声明的任何字段;这告诉编译器,无论该类被实例化了多少次,都存在此变量的一个副本。定义特定类型自行车的齿轮数的字段可以标记为,因为从概念上讲,相同的齿轮数将适用于所有实例。代码将创建这样一个字段。此外,可以添加关键字以指示齿轮数永远不会改变。
static
static
static int numGears = 6;
static
final
- 局部变量与对象在字段中存储其状态的方式类似,方法通常将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如 ,)。没有将变量指定为局部的特殊关键字;该确定完全来自声明变量的位置 - 位于方法的左大括号和结束大括号之间。因此,局部变量仅对声明它们的方法可见;无法从类的其余部分访问它们。
int count = 0;
- 参数您已经在类和“Hello World”应用程序的主要方法中看到了参数示例。回想一下,main 方法的签名是 。此处,变量是此方法的参数。要记住的重要一点是,参数始终被归类为“变量”而不是“字段”。这也适用于其他参数接受构造(如构造函数和异常处理程序),您将在本教程后面部分了解这些构造。
Bicycle
public static void main(String[] args)
args
命名变量
每种编程语言都有自己的一套规则和约定,用于允许使用的名称类型,Java编程语言也不例外。命名变量的规则和约定可以总结如下:
变量名称区分大小写。变量的名称可以是任何合法的标识符 — Unicode 字母和数字的无限长度序列,以字母、美元符号“$”或下划线字符“
- ”。此外,按照惯例,美元符号字符从未使用过。您可能会发现在某些情况下,自动生成的名称将包含美元符号,但您的变量名称应始终避免使用它。对于下划线字符,也存在类似的约定。虽然从技术上讲,变量名称以“_”开头是合法的,但不鼓励这种做法。不允许使用空格。
- 后续字符可以是字母、数字、美元符号或下划线字符。约定(和常识)也适用于此规则。为变量选择名称时,请使用完整单词而不是神秘的缩写。这样做将使你的代码更易于阅读和理解。在许多情况下,它还会使你的代码自我记录;例如,名为“节奏”、“速度和档位”的字段比缩写版本(如 s、c 和 g)更直观。另请记住,您选择的名称不得是关键字或保留字。
- 如果您选择的名称仅包含一个单词,请用所有小写字母拼写该单词。如果它由多个单词组成,请将每个后续单词的第一个字母大写。名称和是该公约的主要例子。如果变量存储常量值(如静态 final int NUM_GEARS = 6),则约定会稍作更改,将每个字母大写,并用下划线字符分隔后续单词。按照惯例,下划线字符永远不会在其他地方使用。
gearRatio
currentGear
2,在程序中创建基元类型变量
基元类型
Java 编程语言是静态类型的,这意味着必须先声明所有变量,然后才能使用它们。
-
byte
:数据类型为 8 位有符号二的补码整数。它的最小值为 -128,最大值为 127(含)。数据类型可用于在大型数组中节省内存,其中内存节省实际上很重要。它们也可以用于代替它们的限制有助于澄清代码的地方;变量范围有限的事实可以作为文档的一种形式。byte
byte
int
-
short
:数据类型为 16 位有符号二的补码整数。它的最小值为 -32,768,最大值为 32,767(含)。与 一样,同样的准则也适用:在节省内存真正重要的情况下,您可以使用短代码将内存保存在大型数组中。short
byte
-
int
:默认情况下,数据类型为 32 位有符号 2 的补码整数,其最小值为 -2int
31最大值为 231-1.在 Java SE 8 及更高版本中,可以使用数据类型来表示无符号的 32 位整数,该整数的最小值为 0,最大值为 2int
32-1.使用Integer
类将数据类型用作无符号整数。有关详细信息,请参阅编号类部分。像 compareUnsigned()
这样的静态方法已添加到Integer
类中,以支持无符号整数的算术运算。int
-
long
:数据类型为 64 位 2 的补码整数。有符号多头的最小值为 -2long
63最大值为 263-1.在 Java SE 8 及更高版本中,可以使用数据类型来表示无符号的 64 位长度,其最小值为 0,最大值为 2long
64-1.当您需要的值范围大于 所提供的值范围时,请使用此数据类型。Long
类还包含比较无符号 ()
、除法无符号 ()
等方法,以支持无符号长整型的算术运算。int
-
float
:数据类型为单精度 32 位 IEEE 754 浮点。其值范围超出了本讨论的范围,但在 Java 语言规范的浮点类型、格式和值部分中指定。与 和 的建议一样,如果需要将内存保存在大型浮点数数组中,请使用 a(而不是 )。此数据类型绝不应用于精确值,如货币。为此,您需要改用Java.math.
数字和字符串涵盖了 Java 平台提供的十进制
和其他有用的类。float
byte
short
float
double
-
double
:数据类型为双精度 64 位 IEEE 754 浮点。其值范围超出了本讨论的范围,但在 Java 语言规范的浮点类型、格式和值部分中指定。对于十进制值,此数据类型通常是默认选项。如上所述,此数据类型绝不应用于精确值,例如货币。double
-
boolean
:数据类型只有两个可能的值:和 。将此数据类型用于跟踪真/假条件的简单标志。此数据类型表示一位信息,但其“大小”不是精确定义的。boolean
true
false
-
char
:数据类型是单个 16 位 Unicode 字符。它的最小值为(或 0)和最大值(包括 65,535)。char
\u0000
\uffff
除了上面列出的八种基元数据类型之外,Java 编程语言还通过
java.lang.String
类为字符串提供特殊支持。使用默认值初始化变量
在声明字段时,并不总是需要赋值。已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或 null,具体取决于数据类型。
下表汇总了上述数据类型的默认值。
数据类型 默认值(对于字段) 字节 0 短 0 整型 0 长 0L 浮 0.0华氏度 双 0.0d 煳 \u0000
字符串(或任何对象) 零 布尔 false
局部变量略有不同;编译器从不将默认值分配给未初始化的局部变量。如果无法在声明本地变量的位置对其进行初始化,请确保在尝试使用它之前为其赋值。访问未初始化的局部变量将导致编译时错误。
使用文本创建值
您可能已经注意到,在初始化基元类型的变量时不使用关键字。基元类型是内置于语言中的特殊数据类型;它们不是从类创建的对象。文字是固定值的源代码表示;文本直接在代码中表示,无需计算。如下所示,可以将文本分配给基元类型的变量:
new
boolean result = true; char capitalC = 'C'; byte b = 100; short s = 10000; int i = 100000;
整数文本
如果整数文本以字母或 ; 结尾,则为类型。否则,它是类型 。建议您使用大写字母,因为小写字母很难与数字区分开来。
long
L
l
int
L
l
1
整数类型 、 、 和 的值可以从文本创建。超出 范围的类型的值可以从文本创建。整数文本可以用以下数字系统表示:
byte
short
int
long
int
long
int
long
- 十进制:以 10 为基数,其数字由数字 0 到 9 组成;这是您每天使用的数字系统
- 十六进制:以 16 为基数,其数字由数字 0 到 9 和字母 A 到 F 组成
- 二进制:以 2 为基数,其数字由数字 0 和 1 组成(您可以在 Java SE 7 及更高版本中创建二进制文本)
对于通用编程,十进制系统可能是您唯一使用过的数字系统。但是,如果需要使用其他数字系统,下面的示例演示正确的语法。前缀表示十六进制,表示二进制:
0x
0b
// The number 26, in decimal int decimalValue = 26; // The number 26, in hexadecimal int hexadecimalValue = 0x1a; // The number 26, in binary int binaryValue = 0b11010;
浮点文本
浮点文字的类型是,如果它以字母或 ;否则,其类型为 ,并且可以选择以字母或 结尾。
float
F
f
double
D
d
浮点类型(和)也可以使用or(用于科学记数法)或(32位浮点文字)和/或(64位双精度文字;这是默认值,按照惯例省略)来表示。
float
double
E
e
F
f
D
d
double d1 = 123.4; // same value as d1, but in scientific notation double d2 = 1.234e2; float f1 = 123.4f;
字符和字符串文本
类型的文本,可以包含任何统一码 (UTF-16) 字符。如果编辑器和文件系统允许,则可以直接在代码中使用此类字符。如果没有,您可以使用“Unicode 转义”,例如(大写 C 与环反射),或“S\u00ED Se\u00F1or”(西班牙语中的 Sí Señor)。始终对文字使用“单引号”,对文字使用“双引号”。Unicode 转义序列可以在程序的其他地方使用(例如,在字段名称中),而不仅仅是 in 或 文本。
char
String
\u0108
char
String
char
String
Java 编程语言还支持文本的一些特殊转义序列:(退格)、(制表符)、(换行符)、(换行符)、(换行符)、(回车符)、(双引号)、(单引号)和(反斜杠)。
char
String
\b
\t
\n
\f
\r
\"
\'
\\
还有一个特殊的文本,可以用作任何引用类型的值。文本可以分配给任何变量,但基元类型的变量除外。除了测试其存在之外,您几乎无法对某个值执行任何操作。因此,在程序中经常用作标记,以指示某些对象不可用。
null
null
null
null
最后,还有一种特殊的文字称为类文字,由获取类型名称并附加;例如。这是指表示类型本身的对象,
类型为 Class
。.class
String.class
在数字文本中使用下划线字符
在 Java SE 7 及更高版本中,任意数量的下划线字符 () 可以出现在数字文本中数字之间的任何位置。例如,此功能使您能够。以数字文本分隔数字组,这可以提高代码的可读性。
_
例如,如果代码包含具有许多数字的数字,则可以使用下划线字符将数字分隔成三组的数字,类似于使用逗号或空格等标点符号作为分隔符。
下面的示例演示了在数字文本中使用下划线的其他方法:
long creditCardNumber = 1234_5678_9012_3456L; long socialSecurityNumber = 999_99_9999L; float pi = 3.14_15F; long hexBytes = 0xFF_EC_DE_5E; long hexWords = 0xCAFE_BABE; long maxLong = 0x7fff_ffff_ffff_ffffL; byte nybbles = 0b0010_0101; long bytes = 0b11010010_01101001_10010100_10010010;
您只能在数字之间放置下划线;您不能在以下位置放置下划线:
- 在数字的开头或结尾
- 与浮点文字中的小数点相邻
- 在 或 后缀之前
F
L
- 在需要一串数字的位置
以下示例演示了数字文本中有效和无效的下划线位置:
// Invalid: cannot put underscores // adjacent to a decimal point float pi1 = 3_.1415F; // Invalid: cannot put underscores // adjacent to a decimal point float pi2 = 3._1415F; // Invalid: cannot put underscores // prior to an L suffix long socialSecurityNumber1 = 999_99_9999_L; // OK (decimal literal) int x1 = 5_2; // Invalid: cannot put underscores // At the end of a literal int x2 = 52_; // OK (decimal literal) int x3 = 5_______2; // Invalid: cannot put underscores // in the 0x radix prefix int x4 = 0_x52; // Invalid: cannot put underscores // at the beginning of a number int x5 = 0x_52; // OK (hexadecimal literal) int x6 = 0x5_2; // Invalid: cannot put underscores // at the end of a number int x7 = 0x52_;
-