java教程技术文章
-
CharBuffer是字符数据容器,负责内存操作;Charset是编解码规则定义者。二者分工明确、配合使用:CharBuffer管理UTF-16字符序列,依赖position/limit/capacity控制读写;Charset负责byte与char间转换,不可变且线程安全。410 收藏 -
常量池是.class文件中存储字面量和符号引用的核心结构,包括字符串、数字、类/方法/字段名及描述符等,均以CONSTANT_Utf8_info等形式存放,指令通过索引引用,实现空间节省、动态链接与JVM验证优化。168 收藏 -
FileInputStream的read()方法返回-1表示已读到文件末尾,属正常行为;需用while((b=fis.read())!=-1)正确判断,不可误判为错误。156 收藏 -
静态方法不能直接访问非静态成员变量,根本原因是静态成员属于类、存在于方法区且类加载时即初始化,而非静态成员属于对象、存在于堆中且仅在实例化后才存在;静态方法无this引用,无法确定操作哪个对象的成员。194 收藏 -
在Java方法中引入临时变量(如User2temp=um.userList[identifier])主要为提升代码可读性、可维护性与健壮性:避免重复访问集合、便于后续重构、并可通过语义化命名增强意图表达。431 收藏 -
String不可变而char[]可变:String实例创建后内容无法修改,每次操作生成新对象;char[]元素可直接修改,适合频繁字符操作。389 收藏 -
corePoolSize和maximumPoolSize应依任务类型设定:IO密集型用公式计算,CPU密集型≈CPU核数;maximumPoolSize仅在有界队列下有效,LinkedBlockingQueue默认无界致其失效;keepAliveTime建议60秒,过短增调度压力,过长占资源;拒绝策略应自定义日志告警而非直接使用JDK默认策略。221 收藏 -
Java中数组的length是JVM注入的publicfinal字段而非方法,直接读取内存偏移处整数,零开销不可修改;它不属于Object,不参与继承与反射,仅对数组有效,多维数组中仅表示第一维长度。147 收藏 -
应使用System.console().readPassword()读密码,因其可屏蔽回显且无换行符残留;但需先判空,因IDE终端中返回null,且char[]比String更安全。182 收藏 -
<p>Runnable+Lambda是最轻量的线程启动方式,只需一行代码newThread(()->{/dosomething/}).start()即可;须调用start()而非run(),且外部变量需为final或effectivelyfinal;适合短小任务,耗时操作应改用ExecutorService。</p>220 收藏 -
private仅限声明它的类内部访问,禁止用于外部类和接口,但可用于内部类、静态嵌套类及枚举构造器;它实现基础封装,却非绝对安全,影响测试、序列化与反射使用。295 收藏 -
新项目应选用slf4j+logback,而非java.util.logging;因JUL配置僵硬、MDC支持弱、异步难实现,而slf4j+logback灵活高效且生态完善,需确保classpath有且仅有一个绑定实现(如logback-classic)。289 收藏 -
本文详解为何在嵌套循环中直接使用增强for循环(for-each)删除ArrayList元素会导致程序异常终止或漏删,并提供从后往前索引遍历、迭代器删除等安全方案,附可运行示例与关键注意事项。230 收藏 -
本文深入解析Java泛型中?superT通配符在函数式接口(如Function)中的实际约束机制,阐明为何Function<?superString,Integer>允许传入String却禁止传入Object,揭示类型安全背后的“下界通配符”推理逻辑。224 收藏 -
continue只跳过当前迭代剩余代码,不退出循环且不影响循环变量更新;for中i++在每次迭代结束时自动执行,即使用了continue也不会被跳过。423 收藏