跳转至

Java 基础

本节将介绍在 FRC 比赛中会用到的 Java 语言基础知识。由于 C++ 并非主流语言,故暂时不作介绍,欢迎贡献。

本节有部分内容参考 Java 速成 - OI Wiki,致谢!

关于 Java

Java 是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛用于应用开发及机器程序。

安装环境

WPILib VSCode 已经提供了所需的环境,故无需额外安装。

文件结构

一个典型的 FRC Command-Based 程序结构如下所示:

—— /
———— .vscode
———— .wpilib
———— gradle
———— src
—————— main
———————— deploy
———————— java
—————————— frc
———————————— robot
—————————————— commands
———————————————— // some commands here...
—————————————— subsystems
———————————————— // some subsystems here...
—————————————— Constants.java
—————————————— Main.java
—————————————— Robot.java
—————————————— RobotContainer.java
———— vendordeps
———— .gitignore
———— build.gradle
———— gradlew
———— gradle.bat
———— settings.gradle

所有代码理论上都写在 /src 目录中。

基本语法

主函数

class Test {
    public static void main(String[] args) {
        // 程序代码
    }
}

Java 类似 C/C++ 语言,需要一个函数(在面向对象中,称为方法)作为程序执行的入口点。

如上格式是 Java 主函数的固定格式。

一个打包的 Java 程序中可以有很多类似的函数,但是整个程序运行时,只有一个函数会被运行,它被定义在 JarManifest 文件中。这个知识在 FRC 比赛中用不到。

注释

和 C/C++ 一样,// 是单行注释, /* */ 是多行注释。

数据类型

部分数据类型和 C/C++ 名称不太一致,需要注意。这里仅列出常用的部分。

类型名 意义
boolean 布尔
int 整数
float (单精度)浮点数
double (双精度)浮点数
String 字符串
char 字符
null

声明变量

int a = 12;
String str = "Hello World! ";
char ch = 'W';
final double PI = 3.1415926;
String name = null;

final 关键字

final 指该变量只能被赋值一次,不能再改变。

final 与 C/C++ 中的 const 类似。

数组

int[] array = new int[10];

字符串

字符串和字符数组基本相同。

String a = "CNFRC";

char[] stringArray = {'C', 'N', 'F', 'R', 'C'};
String s = new String(stringArray);

包和包的导入

Java 中的类都放在一个个包中,一个包中不能有同名的类,在类的第一行需要说明这个类属于哪个包(除根目录外),如:

package org.firstinspires.javatutor;

创建一个包时(一般 FRC 不会用到),命名规范一般是 所有者的顶级域.二级域.项目名称

不属于同一个包的类需要使用 import 关键字引入。

import java.util.*;

其中,* 是通配符,即引入该包内的所有类。

输入

FRC 不会使用到命令行输入,而是通过特有的方式使用手柄输入。

输出

Java 可以使用格式化输出 printf,也可以使用普通输出 print / println。格式化输出与 C/C++ 相同,不再介绍。

int a = 1;
System.out.printf("%d\n", a);
System.out.print(a); System.out.print('\n');
System.out.println(a);

流程控制

Java 的流程控制语句和 C/C++ 几乎完全相同,不再介绍。

  • if
  • if...else
  • if...else if...else
  • switch...case
  • for
  • while
  • do...while

注意事项

类名和文件名相同

对于 Add.java

class Add {
    public static void main(String[] args) {
        // ...
    }
}

命名规范

类名

Java 的类名必须由大写字母开头,而若跟有多个单词,每个单词的首字母大写,其他字母全部小写。

方法名

Java 的方法必须小写字母开头,而若跟有多个单词,每个单词首字母大写,其他全部小写。

常量

一般而言,常量采用全部大写的形式。

变量名

变量名使用小写开头。

包名所有字母必须小写。