Java基础语法与相应面试技巧

Java基础语法与相应面试技巧

注释


//  单行注释

/* 
 多行注释 
*/

/**
文档注释(Javadoc)
* @param 参数说明
* @return 返回值说明
* @throws 异常说明
*/

面试题

  • 如何生成API文档?
    javadoc -d doc filename.java
  • 文档注释中常见的tag有哪些?
Tag 作用 示例
@param 描述方法参数 @param name 用户名
@return 描述返回值 @return 操作是否成功
@throws / @exception 描述方法可能抛出的异常 @throws IOException 文件读取失败时抛出
@author 标明作者(团队中较少用) @author John
@version 版本信息 @version 1.8.2
@since 标明从哪个版本开始引入 @since JDK 1.8
@deprecated 标记已过时的类/方法(需说明替代方案) @deprecated 请使用 {@link #newMethod()}
@see 生成"另请参见"链接 @see java.util.ArrayList
{@link} 内联方式链接到其他类/方法 使用 {@link #getName()} 方法获取
{@code} 以代码字体显示内容(自动转义特殊符号) {@code List}
{@literal} 原样显示内容(不解释HTML标签) {@literal }
{@value} 显示静态常量值 默认值:{@value MAX_SIZE}

技巧:使用文档注释规范API,提升代码可读性


2. 标识符

命名规则

  • 字母/下划线_/$ 开头
  • 不能是关键字
  • 区分大小写

命名规范

  • 类名:UpperCamelCase(首字母大写且驼峰规则)
  • 方法/变量:lowerCamelCase(首字母小写且驼峰规则)
  • 常量:MAX_VALUE(大写字母和下划线)
  • 包名:全小写(com.example.project)

面试题:判断标识符合法性
_name, $age, 2score(非法)


3. 关键字

常见关键字

class, public, static, void, int, 
if, else, for, while, try, catch, 
final, instanceof, interface, enum

注意
true/false/null 是保留字,不是关键字

面试题gotoconst的作用?

GOTO:在一些编程语言(如C、C++)中,goto 语句用于无条件地跳转到程序中指定的标签位置,可用于实现复杂的跳转逻辑。然而在Java中,虽然 goto 被保留作为关键字,但不能使用。这是因为随意使用 goto 语句会使程序的控制流变得复杂且难以理解和维护,破坏程序的结构化,所以Java摒弃了它的使用,鼓励使用结构化的控制语句(如 if - else、for、while、switch 等)来编写代码,以提高代码的可读性和可维护性。
CONST:在Java中,const 同样是保留字但未被使用。在其他一些语言(如C、C++)里,const 用于定义常量。在Java中,使用 final 关键字来实现定义常量的功能。

例如:

// 使用 final 定义常量
final int MAX_VALUE = 100;

通过 final 关键字修饰的变量一旦被赋值,就不能再重新赋值,从而达到了常量的效果。


4. 数据类型

基本类型(8种)

类型 大小 默认值 范围
byte 1字节 0 -128 ~ 127
short 2字节 0 -32768 ~ 32767
int 4字节 0 -2^31 ~ 2^31-1
long 8字节 0L -2^63 ~ 2^63-1
float 4字节 0.0f IEEE754
double 8字节 0.0d IEEE754
char 2字节 ‘\u0000’ 0 ~ 65535
boolean ~ false true/false

注意:boolean大小JVM实现相关

类型扩展

  1. 自动装箱/拆箱
    Integer i = 10;int j = i;

  2. 大数处理

    BigInteger bigInt = new BigInteger("123456789");
    BigDecimal dec = new BigDecimal("123.456");
    

面试题

  • Integer a = 100; Integer b = 100; 比较结果?
    (true,缓存范围-128~127)
  • 为什么用BigDecimal代替double计算金额?
    在 Java 中,浮点数(如 float 和 double)不能直接比较相等性的主要原因是浮点数的精度问题。由于计算机使用二进制存储浮点数,某些十进制小数无法被精确表示(例如 0.1),导致计算结果存在微小误差。直接比较两个看似相等的浮点数时,可能因误差导致错误的结果。

5. 类型转换

自动转换(从小到大)

int i = 10;
long l = i;  // 自动转

强制转换

double d = 3.14;
int i = (int)d;  // 结果为3(截断)

运算规则

  1. byte/short/char 运算自动提升为int
  2. 表达式中的自动提升(最高类型为准)

面试题

byte b1 = 1, b2 = 2;
byte b3 = b1 + b2;  // 编译错误(需强转)

技巧

  • 避免连续强制转换:(int)(doubleValue)
  • 使用Math.round()进行四舍五入

> **附:高频面试题集锦**
> 1. `long num = 3.14f;` 是否正确?
> 2. `char c = 65;` 和 `char c = 'A';` 是否等价?
> 3. `System.out.println(1/2);` 输出什么?
> 4. `Double.isNaN()` 的应用场景?
> 5. `"Hello" + 123 的结果类型是?`

你可能感兴趣的:(java,青少年编程,开发语言)