课前问题列表
1.使用Java能编写哪些类型的程序?试举至少两个例子。
1.桌面应用程序(如使用Swing/JavaFX开发的图形界面软件)
2.Web应用程序(如基于Servlet/JSP的网站后端、Spring框架应用)
3.移动应用程序(Android应用通常用Java/Kotlin开发)
4.嵌入式系统或大型分布式系统(如物联网设备、大数据处理框架Hadoop)
Java号称“一次编译、处处运行”(Write Once, Run Anywhere!),怎么理解这句话?为使编译好的程序能运行,需先在操作系统安装什么?
1.理解:Java源码编译后生成字节码(.class文件),字节码可以在任何安装了Java虚拟机(JVM)的平台上运行,无需重新编译。
2.需安装:必须先在操作系统上安装Java运行时环境(JRE)(包含JVM和核心类库),或更完整的JDK。
3.对比c版本的与Java版本HelloWorld代码,有何不同?
C语言:直接编译为机器码,依赖特定操作系统;需手动管理内存,代码通常更简洁。
#include <stdio.h> int main()
{ printf("Hello, World!\n"); return 0;
}
Java:通过JVM运行字节码,跨平台;自动内存管理(垃圾回收);代码需写在类中,强调面向对象;类名必须与文件名一致。
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); }
}
4.怎么比较两个字符串内容是否相同?可以直接用==吗?为什么对基本数据类型可以直接使用?对引用数据类型不行?
不能用,因为比较的是对象的内存地址(是否同一对象),而非内容。应该使用String类的equals()方法,比如str1.equals(str2)
基本数据类型(如int、char)直接存储值,比较的是实际值。
引用数据类型(如String、Integer)存储的是对象引用,==只能比较引用是否指向同一对象。
5.下面这段代码,本意是要达到什么效果?能运行成功吗?为什么?怎么获得String的trim()方法的说明?
String x = null;
int length = x.length();
System.out.println("x.length = "+length +", content = "+x.trim());
本意是去除字符串s前后的空白字符
不能运行,会抛出NullPointerException。因为s为null,调用其方法会导致空指针异常。
获取trim()方法说明:查看Java官方文档;使用IDE将光标置于trim()上按F1/Ctrl+Q;命令行工具javadoc。
6.x是Integer类型,1是int类型,为什么他们可以相加,使用了什么技术?z是int,x与y是Integer类型,却可以直接将x + y 赋给z,使用了什么技术?
Integer x = Integer.valueOf("10");
Integer y = x + 1;
int z = x + y;
x(Integer)与1(int)相加:使用了自动拆箱(Auto-unboxing),Java自动将Integer转换为int再计算。
x+y(Integer)赋值给z(int):同样通过自动拆箱,将Integer类型结果转换为int。