Java基础面试:关键字与注释
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 等程序控制语句来实现提前终止循环的功能。
作用不同:
break和continue是控制循环语句的;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
final:final是一个修饰符,用来修饰类、方法和变量。它的作用是限制某些对象或行为的改变。- 修饰变量时,表示该变量为常量,一旦被赋值就不能再修改;
// 如果重新赋值 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:通常与try和catch一起使用,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基础面试总结(一) 1. 面向对象和面向过程的区别 面向过程 面向对象 性能 高于面向对象 类加载的时候需要实例化,比较消耗资源 三易(易维护,易复用,易扩展) 不如面向对象 具有封装,继承, ...
- java标识符,关键字,注释及生成Doc文档
# java语法基础 ## 标识符,关键字与注释 ### 标识符 1.类名,变量名,方法名都称为标识符. 2.命名规则:(1):所有的标识符都应该以字母(AZ,或者az)美元符($)或者下划线(_)开 ...
- Java基础-synchronized关键字的用法(转载)
synchronized--同步 顾名思义是用于同步互斥的作用的. 这里精简的记一下它的使用方法以及意义: 当synchronized修饰 this或者非静态方法或者是一个实例的时候,所同步的锁是加在 ...
- JAVA基础面试汇总
一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java ...
- Java基础——面试、笔试
网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&page=2 参考资料:(java方面的一些面试 ...
- Java基础之关键字,标识符,变量
Java基础 首先,来看一下Java基础知识图解,以下便是在java学习中我们需要学习设计到的一些知识(当然不是很完全). 这些都是接下来在以后的学习中我们会学到的一些知识. 1 关键字 首次先来学习 ...
- Java基础面试知识点总结
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- java基础---->final关键字的使用
这里介绍一些java基础关于final的使用,文字说明部分摘自java语言规范.心甘情愿这四个字,透着一股卑微,但也有藏不住的勇敢. Final关键字的说明 一.关于final变量规范说明 .A fi ...
- java 基础 01 变量和注释、数据类型
1,变量和注释 比如:姓名:xiaoming 年龄:18 1.1变量的基本概念 当需要在程序中记录单个数据内容时,则需要声明一个变量来处理,而变量的本质就是内存中申请一块存储单元用于存储数据内容,由于 ...
- Java基础 面试总结(一)
一.java基础篇-概念 1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网.云计算.智能手机( ...
随机推荐
- Identity – Introduction & Scaffold
主要参考: Introduction to Identity on ASP.NET Core Start by command dotnet new webapp --auth Individual ...
- Spring —— 核心概念
IoC (Inversion of Control) 控制反转 使用对象时,由主动new产生对象转换为由外部提供对象,对象的创建控制权由程序转移至外部,这种思想成为控制反转 Spring技术对IoC思 ...
- 即刻报名 | Flutter Engage China 线上见!
在刚刚过去的 Flutter Engage 活动上,我们正式发布了 Flutter 2: 为任何平台创建美观.快速且可移植应用的能力得以更上一层楼.通过 Flutter 2,开发者可以使用相同的代码库 ...
- 痞子衡嵌入式:为下一代AI边缘处理设备而生 - i.MXRT700
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的新品i.MXRT700. 四年前恩智浦官宣了面向下一代智能穿戴设备的 i.MXRT500 系列,这 ...
- async/await和Grand Central Dispatch代码切换
很多iOS开发开始学习结构化并发时已经用过了很多年Grand Central Dispatch,虽然从思想上二者区别很大,但是利用熟悉的东西去理解新的事物有助于提升学习理解的效率,接下来是这Grand ...
- 一些rand()的测试
rand()生成的伪随机数已经足够我们实用,为了跟好的理解rand()跟seed的关系,做了一些测试! rand()函数种子默认为1,在每一次程序运行中,随机数相同,在一次运行中,可将生成数看做随机 ...
- 仿函数(Functor)是什么?
仿函数(Functor) 仿函数是通过重载()运算符的类或结构体的对象.这样一个对象可以像普通函数一样被调用. 仿函数通常用于需要在对象内部保留状态或多次调用时有特定行为的情况. 特点: 仿函数是一个 ...
- 在C#中使用适配器Adapter模式和扩展方法解决面向的对象设计问题
之前有阵子在业余时间拓展自己的一个游戏框架,结果在实现的过程中发现一个设计问题.这个游戏框架基于MonoGame实现,在MonoGame中,所有的材质渲染(Texture Rendering)都是通过 ...
- iOS使用SourceTree回滚回滚小结
代码回滚,适用于的场景: 1.提交错代码,想放弃刚刚提交的部分:2.代码发生冲突,处理比较麻烦,为了代码安全,直接回滚到之前干净的代码.我个人理解,可以分为本地回滚和远程回滚: 一.本地回滚,回滚自己 ...
- 06 导师不敢和你说的水论文隐藏技巧,顶刊、顶会、水刊的论文读哪个,如何做一个称职的学术裁缝.md
博客配套视频链接: https://www.bilibili.com/video/BV11g41127Zn/?spm_id_from=333.788&vd_source=b1ce52b6eb3 ...