JunRoss

 

Java基础概念课前问题列表

Java基础概念课前问题列表:

1. 使用Java能编写哪些类型的程序?试举至少两个例子。

答:Android移动应用(例如我们日常生活中经常使用的微信、支付宝以及一些游戏等),Web应用程序(例如网页4399里的一些小游戏,购物程序等)。

2. Java号称“一次编译、处处运行”(Write Once, Run Anywhere!),怎么理解这句话?为使编译好的程序能运行,需先在操作系统安装什么?

答:因为开发者只需要使用Java源代码编译一次,并且生成出字节码,这个字节码文件可以在任何操作系统上运行,并且不需要重新编译,前提是该操作系统安装了Java虚拟机;
为了让编译好的Java程序能够运行,必须先在目标操作系统上安装 JRE(Java Runtime Environment) 或 JDK(Java Development Kit)。

3. 对比C版本的与Java版本HelloWorld代码,有何不同?

答:
以下是两种语言的HelloWorld程序对比:
C语言版本

#include <stdio.h> // 1. 引入头文件

int main() {       // 2. 主函数
    printf("Hello, World!\n"); // 3. 使用函数输出
    return 0;      // 4. 返回值
}

Java语言版本

public class HelloWorld { // 1. 定义类(文件名必须与类名一致)
    public static void main(String[] args) { // 2. 主方法(入口点)
        System.out.println("Hello, World!"); // 3. 使用对象方法输出
    }
}

主要不同点:
特性 C语言 Java语言
组织结构 面向过程,围绕函数构建。 面向对象,所有代码必须位于类内部。
入口点 main()函数。 main()方法,且必须是public static void,并接受一个String[]参数。
输出语句 使用printf等函数。 使用System.out对象的println方法。
编译运行 编译成平台相关的机器码,直接由操作系统执行。 编译成平台无关的字节码,由JVM执行。
文件管理 #include预处理指令引入头文件。 使用import语句导入包(Package)。

4.怎么比较两个字符串内容是否相同?可以直接用==吗?为什么对基本数据类型可以直接使用?对引用数据类型不行?

答:
怎么比较两个字符串内容是否相:应该使用String对象的 .equals() 方法:

String s1 = new String("Hello");
String s2 = new String("Hello");

if (s1.equals(s2)) { // 正确:比较内容
    System.out.println("Contents are equal.");
}
```;
不能直接使用:对于引用数据类型(如String, Array, 自定义类),运算符比较的是两个对象引用(内存地址)是否指向同一个对象,而不是比较它们的内容是否相同。在上面的例子中,s1 == s2会返回false,因为它们是两个不同的对象(位于内存的不同地址),尽管内容相同;
为什么基本数据类型可以用:因为基本数据类型(如int, char, double)的变量存储的就是实际的值本身。所以==直接比较的就是它们的值是否相等。
```java
int a = 10;
int b = 10;
if (a == b) { // 正确:比较值本身
    System.out.println("Values are equal."); // 会输出
}
5. 下面这段代码,本意是要达到什么效果?能运行成功吗?为什么?怎么获得String的trim()方法的说明?

代码:

String x = null;
int length = x.length();
System.out.println("x.length = "+length +", content = "+x.trim());

答:这段代码的本意可能是想获取一个(可能为空的)字符串的长度和修剪(去除首尾空格)后的内容;不能运行成功;因为变量x被显式地赋值为null,这意味着它不指向任何有效的String对象。当试图在一个null引用上调用方法(如x.length()和x.trim())时,Java运行时就会抛出NullPointerException;官方文档:查阅Oracle官方Java文档。进入网址然后找到java.lang包下的String类,即可看到trim()方法的详细说明,网址:https://docs.oracle.com/javase/8/docs/api/

6. 阅读如下代码
Integer x = Integer.valueOf("10");
Integer y = x + 1;
int z = x + y;
x是Integer类型,1是int类型,为什么他们可以相加,使用了什么技术?

答:当编译器发现一个Integer对象需要与一个int基本类型值进行加法运算时,它会自动调用x.intValue()方法,将Integer对象转换(拆箱)为int基本类型值,然后再进行 10 + 1 的加法运算,这里使用了自动拆箱技术。z是int,x与y是Integer类型,却可以直接将x + y 赋给z,这同样使用了自动拆箱技术。表达式x + y的计算过程如下:

  1. x是Integer,y也是Integer,但它们之间要进行+运算。
  2. 编译器会先自动将x和y都拆箱为int基本类型(即x.intValue() + y.intValue())。
  3. 两个int相加的结果仍然是int类型。
  4. 将int结果赋值给int类型的变量z是完全合法的,不需要任何转换。

posted on 2025-09-10 21:51  00后留声机  阅读(11)  评论(0)    收藏  举报

导航