-
Java数组是引用类型,声明需明确元素类型和维数,推荐写法为int[]array;初始化分静态(如int[]arr={1,2,3})和动态(如int[]arr=newint[5])两种;访问越界抛ArrayIndexOutOfBoundsException。
-
单字节8位可存8个独立开关状态,关键在于用左移生成唯一标志位(如1<<i),通过&读、|=置、&=~清、^=切,严格边界检查确保安全高效。
-
多线程并行计算的核心是精准拆解瓶颈环节而非盲目增线程,需依任务类型选模型(CPU密集型用多进程/OpenMP,I/O型用线程池),隔离变量防伪共享,合理设线程数与数据粒度,并加固内存对齐、结果校验和降级策略。
-
在Java中实现线程同步的目的是确保多线程环境下共享资源的并发访问安全,避免竞态条件、数据不一致等问题。1.synchronized关键字适用于简单同步场景,通过锁定对象或类实现方法或代码块的同步,但其锁不可中断且粒度较粗;2.volatile关键字保证变量的可见性,适用于状态标志等无需原子性的场景,但不能保证复合操作的原子性;3.java.util.concurrent.locks包(如ReentrantLock)提供更灵活的锁机制,支持尝试获取锁、可中断锁、公平锁等高级特性,适用于需要细粒度控制的复杂
-
Java类设计核心是将现实问题抽象为“概念+属性+行为”的模型,强调从问题域出发识别实体与职责边界,通过封装、组合优先于继承、访问控制等原则构建高内聚低耦合的类结构。
-
JavaMap接口核心解决通过唯一键快速定位值的问题,依赖equals()和hashCode()契约,需按场景选用HashMap、TreeMap或ConcurrentHashMap等实现类。
-
Condition是Lock配套的条件等待接口,支持多条件分组唤醒;而synchronized仅有一个隐式等待队列。它需通过lock.newCondition()获取,await()/signal()必须在lock()/unlock()内调用,且须用while循环检查条件以防虚假唤醒。
-
JDK动态代理通过接口+反射+InvocationHandler统一实现权限校验与事务管理,要求目标类必须实现接口;invoke方法中按序执行权限检查、事务开启、业务调用、提交/回滚;支持注解驱动的条件增强。
-
String.intern()不适合作为锁对象,因其锁范围失控、内存泄漏风险高、性能不可靠且语义错位;推荐用ConcurrentHashMap+synchronized、StampedLock或幂等设计替代。
-
MessageFormat.format()的核心价值是用标准化占位符替代字符串拼接,需严格使用{0}等数字索引、成对单引号转义、预编译实例、参数数量匹配。
-
局部变量是定义在方法、构造器或代码块内的变量,作用域限于声明处到对应右大括号,不可用static等修饰,无默认值须显式初始化,每次调用重新创建并自动销毁。
-
CountDownLatch初始化时count值错误会导致await永久阻塞;必须确保count等于实际countDown调用次数,避免遗漏异常路径或线程池中调用时机错位,且不可重用。
-
关键在选对方法、控住精度、适配场景:金融用DecimalFormat("¤#,##0.00"),统计用"#,##0",Excel需设单元格数字格式,前端优先toLocaleString("en-US");须先安全转换再格式化,显式控制小数位、符号位置与负号规范,注意Locale、性能及前后端职责分离。
-
ArrayList适合随机访问但插入删除慢,底层为动态数组,get/set为O(1),add/remove中间位置需整体拷贝;LinkedList适合头尾增删但随机访问为O(n);Vector和Stack已过时;CopyOnWriteArrayList适用于读多写少场景,ArrayDeque性能优于LinkedList。
-
IllegalStateException比IllegalArgumentException更合适,因为前者精准表达“对象当前状态不支持该操作”,如Scanner未调用hasNext()就调用next();后者易误导调用者检查参数而非对象生命周期。