【Java编程动手学】带你走进Java基础:注释、标识符和关键字

文章目录

    • 一、引言
    • 二、Java中的注释
      • 1、单行注释
      • 2、多行注释
      • 3、文档注释
    • 三、Java中的标识符
    • 四、Java中的关键字
    • 五、总结


一、引言

在Java编程的学习之旅中,有一些基础概念如同建筑的基石,至关重要。今天,Daniel将和大家一起深入探讨Java中的注释、标识符和关键字这三个基础且关键的部分。理解这些概念,不仅能帮助我们编写出更规范、易读的代码,还能让我们在后续的学习和开发中更加得心应手。

二、Java中的注释

注释在Java代码中扮演着重要的角色,它就像是代码的说明书,用于解释代码的功能、逻辑和用途,方便自己和他人阅读和理解代码。Java中主要有三种注释方式:单行注释、多行注释和文档注释。

1、单行注释

单行注释以 // 开头,从 // 开始到本行结束的所有内容都会被编译器忽略。它通常用于对代码的某一行进行简要说明。

示例代码如下:

public class CommentExample {
    public static void main(String[] args) {
        // 这是一个单行注释,用于说明下面这行代码的作用
        int sum = 0; // 定义一个变量sum并初始化为0
        for (int i = 1; i <= 10; i++) {
            sum += i; // 累加i到sum中
        }
        System.out.println("1到10的和是:" + sum); // 输出累加结果
    }
}

在上述代码中,// 后面的内容都是单行注释,对代码的功能和操作进行了简单解释。

2、多行注释

多行注释以 /* 开头,以 */ 结尾,中间的所有内容都会被编译器忽略。多行注释适用于对一段代码或一个功能模块进行详细说明。

示例代码如下:

public class MultiLineCommentExample {
    public static void main(String[] args) {
        /*
         * 这是一个多行注释
         * 下面这段代码的功能是计算1到100的偶数和
         * 首先定义一个变量evenSum用于存储偶数和,初始化为0
         * 然后通过for循环遍历1到100的数字
         * 判断每个数字是否为偶数,如果是则累加到evenSum中
         */
        int evenSum = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) {
                evenSum += i;
            }
        }
        System.out.println("1到100的偶数和是:" + evenSum);
    }
}

可以看到,多行注释可以跨越多行,对复杂的逻辑进行详细阐述。

3、文档注释

文档注释以 /** 开头,以 */ 结尾,它是Java特有的注释方式,主要用于生成API文档。文档注释中的内容可以通过javadoc工具提取出来,生成HTML格式的文档,方便开发者查看和使用。

示例代码如下:

/**
 * 这是一个用于计算阶乘的类
 * @author Daniel
 * @version 1.0
 */
public class FactorialCalculator {
    /**
     * 计算一个整数的阶乘
     * @param n 要计算阶乘的整数
     * @return 返回n的阶乘值
     */
    public static long factorial(int n) {
        long result = 1;
        for (int i = 1; i <= n; i++) {
            result *= i;
        }
        return result;
    }

    public static void main(String[] args) {
        int num = 5;
        long fact = factorial(num);
        System.out.println(num + "的阶乘是:" + fact);
    }
}

在上述代码中,/***/ 之间的内容是文档注释。@author 用于指定作者,@version 用于指定版本,@param 用于描述方法的参数,@return 用于描述方法的返回值。通过javadoc工具对这些注释进行处理,可以生成详细的API文档。

三、Java中的标识符

标识符就是用于给Java中的变量、类、方法等命名的符号。标识符的命名需要遵循一定的规则:

  • 标识符可以由字母、数字、下划线(_)和美元符号($)组成。
  • 标识符必须以字母、下划线或美元符号开头,不能以数字开头。
  • 标识符不能是Java中的关键字。
  • 标识符区分大小写。

下面是一些合法的标识符示例:userName_count$price

而以下是不合法的标识符示例:123name(以数字开头)、class(Java关键字)。

为了提高代码的可读性和可维护性,在命名标识符时,通常遵循一些命名规范:

  • 类名:采用大驼峰命名法,即每个单词的首字母大写,例如 PersonStudentInfo
  • 变量名和方法名:采用小驼峰命名法,即第一个单词首字母小写,后面每个单词首字母大写,例如 userNamecalculateSum
  • 常量名:全部采用大写字母,单词之间用下划线分隔,例如 MAX_VALUEPI

四、Java中的关键字

关键字是Java语言中预先定义好的、具有特殊含义的单词,不能用作标识符。以下是Java中的关键字列表:

关键字 讲解
abstract 用于声明抽象类或抽象方法。抽象类不能被实例化,只能被继承;抽象方法只有声明,没有实现,子类必须重写抽象方法(除非子类也是抽象类)。例如:abstract class Animal { abstract void makeSound(); }Animal 是抽象类,makeSound 是抽象方法。
assert 用于进行断言,用来在程序中设置检查点。当程序运行到断言处时,会验证断言后的表达式是否为真,如果为假则抛出 AssertionError 异常。一般在开发和测试阶段使用,帮助调试程序。例如:int x = 5; assert x == 5;
boolean 用于声明布尔类型变量,其值只能是 truefalse。例如:boolean isJavaFun = true;
break 主要用于 switch 语句和循环语句中。在 switch 语句中,用于终止某个 case 的执行;在循环语句(forwhiledo - while)中,用于跳出当前循环。例如在 for 循环中:for (int i = 0; i < 10; i++) { if (i == 5) { break; } System.out.println(i); },当 i 等于 5 时,循环终止。
byte 用于声明字节类型变量,占用 1 个字节(8 位)的内存空间,取值范围是 -128 到 127。例如:byte b = 10;
case 用于 switch 语句中,与 switch 后的表达式值进行比较,根据不同的值执行相应的代码块。例如:int num = 2; switch (num) { case 1: System.out.println("One"); break; case 2: System.out.println("Two"); break; }
catch 用于捕获异常,与 try 语句配合使用。当 try 代码块中发生异常时,会跳转到与异常类型匹配的 catch 代码块中执行。例如:try { int result = 1 / 0; } catch (ArithmeticException e) { System.out.println("除零错误"); }
char 用于声明字符类型变量,占用 2 个字节的内存空间,用于存储单个字符。例如:char ch = 'A';
class 用于声明一个类,类是Java中面向对象编程的基本单位,用于封装数据和方法。例如:class Person { String name; void sayHello() { System.out.println("Hello"); } }
continue 主要用于循环语句中,用于跳过当前循环中剩余的代码,直接进入下一次循环。例如在 for 循环中:for (int i = 0; i < 10; i++) { if (i % 2 == 0) { continue; } System.out.println(i); },该代码会跳过偶数,只输出奇数。
default switch 语句中,当没有任何 case 匹配时,执行 default 代码块;在注解中,也可以用于指定默认值。例如 switch 语句:int num = 5; switch (num) { case 1: System.out.println("One"); break; default: System.out.println("Other number"); }
do 用于 do - while 循环语句,先执行一次循环体代码,然后再判断条件是否为真,如果为真则继续循环。例如:int i = 0; do { System.out.println(i); i++; } while (i < 5);
double 用于声明双精度浮点数类型变量,占用 8 个字节的内存空间,用于存储带有小数部分的数值。例如:double d = 3.14;
else if 语句配合使用,当 if 后的条件表达式为假时,执行 else 代码块中的内容。例如:int x = 10; if (x > 10) { System.out.println("x大于10"); } else { System.out.println("x不大于10"); }
enum 用于声明枚举类型,枚举类型是一种特殊的类,它限制变量的取值只能在一组预定义的常量中。例如:enum Day { MONDAY, TUESDAY, WEDNESDAY }
extends 用于表示类的继承关系,子类通过 extends 关键字继承父类的属性和方法。例如:class Dog extends Animal { void bark() { System.out.println("汪汪叫"); } }Dog 类继承了 Animal 类。
final 用于修饰类、方法和变量。修饰类时,表示该类不能被继承;修饰方法时,表示该方法不能被重写;修饰变量时,表示该变量为常量,只能被赋值一次。例如:final class FinalClass {}final void finalMethod() {}final int FINAL_VARIABLE = 10;
finally try - catch 语句配合使用,无论是否发生异常,finally 代码块中的代码都会被执行,通常用于释放资源等操作。例如:try { int result = 1 / 0; } catch (ArithmeticException e) { System.out.println("除零错误"); } finally { System.out.println("finally代码块执行"); }
float 用于声明单精度浮点数类型变量,占用 4 个字节的内存空间,用于存储带有小数部分的数值。例如:float f = 3.14f;,注意数值后要加 f 表示是单精度浮点数。
for 用于 for 循环语句,通过初始化、条件判断和迭代三个部分控制循环的执行。例如:for (int i = 0; i < 5; i++) { System.out.println(i); }
if 用于条件判断语句,根据条件表达式的真假决定是否执行相应的代码块。例如:int x = 10; if (x > 5) { System.out.println("x大于5"); }
goto 是Java的保留关键字,目前Java中没有使用 goto 语句,它主要是为了与其他语言保持一定的兼容性。
if(重复展示说明保留情况,实际不重复写,这里为说明) (同上 if 讲解,为完整展示表格结构列出,实际表格中不重复)
implements 用于类实现接口,一个类可以实现多个接口,通过实现接口中的方法来完成接口规定的功能。例如:interface Runnable { void run(); } class MyRunnable implements Runnable { public void run() { System.out.println("Running"); } }
import 用于导入其他包中的类或接口,以便在当前类中使用。例如:import java.util.ArrayList;,这样就可以在当前类中使用 ArrayList 类。
instanceof 用于判断一个对象是否是一个特定类或接口的实例。例如:String str = "Hello"; if (str instanceof String) { System.out.println("str是String类的实例"); }
int 用于声明整型变量,占用 4 个字节的内存空间,取值范围是 -2147483648 到 2147483647。例如:int num = 10;
interface 用于声明接口,接口是一种抽象类型,它只包含抽象方法和常量,用于定义一组规范,类通过实现接口来遵循这些规范。例如:interface Drawable { void draw(); }
long 用于声明长整型变量,占用 8 个字节的内存空间,取值范围更大。例如:long l = 1234567890L;,数值后加 L 表示是长整型。
native 用于修饰方法,表示该方法是用其他语言(如C、C++)实现的本地方法。Java通过JNI(Java Native Interface)调用本地方法。例如:native void nativeMethod();
new 用于创建一个对象的实例。例如:String str = new String("Hello");,通过 new 关键字创建了一个 String 对象。
package 用于声明当前类所在的包,包用于组织和管理类,避免类名冲突。例如:package com.example;
private 访问修饰符,用于修饰类中的成员变量和方法,表示这些成员只能在当前类内部被访问。例如:class MyClass { private int privateVar = 10; private void privateMethod() { System.out.println("私有方法"); } }
protected 访问修饰符,用于修饰类中的成员变量和方法,表示这些成员可以在当前类、子类以及同一个包中的其他类中被访问。例如:class Parent { protected int protectedVar = 20; protected void protectedMethod() { System.out.println("受保护方法"); } } class Child extends Parent { void accessProtected() { System.out.println(protectedVar); protectedMethod(); } }
public 访问修饰符,用于修饰类、成员变量和方法,表示这些成员可以被任何其他类访问。例如:public class PublicClass { public int publicVar = 30; public void publicMethod() { System.out.println("公共方法"); } }
return 用于从方法中返回一个值(有返回值的方法)或者结束方法的执行(无返回值的方法)。例如:int add(int a, int b) { return a + b; }void printHello() { System.out.println("Hello"); return; }
short 用于声明短整型变量,占用 2 个字节的内存空间,取值范围是 -32768 到 32767。例如:short s = 100;
static 用于修饰成员变量和方法,静态成员属于类,而不是类的实例。可以通过类名直接访问静态成员。例如:class StaticExample { static int staticVar = 0; static void staticMethod() { System.out.println("静态方法"); } },可以通过 StaticExample.staticVarStaticExample.staticMethod() 访问。
strictfp 用于修饰类或方法,确保浮点数运算在不同的平台上具有一致的结果。例如:strictfp class StrictFpClass {}strictfp void strictFpMethod() {}
super 在子类中用于引用父类的成员变量、方法和构造函数。例如在子类方法中:class Parent { void parentMethod() { System.out.println("父类方法"); } } class Child extends Parent { void childMethod() { super.parentMethod(); } },通过 super 调用父类方法。
switch 用于多分支选择语句,根据表达式的值选择执行相应的 case 代码块。例如:int num = 2; switch (num) { case 1: System.out.println("One"); break; case 2: System.out.println("Two"); break; }
synchronized 用于修饰方法或代码块,实现线程同步,保证在同一时刻只有一个线程可以访问该方法或代码块,避免多线程并发问题。例如:synchronized void synchronizedMethod() { System.out.println("同步方法"); }Object lock = new Object(); synchronized (lock) { System.out.println("同步代码块"); }
this 在类的方法中用于引用当前对象,可以用于访问当前对象的成员变量和方法,也可以用于调用当前类的其他构造函数。例如:class ThisExample { int x; ThisExample(int x) { this.x = x; } void printX() { System.out.println(this.x); } }
throw 用于抛出一个异常对象,通常在方法中遇到异常情况时使用。例如:void checkAge(int age) { if (age < 0) { throw new IllegalArgumentException("年龄不能为负数"); } }
throws 用于在方法声明中指定该方法可能抛出的异常类型,调用该方法时需要进行异常处理。例如:void readFile() throws IOException { // 读取文件操作 }
transient 用于修饰成员变量,表示该变量不需要被序列化。当对象进行序列化时,被 transient 修饰的变量不会被保存到序列化后的数据中。例如:class TransientExample implements Serializable { transient int transientVar = 10; }
try catchfinally 配合使用,用于捕获和处理异常。try 代码块中放置可能会发生异常的代码。例如:try { int result = 1 / 0; } catch (ArithmeticException e) { System.out.println("除零错误"); } finally { System.out.println("finally代码块执行"); }
void 用于声明方法没有返回值。例如:void printMessage() { System.out.println("Hello"); }
volatile 用于修饰成员变量,保证该变量在多线程环境下的可见性,即当一个线程修改了该变量的值,其他线程能够立即看到修改后的值。例如:class VolatileExample { volatile boolean flag = false; }
while 用于 while 循环语句,只要条件表达式为真,就会一直执行循环体代码。例如:int i = 0; while (i < 5) { System.out.println(i); i++; }

这些关键字在Java语言中都有着特定的功能和用途。例如,public 用于修饰类、方法或变量,表示它们是公开的,可以被其他类访问;class 用于定义一个类;ifelse 用于条件判断语句。

五、总结

今天,Daniel和大家一起学习了Java中的注释、标识符和关键字。注释能够帮助我们提高代码的可读性和可维护性,单行注释、多行注释和文档注释各有其适用场景。标识符的命名需要遵循一定的规则和规范,以确保代码的规范性和易读性。而关键字则是Java语言的核心组成部分,它们具有特殊的含义和功能,不能被用作标识符。

掌握这些基础概念是学好Java编程的重要一步。希望大家在今后的学习和实践中,能够灵活运用这些知识,编写出高质量的Java代码。Daniel也会继续和大家一起探索Java的更多奥秘,敬请期待!

你可能感兴趣的:(#,Java全栈,java,python,开发语言)