面试笔记01-Java基础(一):Java语言基础

一、Java语言简介

Java是面向对象的高级编程语言。其特殊性显著:

  • 具备平台无关性,代码编译成字节码,依托JVM可跨平台运行;
  • 自动内存管理,垃圾回收机制让开发者无需手动释放内存;
  • 支持多线程,能高效处理并发任务;
  • 有丰富类库,涵盖网络、文件等多领域,提升开发效率;
  • 注重安全,有字节码验证、安全管理器等保障;
  • 支持分布式计算,像RMI可实现远程方法调用,适应大规模系统开发。

二、数据类型

Java 数据类型分两类:

基本数据类型(8种):

  • 整数型:byte、short、int、long
  • 浮点型:float、double
  • 字符型:char
  • 布尔型:boolean

引用数据类型:

  • 类(class):如 String 等
  • 接口(interface)
  • 数组(array)

基本数据类型存储值,占用固定内存;
引用数据类型存储对象引用,可表示复杂数据结构。

三、变量与常量

3.1 什么是变量和常量,它们的区别是什么?

答:
变量是程序中可以改变值的存储单元,用于存储数据,在程序执行过程中其值可以被修改。
常量是在程序运行过程中值不能被改变的量,使用 final 关键字修饰。
区别在于变量值可变,常量值不可变。

3.2 Java标识符的命名规则

答:
(1) 基本命名规则:
这些规则是强制性的,违反规则会导致编译错误:

  • 组成元素: 标识符可以由字母(包含英文字母大小写、中文、日文等)、数字、下划线_、以及美元符号 $ 组成。不过,数字不能作为标识符的开头。
    例如,myVariable、_count、$price 都是合法的,但 123abc 不合法。
  • 区分大小写: Java 是大小写敏感的语言,所以 myVariable 和 MyVariable 是两个不同的标识符。
  • 不能是关键字或保留字: 不能使用 Java 的关键字(如 class、public、if 等)和保留字(如 goto、const 等)作为标识符。

(2) 常见命名规范(非强制,但推荐遵循)
这些规范有助于提高代码的可读性和可维护性:

  • 类名:大驼峰命名法:
    每个单词的首字母大写,其余字母小写。
    例如,Person、StudentInfo、DataProcessor 等。
    这种命名方式能清晰反映类的功能或代表的事物。
  • 变量名:小驼峰命名法、见名知意
    小驼峰命名法:第一个单词首字母小写,后续每个单词首字母大写。
    例如,age、studentName、totalAmount 等。
    这样命名能直观体现变量的用途。
    见名知意:变量名应具有描述性,让人一看就明白该变量存储的是什么数据。
    比如,用 studentCount 表示学生数量,而不是使用无意义的 a、b 等。
  • 方法名:小驼峰命名法、动词开头
    小驼峰命名法:和变量名类似,第一个单词首字母小写,后续每个单词首字母大写。
    例如,getAge()、calculateTotal()、printInfo() 等。
    动词开头:方法通常表示一个动作,所以方法名一般以动词开头,清晰表达该方法的功能。
  • 常量名:全部大写
    单词之间用下划线 _ 分隔。
    例如,MAX_VALUE、PI、DEFAULT_TIMEOUT 等。
    这样能明显区分常量和其他变量。
  • 包名:全小写
    通常采用域名反转的形式,以保证包名的唯一性。
    例如,一个公司的域名是 example.com,其包名可能是 com.example.project 。

四、运算符

4.1 逻辑与(&&)和按位与(&)有什么区别?
答:
逻辑与(&&)是短路运算符,当第一个操作数为 false 时,不会再计算第二个操作数。
按位与(&)会对两个操作数的每一位进行与运算,无论第一个操作数结果如何,都会计算第二个操作数。

4.2 逻辑或(||)和按位或(|)有什么区别?
答:
逻辑或(||)是短路运算符,当第一个操作数为 true 时,不会再计算第二个操作数。
按位或(|)会对两个操作数的每一位进行或运算,无论第一个操作数结果如何,都会计算第二个操作数。

4.3 请简要说明 i++ 和 ++i 的区别。
答:
i++ 是后置自增运算符,先返回 i 的当前值,然后再将 i 的值加 1;
++i 是前置自增运算符,先将 i 的值加 1,然后再返回 i 增加后的值。
比如:

int a = 5;
int b = 3;
int c = a++ + b;
// 此时a=6,b=3,c=8

a = 5;
b = 3;
int d = ++a + b;
// 此时a=6,b=3,d=9

五、循环语句

5.1 题目 1:for、while 和 do-while 循环的区别是什么?
答:

  • 执行顺序:
    • for 和 while 循环先判断条件,条件为真才执行循环体;
    • do-while 循环先执行一次循环体,再判断条件,所以 do-while 循环至少会执行一次循环体。
  • 适用场景:
    • for 循环适用于已知循环次数的场景;
    • while 循环适用于循环次数未知,仅根据条件判断是否继续循环的场景;
    • do-while 循环适用于需要先执行一次操作,再根据条件决定是否继续循环的场景。

5.2 在 循环中使用 breakcontinue 语句有什么作用?
答:

  • break 语句用于终止整个循环,跳出循环体执行循环之后的代码。
    例如在一个查找特定元素的 for 循环中,找到元素后使用 break 结束循环。
    注意:如果是在嵌套循环,那么只能跳出当前所在的循环体,无法一次性跳出多层循环体
  • continue 语句用于跳过本次循环的剩余部分,直接开始下一次循环。
    例如在统计偶数和的循环中,遇到奇数时使用 continue 跳过后续求和代码,继续下一次循环。

5.3 如何使用嵌套循环打印一个九九乘法表?
答:
可以使用两层 for 循环来实现,外层循环控制行数,内层循环控制每行的列数。
示例代码如下:

for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.print(j + " * " + i + " = " + (i * j) + "\t");
    }
    System.out.println();
}

六、流程控制语句

6.1 简述 Java 中 if – else、switch 语句的使用场景及区别
答:

  • if – else 语句适用于条件判断情况较为复杂,条件表达式为布尔类型的场景,可处理范围性的条件判断。
    如判断成绩等级(0 – 59 为不及格等)。
  • switch 语句适用于条件为固定离散值的场景。
    如根据星期几执行不同操作。
  • 区别在于 if – else 可处理更灵活的条件,switch 只能对基本数据类型(如 byte、short、int、char)、枚举类型和 String 类型进行等值判断。

6.2 分析以下 for 循环代码的执行结果,并解释执行流程

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue;
    }
    System.out.println(i);
}

答: 执行结果为输出 0、1、2、4。

七、数组

7.1 如何声明、创建和初始化一个 Java 数组?
答:
声明数组有两种方式,以一维数组为例:

  • 数据类型[] 数组名,如 int[] arr
  • 数据类型 数组名[],如 int arr[]

创建数组使用 new 关键字。
arr = new int[5];,表示创建一个长度为 5 的 int 型数组。

初始化数组有静态和动态两种方式。

  • 静态初始化在声明时直接赋值,如 int[] arr = {1, 2, 3, 4, 5};
  • 动态初始化先创建数组,再为元素赋值,如 int[] arr = new int[5]; arr[0] = 1;

7.2 如何遍历一个 Java 数组?请列举至少两种方式
答:
普通 for 循环: 通过数组的索引访问元素,示例代码如下:

int[] arr = {1, 2, 3};
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

增强 for 循环: 适用于只需要顺序访问数组元素的场景,示例代码如下:

int[] arr = {1, 2, 3};
for (int num : arr) {
    System.out.println(num);
}

7.3 Java 中数组作为方法参数和返回值时,传递的是什么?
答:
Java 中数组作为方法参数和返回值时,传递的是数组的引用,而不是数组本身。
这意味着在方法中对数组元素的修改会影响到原始数组。

版权声明:本文《面试笔记01-Java基础(一):Java语言基础》是由陶其原创撰写,首发于陶其的个人博客
转载声明:如需转载本文,请务必在转载处保留原文链接:https://www.tqazy.com/?p=1237,并明确注明文章来源。
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇