Java官方教程翻译系列(二)(2020.12.15更)

前言

本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,会利用闲暇时间不定期更新,感兴趣的朋友可以关注一下橙子;翻译过程中尽量的对一些关键词保留了英文原文,如果你想看英文原版教材却又看不懂,可以试着来看一下橙子的翻译版啊,欢迎大家留言讨论
更多相关文章点击阅读
Java官方教程翻译系列(一)
Java官方教程翻译系列(二)

语言基础

变量 variable

你已经了解了objects存储它们的state 在fields里面。但是,Java语言也用术语variable。本节讨论这种关系,以及变量命名规则和约定,基本数据类型(primitive types, character strings, and arrays),默认值,字面量(literals)

variable

正如上一节所说,an object stores its state in fields。

int cadence = 0;
int speed = 0;
int gear = 1;

在上篇(一)介绍object的那一节中,介绍了fields,但你可能还有几个问题,例如:命名fields的规则和约定是什么?除了int, 还有哪些数据类型?声明(declared)fields的时候是否必须对其实例化(initialized)?如果没有显示的实例化fields,是否会为它们指定默认值?在本节课中,我们将探讨这些问题的答案,在此之前,你必须先意识到一些技术区别。在Java语言中,术语“fields” and "variable"都被使用;这是新手之间普遍困惑的根源,因为两者看起来似乎指的同一件事情。

Java语言定义了以下几种variables:

  • Instance Variables (Non-Static Fields)
    技术上来讲,对象将其各自的states储存在“non-static fields”中,即declared fields的时候没有static关键字。Non-static fields也被称为instance variables,因为因为它们的值(values)对于每个类的实例(each instance of a class)(换句话说,对于每个object)都是唯一的。一辆自行车的currentSpeed与另一辆的currentSpeed无关。
  • Class Variables (Static Fields)
    A class variables 是任何使用static修饰符declared的fields。这告诉编译器,无论该class被instantiated了多少次,该variable确实只存在一个副本(copy)。一个为特定类型自行车定义挡位的field可以被标记为static,因为从概念上来说,相同数量的挡位将用于所有实例(instances)。代码static int numGears = 6;将创造这样一个field。另外,可以用关键字final指示(indicate)the number of gear永远不会改变。
  • Local Variables
    类似于a object储存它的state在fields,a method 通常store它的temporary state在local variables 。declaring a local varivbles的语法类似于declaring a field(例如:int count = 0;)。没有特殊的关键字将a variables 指定为a local variable;而是由declaring variables的位置决定的,该位置在method的左右括号之间。因此,local variables仅对declared它们的method可见;不能被class的其它部分访问。
  • Parameters
    你已经在Bicycle class和“Hello World” application的main method中看到了parameters的示例。回想一下,main method的签名(signature)是public static woid main(String [] args)。这里,args variable是方法的parameter。要记住的一点是,parameter始终被分类为variables,而不是fields。这同样适用于你在本教程中将学到的其它参数接受结构(例如构造函数(constructors)和异常处理程序(exception handlers))。

本教程接下来在讨论fields and variables时将遵循一下一般准则。如果我们讨论的是“fields in general”(不包括local variables and parameters),我们可以简称“fields”。如果讨论适用于以上所有内容,我们可以简称“variables”。橙子说--------fields范围更小一些包括以上2个(Instance Variables (Non-Static Fields) and Class Variables (Static Fields) ),variables范围更大一些,包括以上4个。如果上下文(context)需要区分,我们将酌情使用特定术语(static field, local variables, etc.)。你也可能偶尔看到术语“member”,A type’s fields, methods and nested types统称为它的members。

naming

对于每种运行使用的名称,每种编程语言都有自己的规则和约定,Java语言也不例外。变量(variables)命名的规则和约定如下:

  • 区分大小写(case-sensitive)
    变量名称可以是任何合法的标识符 — 无限长度的Unicode letters和数字(digits)序列,以字母(letter),美元符号( $ ),或下划线( _ )开头。但是,惯例是始终以letter开头,而不是“ ” 或 者 “ ” ; 并 且 , 完 全 不 适 用 “ ”或者“_”;并且,完全不适用“ ”或者“”​;并且,完全不适用“”。你可能会发现,有时自动生成的名称会包含$,但是你的变量名称应始终避免使用它。下划线字符存在类似的约定,尽管变量名以"_"开头在技术上是合法的,但是不建议这样做。禁止使用空格。橙子说--------以字母letter开头就对了。
  • 后续字符可以是letters, digits, dollar signs, or _。为变量命名时,请使用完整的单词,而不是隐晦的缩写。通常,这将使你的代码有更好地可读性,例如,cadence比c直观的多。另外,不能选用关键字(keyword)和保留字(reserved word)。
  • 如果你的名称只有一个单词,则用小写字母。如果包含多个单词,将后续每个单词的首字母大写。例如,gearRatio and currentGear。如果variable存储了一个常量值(constant value),例如static final int NUM_GEARS = 6;则将每个字母大写,并用下划线分割后续每个单词。按照惯例,下划线字符永远不会在其它任何地方使用。

运算符 operator

未完待续ing

本节描述Java的运算符(operator)。首先是最常用的operator, 然后是不常用的operator。每个讨论包含可编译和运行的代码示例。本节使用你已经看到的示例代码讨论expressions, statements, and blocks。

表达式,语句和块 expressions, statements, blocks

operators 可用来构建expressions,以便于计算值。expressions是statements的核心组成部分;statements可以分组为blocks

流程控制语句 control flow statements

本节讨论Java语言支持的流程控制语句。它涵盖了decisions-making, looping, and branching statements,是你的programs可以有条件的执行特定的代码块。

上一篇:tf.get_variable()和tf.get_variable_scope()非常详细解释!!!!


下一篇:Pipeline的Parameter和Variable,Activity的output)和应用表达式