目录
- 第01周 预习、实验与作业:绪论与Java基本语法
- 0.任务完成说明
- 1.预习
- 1.1 学习目标
- 1.2 预习任务
- 1.3 课前问题列表
- 2.实验
- 3.课后作业
- 3.1 在线学习平台
- 3.2 PTA编程(必做)
- 拓展
0.任务完成说明
本次预习中的“1.3 课前问题列表”为选做。
可使用Markdown格式的博客或者帖子完成,提交且完成较好的同学将记1次平时成绩。
如果觉得太难,可课后完成并提交。但一定请勿抄袭。
1.预习
简易预习流程:先看预习课件,认真完成里面的习题。然后根据需要观看视频。最后尝试完成课前问题列表。
1.1 学习目标
- 掌握Java基本概念(面向对象、跨平台、第一个HelloWorld);
- 能在命令行编译运行Java程序(包括带参数的命令行程序),能在IDE中编写、运行Java程序;
- 掌握Scanner的用法来处理控制台输入,为PTA实验做准备。
1.2 预习任务
- 预习雨课件;
- 学银在线(学习通)《Java程序设计》课程中的“绪论”、“Java基本语法”章节。
1.3 课前问题列表
-
使用Java能编写哪些类型的程序?试举至少两个例子。
使用Java可以编写桌面应用程序、企业级应用程序、移动应用程序、Web应用程序、游戏开发、大数据处理、云计算
比如,对于游戏开发来说,java可以写整个游戏的游戏规则和核心逻辑,Java同时可以创建游戏的图形用户界面,菜单、对话框,另外Java处理游戏状态保存、加载和玩家数据的存储,通常使用文件系统、数据库或网络存储。
再比如, Java可以用于编写桌面应用程序的核心功能,包括数据处理、算法实现、业务规则等。Java可以与各种数据库系统交互,通过JDBC(Java Database Connectivity)API进行数据存储和管理。Java应用程序在一个受限的环境中运行,防止恶意代码损害系统;运行在JVM上,确保了应用程序的跨平台兼容性。 -
Java号称“一次编译、处处运行”(Write Once, Run Anywhere!),怎么理解这句话?为使编译好的程序能运行,需先在操作系统安装什么?
Java的口号“一次编译、处处运行”(Write Once, Run Anywhere!)是指Java程序在编写和编译时不需要针对特定的硬件或操作系统环境。Java源代码首先被编译成一种叫做字节码(Bytecode)的中间格式,而不是特定平台的机器码。字节码是一种平台无关的代码,可以在任何安装了Java虚拟机(JVM)的操作系统上运行。 -
对比c版本的与Java版本HelloWorld代码,有何不同?
①语句不同。C语言是printf(“HelloWorld”);
Java语言是System.out.println("HelloWorld");
②运行环境不同。C语言 程序通常编译成机器码,直接在操作系统上运行。编译C语言程序通常需要使用编译器如gcc
或clang
。
Java 程序被编译成字节码,然后在Java虚拟机(JVM)上运行。编译Java程序需要使用javac
编译器,然后通过java
命令运行编译后的字节码。
③程序结构不同。C语言 程序通常从main
函数开始执行,这是程序执行的入口点。
Java 程序则从一个包含main
方法的类开始执行,这是程序执行的入口点。
④错误处理方法不同。在 C语言 中,main
函数返回一个整数,通常返回0
表示程序成功执行,非零值表示错误。
在 Java 中,main
方法不需要返回值,如果有异常未捕获,程序会异常终止。
-
怎么比较两个字符串内容是否相同?可以直接用==吗?为什么对基本数据类型可以直接使用==?对引用数据类型不行?
java中比较两个字符串内容应该用String类的equals方法,不能直接用==,因为==操作符比较的是两个对象的引用是否相同,而不是它们的内容。
基本数据类型(如int、double、float、byte、char、short、long和boolean)在Java中是按值传递的。这意味着基本数据类型的变量直接存储值,而不是引用。因此,使用==比较两个基本数据类型变量时,实际上是在比较它们存储的值。
而引用数据类型(如String、数组、类实例等)的变量存储的是对对象在内存中的引用(地址),而不是对象本身的数据。 -
下面这段代码,本意是要达到什么效果?能运行成功吗?为什么?怎么获得String的trim()方法的说明?
-
String x = null;
声明一个String
类型的变量x
并初始化为null
。
-
int length = x.length();
尝试获取变量x
的长度,并将结果存储在int
类型的变量length
中。
-
System.out.println("x.length = "+length +", content = "+x.trim());
尝试打印变量x
的长度和内容(去除前后空格)。
代码不能运行成功:
①当尝试调用x.length()
时,因为x
是null
,所以会抛出NullPointerException
。在Java中,任何对null
对象的调用都会引发此异常。
②由于x
是null
,调用x.trim()
同样会抛出NullPointerException
。
-
-
阅读如下代码
-
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中,整数(`int`)和包装类(`Integer`)之间可以进行加法运算,这是因为包装类`Integer`内部实现了`int`类型的值。当我们创建一个`Integer`对象时,它会包装一个`int`类型的值。
在您的代码中,`x`是一个`Integer`对象,它的值被初始化为10(这是通过调用`Integer.valueOf("10")`方法得到的,该方法将字符串转换为`Integer`对象)。`y`是通过将`x`的值加1并自动装箱(autoboxing)得到的。自动装箱是Java编译器在编译时自动完成的过程,它将基本类型(如`int`)转换为包装类(如`Integer`)。
然后,`z`是通过将`x`和`y`相加并自动拆箱(unboxing)得到的。自动拆箱是自动装箱的逆过程,它将包装类转换回基本类型。在这个过程中,`x + y`的结果被自动拆箱为`int`类型,然后赋值给`z`。
总结来说,这些操作都是自动装箱和拆箱的结果,这是Java为简化基本类型和包装类之间的转换而提供的一种机制。
-
2.实验
Java实验列表页面 中第01次实验Java第01次实验提纲(基本概念+编程环境入门+PTA)。
建议实验前提前观看MOOC第一章标有“实验”字样的视频。
3.课后作业
3.1 在线学习平台
- 视频:
复习第一章、第二章内容。重点查看视频“Scanner类的用法”。 - 讨论
1.5 思考:怎么学习Java?
1.6.2 思考:java HelloWorld命令的含义
2.5.2 使用switch完成分数等级划分程序。
2.6.3 循环的使用
2.9.2 引用数据类型与基本数据类型的区别是什么?
2.9.3 自己写一个枚举类型
3.2 PTA编程(必做)
完成:题集"Java-01-基础入门“,下周二检查。
学有余力的同学可开始完成题集Java-02-基本语法 题目1-4。
拓展
参考资料: