首页 > 其他分享 >blog 2 Objects, state, behavior in real-world

blog 2 Objects, state, behavior in real-world

时间:2022-09-19 21:24:06浏览次数:119  
标签:real Java 变量 int 数据类型 blog state 文本 数字

 

1.创建变量并命名它们

变量

对象将其状态存储在字段中

Java 编程语言定义了以下类型的变量:

    • 实例变量(非静态字段)从技术上讲,对象将其各个状态存储在“非静态字段”中,即没有关键字的字段。非静态字段也称为实例变量,因为它们的值对于类的每个实例(换句话说,对于每个对象)都是唯一的;一辆自行车独立于另一辆自行车。staticcurrentSpeedcurrentSpeed
    • 类变量(静态字段)类变量是使用修饰符声明的任何字段;这告诉编译器,无论该类被实例化了多少次,都存在此变量的一个副本。定义特定类型自行车的齿轮数的字段可以标记为,因为从概念上讲,相同的齿轮数将适用于所有实例。代码将创建这样一个字段。此外,可以添加关键字以指示齿轮数永远不会改变。staticstaticstatic int numGears = 6;staticfinal
    • 局部变量与对象在字段中存储其状态的方式类似,方法通常将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如 ,)。没有将变量指定为局部的特殊关键字;该确定完全来自声明变量的位置 - 位于方法的左大括号和结束大括号之间。因此,局部变量仅对声明它们的方法可见;无法从类的其余部分访问它们。int count = 0;
    • 参数您已经在类和“Hello World”应用程序的主要方法中看到了参数示例。回想一下,main 方法的签名是 。此处,变量是此方法的参数。要记住的重要一点是,参数始终被归类为“变量”而不是“字段”。这也适用于其他参数接受构造(如构造函数和异常处理程序),您将在本教程后面部分了解这些构造。Bicyclepublic static void main(String[] args)args

      命名变量

      每种编程语言都有自己的一套规则和约定,用于允许使用的名称类型,Java编程语言也不例外。命名变量的规则和约定可以总结如下:

    • 变量名称区分大小写。变量的名称可以是任何合法的标识符 — Unicode 字母和数字的无限长度序列,以字母、美元符号“$”或下划线字符“
”开头。但是,约定是始终以字母开头的变量名称,而不是“$”或“
    ”。此外,按照惯例,美元符号字符从未使用过。您可能会发现在某些情况下,自动生成的名称将包含美元符号,但您的变量名称应始终避免使用它。对于下划线字符,也存在类似的约定。虽然从技术上讲,变量名称以“_”开头是合法的,但不鼓励这种做法。不允许使用空格。
    • 后续字符可以是字母、数字、美元符号或下划线字符。约定(和常识)也适用于此规则。为变量选择名称时,请使用完整单词而不是神秘的缩写。这样做将使你的代码更易于阅读和理解。在许多情况下,它还会使你的代码自我记录;例如,名为“节奏”、“速度和档位”的字段比缩写版本(如 s、c 和 g)更直观。另请记住,您选择的名称不得是关键字或保留字。
    • 如果您选择的名称仅包含一个单词,请用所有小写字母拼写该单词。如果它由多个单词组成,请将每个后续单词的第一个字母大写。名称和是该公约的主要例子。如果变量存储常量值(如静态 final int NUM_GEARS = 6),则约定会稍作更改,将每个字母大写,并用下划线字符分隔后续单词。按照惯例,下划线字符永远不会在其他地方使用。gearRatiocurrentGear

      2,在程序中创建基元类型变量

      基元类型

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

      • byte:数据类型为 8 位有符号二的补码整数。它的最小值为 -128,最大值为 127(含)。数据类型可用于在大型数组中节省内存,其中内存节省实际上很重要。它们也可以用于代替它们的限制有助于澄清代码的地方;变量范围有限的事实可以作为文档的一种形式。bytebyteint

      • short:数据类型为 16 位有符号二的补码整数。它的最小值为 -32,768,最大值为 32,767(含)。与 一样,同样的准则也适用:在节省内存真正重要的情况下,您可以使用短代码将内存保存在大型数组中。shortbyte

      • int:默认情况下,数据类型为 32 位有符号 2 的补码整数,其最小值为 -2int31最大值为 231-1.在 Java SE 8 及更高版本中,可以使用数据类型来表示无符号的 32 位整数,该整数的最小值为 0,最大值为 2int32-1.使用 Integer 类将数据类型用作无符号整数。有关详细信息,请参阅编号类部分。像 compareUnsigned() 这样的静态方法已添加到 Integer 类中,以支持无符号整数的算术运算。int

      • long:数据类型为 64 位 2 的补码整数。有符号多头的最小值为 -2long63最大值为 263-1.在 Java SE 8 及更高版本中,可以使用数据类型来表示无符号的 64 位长度,其最小值为 0,最大值为 2long64-1.当您需要的值范围大于 所提供的值范围时,请使用此数据类型。Long 类还包含比较无符号 ()除法无符号 () 等方法,以支持无符号长整型的算术运算。int

      • float:数据类型为单精度 32 位 IEEE 754 浮点。其值范围超出了本讨论的范围,但在 Java 语言规范浮点类型、格式和值部分中指定。与 和 的建议一样,如果需要将内存保存在大型浮点数数组中,请使用 a(而不是 )。此数据类型绝不应用于精确值,如货币。为此,您需要改用 Java.math.数字和字符串涵盖了 Java 平台提供的十进制和其他有用的类。floatbyteshortfloatdouble

      • double:数据类型为双精度 64 位 IEEE 754 浮点。其值范围超出了本讨论的范围,但在 Java 语言规范浮点类型、格式和值部分中指定。对于十进制值,此数据类型通常是默认选项。如上所述,此数据类型绝不应用于精确值,例如货币。double

      • boolean:数据类型只有两个可能的值:和 。将此数据类型用于跟踪真/假条件的简单标志。此数据类型表示一位信息,但其“大小”不是精确定义的。booleantruefalse

      • 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;

      整数文本

      如果整数文本以字母或 ; 结尾,则为类型。否则,它是类型 。建议您使用大写字母,因为小写字母很难与数字区分开来。longLlintLl1

      整数类型 、 、 和 的值可以从文本创建。超出 范围的类型的值可以从文本创建。整数文本可以用以下数字系统表示:byteshortintlongintlongintlong

      • 十进制:以 10 为基数,其数字由数字 0 到 9 组成;这是您每天使用的数字系统
      • 十六进制:以 16 为基数,其数字由数字 0 到 9 和字母 A 到 F 组成
      • 二进制:以 2 为基数,其数字由数字 0 和 1 组成(您可以在 Java SE 7 及更高版本中创建二进制文本)

      对于通用编程,十进制系统可能是您唯一使用过的数字系统。但是,如果需要使用其他数字系统,下面的示例演示正确的语法。前缀表示十六进制,表示二进制:0x0b

      // The number 26, in decimal
      int decimalValue = 26;
      
      //  The number 26, in hexadecimal
      int hexadecimalValue = 0x1a;
      
      // The number 26, in binary
      int binaryValue = 0b11010;
      

      浮点文本

      浮点文字的类型是,如果它以字母或 ;否则,其类型为 ,并且可以选择以字母或 结尾。floatFfdoubleDd

      浮点类型(和)也可以使用or(用于科学记数法)或(32位浮点文字)和/或(64位双精度文字;这是默认值,按照惯例省略)来表示。floatdoubleEeFfDd

      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 或 文本。charString\u0108charStringcharString

      Java 编程语言还支持文本的一些特殊转义序列:(退格)、(制表符)、(换行符)、(换行符)、(换行符)、(回车符)、(双引号)、(单引号)和(反斜杠)。charString\b\t\n\f\r\"\'\\

      还有一个特殊的文本,可以用作任何引用类型的值。文本可以分配给任何变量,但基元类型的变量除外。除了测试其存在之外,您几乎无法对某个值执行任何操作。因此,在程序中经常用作标记,以指示某些对象不可用。nullnullnullnull

      最后,还有一种特殊的文字称为类文字,由获取类型名称并附加;例如。这是指表示类型本身的对象,类型为 Class.classString.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;
      

      您只能在数字之间放置下划线;您不能在以下位置放置下划线:

      • 在数字的开头或结尾
      • 与浮点文字中的小数点相邻
      • 在 或 后缀之前FL
      • 在需要一串数字的位置

      以下示例演示了数字文本中有效和无效的下划线位置:

      // 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_;

标签:real,Java,变量,int,数据类型,blog,state,文本,数字
From: https://www.cnblogs.com/Hadaly/p/16709100.html

相关文章