- 使用Java能编写哪些类型的程序?
- Web后端服务:通过Spring Boot、Spring Cloud等框架开发RESTful API或微服务
- 移动应用:使用Android Studio开发Android原生应用(如微信、抖音、支付宝的Android版本)
- Java号称“一次编译、处处运行”(Write Once, Run Anywhere!),怎么理解这句话?为使编译好的程序能运行,需先在操作系统安装什么?
- Java源文件(.java)通过javac编译器编译成平台无关的字节码文件(.class)(而非直接编译成Windows的.exe或Linux的二进制文件)。不同操作系统(如Windows、macOS、Linux)安装对应的JVM(Java Virtual Machine),JVM负责将字节码解释或即时编译(JIT)成当前操作系统能理解的机器码,从而运行程序。
- 需安装JRE(Java Runtime Environment,Java运行时环境)
- 对比c版本的与Java版本HelloWorld代码,有何不同?
- C的HelloWorld体现了面向过程的简洁(直接函数调用、机器码运行),但依赖操作系统;Java的HelloWorld则强制面向对象(类包裹、方法调用),通过字节码+JVM实现跨平台,这也是Java“Write Once, Run Anywhere”的核心体现。
- 怎么比较两个字符串内容是否相同?可以直接用吗?为什么对基本数据类型可以直接使用?对引用数据类型不行?
- 比较字符串内容是否相同:用equals()方法(如str1.equals(str2))。不能直接用:对引用数据类型(如字符串)比较内存地址,而非内容。
- 基本数据类型可以用:其变量直接存储值,比较的是值本身;引用数据类型存储对象地址,==无法判断内容是否相同。
- 下面这段代码,本意是要达到什么效果?能运行成功吗?为什么?怎么获得String的trim()方法的说明?
- 这段代码意图获取字符串x的长度,并输出其长度及去除首尾空白后的内容(通过trim()方法)。
- 不能运行成功。
原因:x被赋值为null(未引用任何对象),此时调用x.length()或x.trim()会抛出NullPointerException(空指针异常)。 - 命令行:使用JDK自带的javadoc生成String类文档,或用javap命令(如javap -c java.lang.String)查看方法签名。
- x是Integer类型,1是int类型,为什么他们可以相加,使用了什么技术?z是int,x与y是Integer类型,却可以直接将x + y 赋给z,使用了什么技术?
- 使用了自动拆箱(Unboxing)技术。
Integer是int的包装类型,当包装类型与基本类型进行运算时,包装类型会自动转换为基本类型(拆箱)。例如,x + 1中,x(Integer)会先拆箱为int(值为10),再与1相加,结果为int(11)。 - 同样使用了自动拆箱技术。
x和y都是Integer类型,相加时会先拆箱为int(x拆为10,y拆为11),相加结果为int(21)。由于z是int类型(基本类型),直接接收int结果,无需额外操作。