20202306 实验一《Linux基础与Java开发环境》实验报告

 # 20202306 2021-2022-1 《数据结构与面向对象程序设计》实验一报告

课程:《程序设计与数据结构》
班级: 2023
姓名: 李金城
学号:20202306
实验教师:王志强
实验日期:2021年9月19日
必修/选修: 必修

## 1.实验内容

1、基于命令行进行简单的Java程序编辑、编译、运行和调试。

2、练习Linux基本命令;

3、学习Java程序的JDB调试技能:https://www.cnblogs.com/rocedu/p/6371262.html

4、编写简单的Java程序。


## 2. 实验过程及结果

一、基于命令行进行简单的Java程序编辑、编译、运行和调试

1、命令行:vim的命令行是在文件中进行基本操作的必要知识,通过三个模式的转换和输入,控制光标、插入位置、空行等基本操作。

(1)三个模式的互换:i——普通模式进入插入模式;:——普通模式进入命令行模式;Esc——命令行模式进入命令行模式。

(2)光标移动:h(左)、l(右)、j(下)、k(上)、w(移动到下一个单词)、b(移动到上一个单词)。

(3)插入(插入模式):i(在当前光标处进行编辑)、l(在行首插入)、A(在行末插入)、a在光标后插入一个新行、o(在当前行后插入一个新行)、O(在当前行前插入一个新行)、cw(替换从光标所在位置后到一个单词结尾的字符)。

(4)删除:x(删除光标所在处的字符)、X(删除光标所在前一个字符)、dd(删除整行/剪切)、dw(删除一个单词)、D(删除至行位)、d^(删除至行首)、dG(删除至文档结尾)、d1G(删除至文档首部)、ndd(n为数字,表示删除n行)

(5)保存与退出::q!(退出但不保存)、shift+zz /:x /:wq(保存并退出)、:w【文件】(另存到【文件】中)、:wq!(强制保存并退出)

(6)重复指令:.表示重复上一个命令操作

(7)游标跳转:gg(移动到第一行)、G(移动到最后一行)、nG(n为数字,表示移动到第n行)、w(到下一个单词的开头)、e(到当前单词的结尾/下一个单词的结尾)、b(到前一个单词的开头)、ge(到前一个单词的结尾)、0 / ^(到行头)、$(到行尾)

(8)显示行号::set nu

(9)复制与粘贴(普通模式):nyy(n为数字,复制游标所在的n行),p(粘贴到光标下)、P(粘贴到光标后)

(10)撤销与替换:r+【待替换字母】(将游标所在字母替换为指定字母)、~(反转游标所在字母的大小写)、R(连续替换,直到按下Esc)、cc(替换整行)、cw(替换一个单词)、u{n}(撤销n次操作)

 

2、java程序的操作:

(1)编辑:

  a.应用linux命令行指令:vi 【File name】,新建一个文件或进入先前编辑过的“File name”文件。

  b.再应用vim的相关操作,对程序进行编辑。

(2)编译:

  根据java的语法结构,一个基本程序如下图所示:

   也就是说一个java程序需要由class+主类名称、public static void main(String【】 args)的常规语句、方法体三部分组成

(3)运行:文件确认编译无误后,在终端输入命令:java 【File name】,即可在终端中看到程序的输出或程序错误的提示。

用户名:~$ java test
An Emergency Broadcsat

(4)调试:

  a.需提前下载jdk程序,可在终端输入javac -version,若存在该程序则会显示其版本,若需要下载,终端会输出以sudo开头的语句,输入该语句即可联网下载。

  b.下载完毕后,可输入javac -g【文件名】.java,此时会出现【文件名】.class的文件,接下来输入jdb 【文件名】,即可开始调试。

  c.加载成功后我们通常会在main处设置第一个断点:stop in 【文件名】.main。

  d.在n行添加断点:stop in 【文件名】:n(n表示行数)。

  e.运行开始:run。

  f.进行下一步:next,直到程序结束。

  g.其他:help(打开帮助手册)、clear in 【文件名】:n(删除在n行处的断点)、clear(查看设置的断点)、print i(查看变量i的值)、set i=n(将变量i的值改为n)、cont(执行到程序结束或下一个断点)。

 

二、练习Linux基本命令

(1)关于文件:vi 【文件名】(生成一个文件,并进入)、rm 【文件名】(删除这个文件)【文件名】 -version(查询该文件是否存在)、cat 【文件名】(显示文件中的内容)

(2)关于目录:ls(查询目录)、ls -a(查询全部目录,包括隐藏目录)、cd(切换到根目录)

(3)复制:cp test test1(复制文件test到test1)

(4)文件改名:mv test test1(将文件test的名称改为test1)

(5)查找文件:find 【文件名】

(6)打开帮助手册:man man(man 指令名:详细查看关于该指令的使用说明)

(7)修改时间:touch -t 【时间】 【文件名】

 

三、学习Java程序的JDB调试技能(基本与一、2、(4)相同)

补充内容:

1、在Linux中打开三个标签页:vim编辑代码、javac编译运行、JDB调试

2、Alt+n:表示进入第n个标签

3、查看变量的值:print或者eval

4、利用list可以查看运行到了源代码的什么位置,use或者sourcepath指出源代码的位置

5、利用up、down可以进行类的调试

 

四、编写简单的Java程序

例:

1 public class test
2 {
3     public static void main(String【】 args)
4     {
5         System.out.println("An Emergency Broadcast");
6     }
7 }

其中,test为程序名/主类名称,调用了println方法,进行输出。

例:

 1 import java.util.Scanner;
 2 public class Echo
 3 {
 4     public static void main(String[] args)
 5     {
 6          String message; //定义一个字符串message
 7          Scanner scan = new Scanner(System.in); //创建Scanner类对象
 8          System.out.println("Enter a line of text:");
 9          message = scan.nextLine();
10         System.out.println("You entered:\"" + message + "\"");
11     }
12 }

其中,要求用户输入一个字符串,最终达到输出字符串的目的。

例:

 1 public class text
 2 {
 3     public static void main(String[]args)
 4     {
 5         Scanner in=new Scanner(System.in);
 6         System.out.println("guess a number between 1and100)");
 7         int a=in.nextInt();
 8         int b=(int)(Math.random()*100);
 9         while(a!=b)
10         {
11             if(a<b)System.out.println("too little");
12             else System.out.println("too much");
13             System.out.println("guess more:");
14             a = in.nextInt();
15         }
16         System.out.println("Bingo!The right answer is " + b);
17     }
18 } 

其中,系统生成一个随机数,用户进行猜数游戏。


## 3. 实验过程中遇到的问题和解决过程
- 问题1:安装JDB时出现问题,根据教程上的提示和网站下载也没能安装上JDB。
- 问题1解决方案:通过细致观察,我发现当我输入java -version时下方出现了以sudo开头的下载方案,于是我尝试一番,终于成功安装好了JDB,并进行了第一次调试。
- 问题2:码云的上传没有及时记忆和理解,导致无法将程序上传到码云。
- 问题2解决方案:通过查询资料,我在博客园发现了一篇帖子,其中详细地介绍了上传方法。
- 问题3:java程序的书写繁琐,且需要记忆的指令极多,这给记忆造成了很大的难题。- 问题1:安装JDB时出现问题,根据教程上的提示和网站下载也没能安装上JDB。
- 问题3解决方案:通过看书,多亲手敲代码,而不是靠死记硬背。学习的过程要融汇贯通,勤能补拙,多多练习才能百战不殆。


## 其他(感悟、思考等)
 
  初次遇到java,它复杂且繁琐的操作指令就给与我很大的压力,尤其是老师操作时,终端和文件里花花绿绿的代码和老师看似轻松的操作,令人目不暇接。然而在看了教材之后,我开始渐渐理解老师的用意和课上讲解的内容了。首先预习是很关键的步骤,课后的总结笔记也是必要的,由于课时原因,老师教学内容多,有时好像刚上课不久就下课了。也是因为java语言的强大魅力,吸引我上课专注地听讲,它操作指令背后的逻辑让人充满好奇心和探索欲。每个指令的应用,即字母和符号的组合,竟然可以在虚拟机中起到这样的作用,尤是让人感到兴奋和精彩。然而java的学习也并不是轻松顺利的,在CDSN、博客园、码云以及云班课中存在了大量的java实例和讲解介绍,这都需要我们去学习和探索。学习要凌驾于书本之上,多进行机操,成为真正可用的java人才。也因为它具备的难度和挑战性,也要求我们要坚持且孜孜不倦的学习态度,唯有如此才能做到知行合一,“码”耕不辍。

## 参考资料

-  [《Java程序设计与数据结构教程(第二版)》](https://book.douban.com/subject/26851579/)

-  [《Java程序设计与数据结构教程(第二版)》学习指导](http://www.cnblogs.com/rocedu/p/5182332.html)


-  https://www.cnblogs.com/rocedu/p/5155128.html

http://www.cnblogs.com/rocedu/p/6482354.html

posted @ 2021-09-18 23:57  20202306李金城  阅读(130)  评论(0编辑  收藏  举报