-
Java可变参数是语法糖,编译后为数组,但必须是方法最后一个参数且唯一;不能与同名数组方法重载;调用时字面量会生成临时数组,传入数组则直接复用引用。
-
ClassNotFoundException和NoSuchMethodException是Java反射中常见异常,前者因类路径错误或类名拼写错误导致,需检查全限定名和类路径;后者因方法名或参数类型不匹配引发,应确保方法签名正确并使用getDeclaredMethod访问私有方法。通过try-catch分别捕获并输出详细信息,可提升程序稳定性与调试效率。
-
本文详解如何在Android中通过IntentFilter正确接收其他应用分享的URL,并自动填充到EditText中,重点解决因intent-filter配置错误导致的Activity无法启动或数据无法获取的问题。
-
位运算改大小写更快,因ASCII中大小写字母差值恒为32(即1<<5),用c^32可直接翻转第6位,无需函数调用开销。
-
选对Java集合类可提升效率与可读性;关键依据是否需要顺序、排序及线程安全。ArrayList适合随机访问和尾部添加,LinkedList仅在中间高频增删且不依赖索引时考虑;HashMap用于无序快速存取,TreeMap用于按键排序,LinkedHashMap保持插入或访问顺序;HashSet最轻量去重,LinkedHashSet保插入序,TreeSet自动排序;并发场景优先ConcurrentHashMap、CopyOnWriteArrayList等JUC集合,避免Vector/Hashtable。
-
SLF4J的error()方法默认不打印堆栈,必须将Throwable作为最后一个参数传入,否则异常被格式化为字符串而丢失堆栈;同时需确保仅绑定logback-classic,且encoder配置%ex以输出完整堆栈。
-
首先创建ServerSocket绑定端口8080,通过accept()接收客户端连接,使用输入输出流进行通信,循环处理多个客户端请求。
-
SocketTimeoutException主要由连接或读取超时引发,需通过try-catch捕获并区分处理;结合重试机制与合理设置超时时间可提升网络通信稳定性与用户体验。
-
合理配置JVM参数、选择适合的垃圾回收器、控制线程与连接资源、启用监控诊断是保障Java应用稳定运行的关键。1.设置-Xms和-Xmx相等(如4g)以减少堆调整开销;2.避免堆过大,超8GB考虑G1或ZGC;3.限制元空间至256m防止溢出;4.调整-Xss256k降低线程内存占用;5.吞吐场景用ParallelGC,低延迟选G1GC,极致低延迟用ZGC;6.开启GC日志便于分析;7.使用线程池和连接池控制资源;8.防止死锁与阻塞,设置超时与非阻塞锁;9.监控线程数变化;10.启用JMX、APM工具实现可
-
next()和nextInt()不消费换行符,导致后续nextLine()读到空字符串;应加scanner.nextLine()清理或统一用nextLine()转换;nextInt()遇非数字抛异常且卡住,需hasNextInt()预判或捕获后next()清除;next()读单词,nextLine()读整行;Scanner关闭后不可恢复,建议全局单例。
-
==比较内存地址,equals()比较内容。String等类重写equals()后可比较逻辑相等性,自定义类需重写equals()和hashCode(),避免null调用,包装类型慎用==。
-
IllegalArgumentException应在参数不合法时抛出,如数值越界、字符串为空等;通过try-catch捕获并处理,结合前置校验、默认值回退、用户提示和日志记录,提升系统健壮性。
-
Date构造器年份参数是距1900年的偏移量,如newDate(2024,0,1)实际为2924年;月份从0开始;该构造器已弃用,应改用LocalDateTime或Calendar;SimpleDateFormat非线程安全;Calendar.DAY_OF_WEEK与日常认知不一致,建议用LocalDateTime.getDayOfWeek();set()惰性设置,add()立即计算;时区易出错,推荐用toInstant()或Instant过渡。
-
怎么用Thread.currentThread().getStackTrace()拿到当前方法名Java没有像Python的inspect.currentframe().f_code.co_name那样直白的API,最常用、最轻量的方式就是靠getStackTrace()手动解析堆栈数组。它返回StackTraceElement[],索引越小越靠近当前调用点。关键在于:你调用它的那一行,本身会出现在堆栈第2或第3层(取决于是否在静态工具方法里封装),不是第0层——第0
-
MetaspaceOOM不是堆内存问题,因为Metaspace使用本地内存、不受-Xmx控制,其OOM主因是动态代理类等元数据堆积且ClassLoader未卸载。