坑!!!

StringBuilder的equals方法

当我们使用StringBuilder创建对象时,会在内存中开辟一个新的地址用于存放对象内容。但即使StringBuilder对象中存放的内容与其它字符串的内容相等时,使用equals方法来判断也是返回的false,例:

    public boolean isPalindrome(int x) {
        StringBuilder str = new StringBuilder(String.valueOf(x));
        StringBuilder copyStr = new StringBuilder(str);
        if (copyStr.equals(str.reverse())) {
            return true;
        } else {
            return false;
        }
    }

原因:StringBuilder并没有重写equals方法,源代码如下:

    public boolean equals(Object obj) {
        return (this == obj);
    }

Arrays.asList方法得到的List不能进行add remove clear操作

    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1, 2, 3);
        //以下三个操作都是非法的
        list.add(1);
        list.remove(1);
        list.clear();
    }

执行结果:

Exception in thread "main" java.lang.UnsupportedOperationException

原因:asList方法得到对的List是只读的。决解方式如下:

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));

 

<think>嗯,用户这次是在追问Excel中#REF!错误的详细含义。其实之前我已经解释过这个概念,但用户可能想更系统地理解,或是遇到了具体问题需要解决。 用户提供的文档引用很有意思: - 引用[1]提到"引用了无效单元格或单元格区域",还举了个宏操作删除单元格的例子 - 引用[2]的表格把#REF!和其他错误对比得很清楚 - 引用[3]则给出了复制粘贴数值的解决方案 用户应该是个Excel中级使用者,可能遇到了公式报错但不确定根源。ta特意强调"不是真正的需求",说明更关注核心概念而非具体案例。不过从ta引用复制粘贴的解决方案来看,可能实际遇到了删除数据导致报错的情况。 需要特别注意两: 1)补充引用范围的数学表达式时要用$A$1:$C$10这样的格式 2)要强调结构化引用的预防作用,因为用户引用的资料里没提这 突然想到个常见陷阱:很多人以为#REF!只在删除单元格时出现,其实移动单元格也会触发。这个必须加在回答里,用户引用的材料里都没提到这。 修复方案要分层次说明:简单情况手动修复,复杂情况用查找替换。最后那个"幽灵引用"的场景特别重要,很多用户反复检查都找不到错误源就是这个原因。 相关问题设计得很实用: - 函数嵌套问题是高阶用户常踩的 - INDIRECT的引用方式很少人注意兼容性 - 表格转换关系型数据库是专业应用场景 </think>以下是关于Excel中`#REF!`错误(引用无效单元格)的详细解析: ### 一、核心定义 `#REF!`错误表示公式引用了**无效或不存在的单元格区域**。触发条件包括: 1. **物理删除** 删除公式引用的行/列/工作表。 *示例:* ```excel =SUM(Sheet2!$A$1:$A$10) // 若删除Sheet2,公式变为=SUM(#REF!) ``` 2. **引用越界** 行号超过$1,048,576$行或列号超过$16,384$列(XFD列)[^2][^3]。 *动态引用示例:* ```excel =OFFSET(A1, 1048576, 0) // 返回#REF! ``` 3. **连锁错误传递** 依赖链中的前置单元格失效引发连锁错误: ``` A1: =B1+5 → 删除B列 → A1: =#REF!+5 → 结果#REF! ``` --- ### 二、典型场景与修复方案 | **场景** | **修复方法** | **示例修正** | |-------------------------|-------------------------------------------|----------------------------------| | 删除行/列 | 撤销删除 或 重新选择有效区域 | 将`=SUM(D:E)`改为`=SUM(C:F)` | | 工作表重命名/删除 | 修正工作表名称 或 恢复被删工作表 | `=Sheet2!A1` → `=销售数据!A1` | | 动态函数越界 | 限制引用范围在$[1,1048576]$行内 | `=OFFSET(A1,1000000,0)`→调小行数 | | 复制公式导致相对引用失效| 改用绝对引用($A$1)或结构化引用 | `=A1*2` → `=$A$1*2` | --- ### 三、高阶预防技巧 1. **结构化引用**(避免地址失效) ```excel =SUM(Table1[销售额]) // 即使删除行列,表名仍有效 ``` 2. **错误屏蔽函数** ```excel =IFERROR(VLOOKUP(A1,Data!B:C,2,0), "未找到") ``` 3. **安全删除数据流程**[^3]: ```mermaid graph LR A[复制目标区域] --> B[选择性粘贴为值] B --> C[删除原始数据] C --> D[公式不受影响] ``` > ️ 注意:移动单元格也可能导致`#REF!`,因公式引用位置未同步更新。使用`查找->替换`批量更新引用地址是高效解决方案。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值