首页 > 编程语言 >Java基础面试:关键字与注释

Java基础面试:关键字与注释

时间:2024-11-21 11:58:59浏览次数:1  
标签:Java 面试 int public 注释 关键字 循环 final

Java 中的关键字

什么是关键字

Java 关键字是 Java 语言中预先定义好的、具有特殊含义的标识符。这些标识符在程序中有固定的用途,不能用作变量名、方法名或类名。Java 中共有 53 个特殊标识符,其中包括 48 个关键字,2 个保留字,外加 3 个特殊直接量。

关键字分类及说明

分类 关键字
权限修饰符 private, protected, public
类、对象和
变量修饰符
abstract, class, extends, final, implements, interface, native, new, static, strictfp, synchronized, transient, void, volatile, enum
程序控制 break, continue, return, do, while, if, else, for, instanceof, switch, case, default, assert
异常处理 try, catch, throw, throws, finally
包相关 import, package
基本类型 boolean, byte, char, double, float, int, long, short
变量引用 super, this
保留字 goto, const
直接量 true, false, null

关键字相关面试题

break、continue 和 return 的区别

在编程语言的循环结构里,通常情况下,当预设的循环条件不再成立或已达到指定的循环次数时,循环将按预期自然停止。然而,在实际开发过程中,我们可能会遇到需要根据特定情况即时退出循环的需求,这时就需要 break, continue, return 等程序控制语句来实现提前终止循环的功能。

作用不同:

  • breakcontinue 是控制循环语句的;
  • return 是用于结束方法的。

用法不同:

  • break:用于立即退出当前循环或 switch 语句;
  • continue:用于跳过当前循环的剩余部分,继续执行下一次循环;
  • return:如果方法有返回值类型,从方法中返回一个特定值作为此方法的返回值;如果方法没有返回值类型,使用 return 结束方法的执行。

用法示例

public class Keyword {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            if (i == 2) {
                continue;  // 跳过i=2的情况
            }
            if (i == 3) {
                break;  // 当i=3时,跳出循环
            }
            System.out.println("i = " + i);
        }

        int result = divide(10, 10);
        System.out.println("result = " + result);
        divide(0);
        divide(1);
    }

    public static int divide(int a, int b) {
        return a / b;
    }

    public static void divide(int b) {
        if (b == 0) {
            System.out.println("除数为0,提前return。");
            return;
        }
        System.out.println("方法正常执行啦!");
    }
}

如何跳出多层嵌套循环

如上所述,使用 break 可以立即退出当前循环,那么当多层循环嵌套时,如何退出外层循环呢?在 Java 中,可以为循环结构语句添加标签,使用标签和 break 语句结合来跳出多重嵌套循环。假设我们有一个双重嵌套的 for 循环,我们需要在满足某个条件时跳出所有循环。使用示例如下:

public class NestedLoop {
    public static void main(String[] args) {
        outer: // 为外层循环添加标签
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (i * j > 50) {
                    System.out.println("Breaking out of nested loops at i=" + i + ", j=" + j);
                    break outer; // 跳出外层循环
                }
                System.out.println("i=" + i + ", j=" + j);
            }
        }
        System.out.println("Loops completed");
    }
}

final 与 finally

  • finalfinal 是一个修饰符,用来修饰类、方法和变量。它的作用是限制某些对象或行为的改变。
    • 修饰变量时,表示该变量为常量,一旦被赋值就不能再修改;
    // 如果重新赋值 IDE 会提示 Cannot assign a value to final variable 'MAX_VALUE'
    public static final int MAX_VALUE = 100;
    
    • 修饰方法时,表示该方法不能被子类重写;
    public class FinalClass {
      public final void finalMethod() {}
    }
    class SubClass extends FinalClass {
      // IDE 提示不能重写final方法 'finalMethod()' cannot override 'finalMethod()'; overridden method is final
      public void finalMethod() {}
    }
    
    • 修饰类时,表示该类不能被继承。
    public final class FinalClass {}
    // Cannot inherit from final class
    class SubClass extends FinalClass {}
    
  • finally:通常与 trycatch 一起使用,finally 块中的代码无论是否发生异常都会被执行。这在需要确保某些资源(例如文件、网络连接等)被正确释放时非常有用。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ReadFile {
    public static void main(String[] args) {
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("hello.txt"));
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            // 处理可能出现的IO异常
            e.printStackTrace();
        } finally {
            // 在finally块中关闭资源,避免内存泄漏或其它问题
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {

                }
            }
        }
    }
}

Java 中的注释

好的代码应该尽量自解释,意味着代码本身应该具有足够的清晰度和结构(比如规范的命名),使得其意图和功能能够通过代码本身被理解,而不需要额外的注释或文档来解释,这是编程中的一个理想状态。实际当中,适当的注释能够增强代码的可读性和可维护性。在使用注释时,我们应该注意适度原则:不要过度注释,而是尽量通过规范和美化代码来减少不必要的注释。同时,充分利用文档注释来生成详细的开发文档,提高代码的可读性和可维护性。

注释的三种形式

  • 单行注释:简洁明了的解释,以 // 开头,直到行尾。
  • 多行注释:深入的解释与说明,以 /* 开头,以 */ 结尾。
  • 文档注释:构建开发文档的关键,以 /** 开头,以 */ 结尾,用于生成 API 文档。

好的注释应该清晰、简洁且有意义。它们应该解释代码的目的、逻辑和实现细节,而不是重复代码本身的内容。





【Java驿站】持续给大家更新
扫描下方二维码
关注【Java驿站】公众号

标签:Java,面试,int,public,注释,关键字,循环,final
From: https://www.cnblogs.com/johnnysblog/p/18560332

相关文章

  • 小白如何进阶 Java 高级工程师
    一、小白进阶之路开启在当今数字化时代,Java作为一种广泛应用的编程语言,掌握它对于个人职业发展至关重要。从小白进阶为Java高级工程师不仅意味着薪资的提升,更是个人技术实力和职业价值的体现。然而,这条进阶之路充满挑战。首先,Java语言本身具有一定的复杂性。它涵盖了众......
  • 【淘汰9成NLP面试者的高频面题】BPE 分词器是如何训练的?
    **【淘汰9成NLP面试者的高频面题】BPE分词器是如何训练的?**︎重要性:★★此题主要是考察面试者对分词的理解,一个好的分词器不仅能够降低词表的大小,减少OOV的出现,而且还能引入额外的先验知识,降低模型的学习难度。这是我常用的一个面试题。看似简单的基础题,但在面试中能准确回答......
  • Java中常用的线程安全单例模式实现
    在Java中,实现线程安全的单例模式有多种方式。以下是几种常用的线程安全单例模式实现:1.饿汉式(线程安全,类加载时初始化)特点:简单且线程安全,但如果实例过于占用资源且程序可能不使用它,会造成内存浪费。publicclassSingleton{privatestaticfinalSingletonINSTANCE......
  • 阿里面试:亿级 redis 排行榜,如何设计?
    本文原文链接文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完......
  • JavaApi---第一节
    JavaApi高级编程JavaApi什么是JavaApi?JavaApi是一组预先定义好的类和接口,帮助开发者快速开发程序JavaApi就是学会如何使用别人编写的类和接口Api应用程序的接口函数与类的集合实际就是别人写好的类Java中常用的包Java.lang:基础语言包java.util:......
  • java工具类static静态方法读取yml配置
    当我们需要在工具类中获取yml配置的时候,由于变量是staic导致获取不到yml配置因为spring加载静态方法比IOC早,所以不能直接使用@Value注解读取yml配置,读取结果是null。@ComponentpublicclassTestUtil{//使用@Value注解读取yml配置的数据@Value("${test.url}")......
  • 基于Java+SpringBoot的影院订票系统
    关注底部领取源码源码编号:S346源码名称:基于SpringBoot的影院订票系统用户类型:双角色,用户、管理员主要技术:Java、Vue、ElementUl、SpringBoot运行环境:Windows/Mac、JDK1.8及以上运行工具:IDEA/Eclipse数 据 库:MySQL5.7及以上版本数据库表数量:11张表是否有毕业论文......
  • 基于Java+SpringBoot的影院订票系统
    关注底部领取源码源码编号:S346源码名称:基于SpringBoot的影院订票系统用户类型:双角色,用户、管理员主要技术:Java、Vue、ElementUl、SpringBoot运行环境:Windows/Mac、JDK1.8及以上运行工具:IDEA/Eclipse数 据 库:MySQL5.7及以上版本数据库表数量:11张表是否有毕业论文......
  • 前端面试经验之手写节流
    思路:    第一步:直接封装方法。接收2个参数(fn:执行函数,time:设置默认执行时间)    第二步:声明定时器变量    第三步:return函数,函数内部里假设有定时器就return。没定时器就给定时器赋值延迟定时器,时间为 time    第四步:延迟定时器函数里......
  • 【JavaSE】【网络编程】UDP数据报套接字编程
    目录一、网络编程简介二、Socket套接字三、TCP/UDP简介3.1有连接vs无连接3.2可靠传输vs不可靠传输3.3面向字节流vs面向数据报3.4双向工vs单行工四、UDP数据报套接字编程4.1API介绍4.1.1DatagramSocket类4.1.1.1构造方法4.1.1.2主要方法4.1.2DatagramP......