java 面试题分析

简介: 持续更新 . . .

题: 定义两个 Integer 对象传递给一个方法, 方法执行后两个 Integer 的值需要互相转换

public static void practise(MyConsumer<Integer> consumer) {
    Integer value1 = 1;
    Integer value2 = 2;
    System.out.println("start: value1=" + value1 + ", value2=" + value2);
    consumer.accept(value1, value2);
    System.out.println("end: value1=" + value1 + ", value2=" + value2);
}
@FunctionalInterface
public interface MyConsumer<T> {
    void accept (T value1, T value2);
}

编程方式一: 传值与传引用的区别

practise((value1, value2) -> {
    Integer temp = value1;
    value1 = value2;
    value2 = temp;
    return;
});
输入结果:
    start: value1=1, value2=2
    end: value1=1, value2=2

编程方式二: Integer 在 -127 ~ 128 之间的缓存

practise((value1, value2) -> {
    try {
        Field declaredField = Integer.class.getDeclaredField("value");
        declaredField.setAccessible(true);

        Integer intValue = value1.intValue();
        declaredField.set(value1, value2);
        declaredField.set(value2, intValue);
    } catch (Exception e) {}
    return;
});
输出结果: 
    start: value1=1, value2=2
    end: value1=2, value2=2

integer

编程方式三: 清空缓存

practise((value1, value2) -> {
    try {
        Field declaredField = Integer.class.getDeclaredField("value");
        declaredField.setAccessible(true);

        Integer intValue = new Integer(value1.intValue());
        declaredField.set(value1, value2);
        declaredField.set(value2, intValue);
    } catch (Exception e) {}
    return;
});
输出结果: 
    start: value1=1, value2=2
    end: value1=2, value2=1
目录
相关文章
|
8天前
|
存储 Java
【编程基础知识】 分析学生成绩:用Java二维数组存储与输出
本文介绍如何使用Java二维数组存储和处理多个学生的各科成绩,包括成绩的输入、存储及格式化输出,适合初学者实践Java基础知识。
37 1
|
9天前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
26 1
Java面试题之Java集合面试题 50道(带答案)
|
5天前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
19 3
|
8天前
|
Java
让星星⭐月亮告诉你,Java synchronized(*.class) synchronized 方法 synchronized(this)分析
本文通过Java代码示例,介绍了`synchronized`关键字在类和实例方法上的使用。总结了三种情况:1) 类级别的锁,多个实例对象在同一时刻只能有一个获取锁;2) 实例方法级别的锁,多个实例对象可以同时执行;3) 同一实例对象的多个线程,同一时刻只能有一个线程执行同步方法。
9 1
|
8天前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
21 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
9天前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
19 0
Java面试题之cpu占用率100%,进行定位和解决
|
11天前
|
Java
如何从Java字节码角度分析问题|8月更文挑战
如何从Java字节码角度分析问题|8月更文挑战
|
13天前
|
存储 安全 Java
java基础面试题
java基础面试题
19 2
|
13天前
|
缓存 NoSQL Java
Java中redis面试题
Java中redis面试题
25 1
|
14天前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
35 2