java教程技术文章
-
Scanner.nextLine()读不到第一行是因为前一个nextInt()等方法残留换行符,需额外nextLine()消费;应统一用nextLine()读再转换类型,注意中文编码、手机号/邮箱校验、资源关闭及hasNextXxx()需配nextXxx()。280 收藏 -
String.charAt()和String.indexOf()别混用场景查单个字符位置用indexOf(),取指定下标字符用charAt()。前者返回-1表示没找到,后者越界直接抛StringIndexOutOfBoundsException。用charAt(0)取首字符前,先确认str.length()>0,空字符串会崩indexOf("a")找不到返回-1,别拿来当布尔判断(比如if(str.indexOf("x"))),要写成!=-1区分indexOf(ch194 收藏 -
synchronized(this)锁过宽是因为它锁定整个对象实例,会将无关操作(如日志、网络调用)拖入临界区,增加线程阻塞、降低吞吐量,还可能因对象暴露引发跨业务锁竞争或死锁;应改用privatefinalObject细粒度锁。427 收藏