-
代码块控制变量作用域,{}内声明的变量仅在该块内可见;普通块限局部作用域,实例块随对象创建执行,静态块类加载时执行一次,同步块只影响锁粒度。
-
Java开发中最易忽略的是运行时隐性异常:空指针(链式调用、自动拆箱等)、资源泄漏(未正确关闭IO/连接)、并发幽灵异常(ConcurrentModificationException等)及日期时区错误(SimpleDateFormat非线程安全、LocalDateTime误用)。
-
组合优于继承的关键在于按生命周期、复用性、可测试性拆分;避免接口宽泛、抽象类滥用、字段可变失控,聚焦小接口和不可变设计。
-
Ant无需安装,只需JDK8+并配置PATH;build.xml必须位于项目根目录或用-f指定;javac失败多因路径、classpath或JDK版本问题;ant-p无输出说明缺少defaulttarget或依赖链不完整。
-
Java后台接口异常排查核心思路是“先定位范围、再缩小原因、最后验证修复”,优先通过日志(异常类型、堆栈、上下文)、监控(QPS、错误率、JVM指标)、依赖(DB/Redis/HTTP/消息队列)逐层分析,再针对性审代码。
-
super关键字用于调用父类方法、构造器和访问被隐藏的属性。在子类重写方法时,通过super.方法名()可保留父类行为,如Dog类中重写move()方法前调用super.move();在子类构造器中必须用super()调用父类构造方法,且需位于首行,如Student构造器中调用super(name)初始化继承的name属性;当子类字段与父类同名时,可用super.字段名访问父类属性,但应避免字段重名以提升可读性。合理使用super能增强代码复用并确保继承逻辑正确执行。
-
Druid连接池初始化失败主因是依赖不齐或配置早于Bean初始化;需用druid-spring-boot-starter、正确配置spring.datasource.druid前缀、设置唯一name及维护周期。
-
Java不支持多继承因语法设计规避菱形继承问题,应采用接口+默认方法叠加行为或内部类组合委托实现复用。
-
javac-d参数用于按包结构组织字节码文件,指定.class输出根目录并自动创建匹配包路径的子目录;它保障JVM正确加载、分离源码与编译产物、支持类路径运行及jar打包。
-
匿名内部类适用于一次性无状态事件处理器,如按钮点击监听;需注意局部变量必须是effectivelyfinal,避免内存泄漏和复用问题;复杂逻辑应改用命名类或Lambda。
-
Java字符串内容比较必须用.equals()而非==,因==只比较引用地址;字面量复用常量池对象而new创建新对象,故"hello"==newString("hello")为false;.equals()逐字符比较且null安全,推荐"abc".equals(str)写法防空指针。
-
初学者用HttpURLConnection调用OpenWeatherMapAPI实现天气应用,需注意URL拼接、URLEncoder编码、User-Agent设置、异常处理及org.json安全解析,并用SwingWorker避免GUI阻塞。
-
在Java中,无法直接用泛型统一调用针对不同具体类型的重载方法(如func(Integer)、func(String)),因为泛型擦除导致运行时类型信息丢失,而方法重载解析发生在编译期,二者机制冲突。
-
首先安装JDK并设置JAVA_HOME及PATH环境变量,再下载Tomcat并配置CATALINA_HOME和PATH,最后通过startup.bat启动服务并访问localhost:8080验证安装。
-
switch适用于单变量多值相等判断,if-else适用于复杂条件或范围比较;2.switch支持整型、字符、枚举和String类型;3.多分支时switch更清晰,复杂逻辑用if-else更灵活。