课前问题
集美大学课程实验报告-实验1:绪论与java基本语法
| 项目名称 | 内容 |
|---|---|
| 课程名称 | Java程序设计 |
| 班级 | 网安2412 |
| 指导教师 | 郑如滨 |
| 学生姓名 | |
| 学号 | 202421336061 |
| 实验项目名称 | 绪论与Java基本语法 |
一、使用Java能编写哪些类型的程序?试举至少两个例子。
- 一些企业的后端程序。
- 安卓平台的一些应用程序。
- 开发桌面应用、大数据处理程序等。
二、Java号称“一次编译、处处运行”(Write Once, Run Anywhere!),怎么理解这句话?为使编译好的程序能运行,需先在操作系统安装什么?
一次编译
一次编译是指开发者编写的 Java 源代码(.java 文件)首先被编译成字节码(.class 文件),这是一种与平台无关的中间代码,而非直接编译成特定操作系统的机器码。
处处运行
处处运行是指字节码可以在安装了 Java 虚拟机(JVM)的任何操作系统上运行,由 JVM 负责将字节码翻译成当前系统可识别的机器码并执行。
为了让编译好的 Java 程序能够运行,需要在操作系统上先安装Java 运行时环境(JRE,Java Runtime Environment)。JRE 包含了运行 Java 程序所必需的组件,其中最核心的就是 Java 虚拟机(JVM),此外还包括 Java 类库、资源文件等支持文件。
三、对比c版本的与Java版本HelloWorld代码,有何不同?
主要区别
- 程序结构:C 语言以main()函数作为入口,程序直接从函数开始执行。Java 是纯面向对象语言,必须将代码放在类中,入口是public static void main(String[] args)方法,且类名需与文件名一致(public 类)。
- 依赖与编译:C 语言通过#include引入头文件(如stdio.h),编译后生成与平台相关的机器码(.exe 文件等)。Java 无需显式引入基础库(System类属于默认可见的java.lang包),编译后生成跨平台的字节码(.class 文件),需通过 JVM 运行。
- 输出方式:C 语言使用printf()函数,需手动添加换行符\n。Java 使用System.out.println()方法,自带换行功能。
- 返回值:C 语言的main()函数必须返回int类型(通常用return 0表示正常结束)。Java 的main()方法声明为void,无需返回值。
四、怎么比较两个字符串内容是否相同?可以直接用吗?为什么对基本数据类型可以直接使用?对引用数据类型不行?
在 Java 中比较两个字符串内容是否相同时,不能直接使用= =运算符,而应该使用字符串的equals()方法(如str1.equals(str2))。
= = 运算符的作用是比较变量指向的内存地址是否相同(即是否为同一个对象),而不是比较内容。
基本数据类型(如int、char、boolean等)的变量直接存储数据值,而不是地址。当用==比较时,比较的是它们存储的实际值,因此结果符合预期。
引用数据类型(如String、Object、自定义类等)的变量存储的是对象在堆内存中的地址,而非数据本身。
= =比较的是两个变量是否指向同一个对象(地址是否相同),而非对象的内容。
即使两个对象的内容完全一致,只要它们是不同的对象(地址不同),= =就会返回false。
五、下面这段代码,本意是要达到什么效果?能运行成功吗?为什么?怎么获得String的trim()方法的说明?
String x = null; int length = x.length(); System.out.println("x.length = "+length +", content = "+x.trim());
这段代码的本意是想获取字符串x的长度,并输出长度和去除首尾空白后的内容。
这段代码不能运行成功,会抛出NullPointerException(空指针异常)。
-原因是变量x被赋值为null,表示它不指向任何字符串对象。而length()和trim()都是字符串对象的方法,必须通过实际存在的对象调用。当对null调用方法时,Java 虚拟机会抛出空指针异常。
要获取String类的trim()方法说明,可以通过以下方式:
- 1.查阅 Java 官方文档:访问 Oracle 的 Java API 文档(如Java 8 String 文档),搜索trim()方法的详细说明。
- 2.使用 IDE 的提示功能:在 Eclipse、IntelliJ IDEA 等开发工具中,将光标放在trim()方法上,按F1(或Ctrl+Q等快捷键),会显示该方法的注释说明。
- 3.查看源码注释:通过 IDE 查看String类的源码,trim()方法的注释会说明其功能(去除字符串首尾的空白字符,返回新字符串)。
六、`Integer x = Integer.valueOf("10");
Integer y = x + 1;
int z = x + y;`
x是Integer类型,1是int类型,为什么他们可以相加,使用了什么技术?z是int,x与y是Integer类型,却可以直接将x + y 赋给z,使用了什么技术?
代码中涉及的是 Java 的自动装箱(Autoboxing) 和自动拆箱(Unboxing) 技术,这是 Java 5 引入的特性,用于简化基本数据类型与对应的包装类之间的转换。
自动装箱:基本数据类型 → 对应的包装类(如int → Integer,通过Integer.valueOf()实现)。
自动拆箱:包装类 → 对应的基本数据类型(如Integer → int,通过intValue()实现)。
这两种技术让基本数据类型与包装类的转换更加简洁,避免了手动调用valueOf()或xxxValue()方法的繁琐。
浙公网安备 33010602011771号