20145210姚思羽《Java程序设计》实验一实验报告
2016-04-10 15:45
507 查看
实验一 Java开发环境的熟悉(Linux + Eclipse)
实验内容
1.使用JDK编译、运行简单的Java程序;2.使用Eclipse 编辑、编译、运行、调试Java程序。
实验知识点
1.JVM、JRE、JDK的安装位置与区别;2.命令行运行javac;java;javac -cp; java -cp;
3.PATH,CLASSPATH,SOURCEPATH的设定方法与应用;
4.包管理:package;import;javac -d ;
5.Eclipse(Netbeans)管理Java项目,调试:断点、单步执行等;
6.Java基础语法:类型与类型转换;变量;运算符;流程控制等;
7.JDK帮助文档的使用。
实验步骤
(一)命令行下 Java 程序开发
•JVM:(JAVA虚拟机)JVM是Java程序的操作系统,有了JVM,Java程序就可以达到“编辑一次,到处执行”的跨平台目的。JVM的可执行文件就是.class文档。•JRE:(Java运行时环境)JRE是Java执行环境,包括Java SE API 与JVM、部署技术。
•JDK:(Java开发工具包)编译程序的工具程序由JDK提供,包括Java程序语言、工具程序与JRE。
•三者区别:
•JDK 是用于开发的,而 JRE 是用于运行 Java 程序的 •JDK 和 JRE 都包含了 JVM,从而使得我们可以运行 Java 程序 •JVM 是java 编译程序的核心并且具有平台独立性 •我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用
•以下为 JDK 与 JRE 的安装位置:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/c4168a124f837a788c86dcf9452ee48e.png)
•编写.java 程序,运行javac后出现.class 文件:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/07ac78eba2cc7202ede9be95f12d6e31.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/7c7abfc1f40a6f913bb6a22f2f4f41fe.png)
(二)IDEA 下 Java 程序开发、调试
•首先新建一个窗口:点击右上角 File-New-Progect,弹出一个窗口,勾选其中的 Java 选项:![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/e685b5b6e9d5753dccfb85faf2244a0d.png)
•给新的项目起一个名字:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/64d4ab6736227c356146997227832c7c.png)
•在 src 处右键新建 java 程序:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/9cea118a35f37ed88c05a813f7293418.png)
•运行程序:
import java.util.Scanner; public class Exp1{ public static void main(String[] args){ System.out.println("请输入你的名字:"); Scanner scanner = new Scanner(System.in); String name = scanner.next(); System.out.println("Hi " + name); } }
•运行结果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/e03b7f8fe765e62dc315e89c13f825bf.png)
•断点调试:
•在 IDEA 中选定要设置断点的代码行,在该行最左边单击鼠标左键
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/bd976c91bd9f6a5bd5dcab84c868e17f.png)
•开启调试会话
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/649811c972a8f4674cd381546dc4f167.png)
•单步调试:
•step over:点击图示中向下的箭头,程序向下执行一行
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/31ad4d1f71834594c57f7260d838f343.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/75c6d0694ae9b95377faee3868bbe190.png)
•step into:点击step over 右边的斜向下的箭头,程序向下执行一行,如果该行有自定义方法,则运行进入自定义方法
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/497eca492e7c4a3a9b3414bbd7b0a878.png)
(三)练习
•题目:实现凯撒密码,并进行测试•代码如下:
import java.io.*; import java.util.Scanner; public class Caesar { public static void main(String[] args){ System.out.print("请输入密钥:"); Scanner s = new Scanner(System.in); int a = s.nextInt(); C(a); } public static void C(int n){ try{ char b[]; BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入一段明文:"); String str2 = br2.readLine(); b = str2.toCharArray(); System.out.println("密文为:"); int k = n; for(int i = 0;i < str2.length();i++){ char ch = (char)((b[i] - 'a' +k)%26 +'a'); System.out.print(ch); } System.out.println("密钥 K = " + k); }catch(IOException e){ System.out.println(e.getMessage()); } } }
•运行结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/05/0dc1c4a53f41ad8638704c4ec38fe400.png)
问题及解决
•问题:平常对于凯撒密码的加一个数字模26还是比较理解的,但是编写代码的时候却无从下手•解决:采取数组的形式,把输入的数字放在一个数组里,然后一个一个进行加密,具体代码如下:
for(int i = 0;i < str2.length();i++){ char ch = (char)((b[i] - 'a' +k)%26 +'a'); System.out.print(ch); }
本次实验的 PSP(Personal Software Process) 时间:
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 40min | 18.2% |
设 计 | 50min | 22.7% |
代码实现 | 60min | 27.3% |
测 试 | 30min | 13.6% |
分析总结 | 40min | 18.2% |
相关文章推荐
- struts2 action
- 【java】关于static关键字在重写父类方法时的作用
- JAVA的Class.forName(clsName)ClassLoader的loadClass(clsName)的区别
- 1章 初识Java
- No qualifying bean of type [XXX.XXX] found for dependency 解决方法
- Java基础---------2016.4.10(2)
- Java 信号量 Semaphore 介绍
- JAVA中this用法总结
- spring自带的定时器@Scheduled
- 20145307陈俊达第六周JAVA学习总结
- java插入排序(个人总结)
- Java实现数组反转翻转的方法
- JavaWeb总结(一)—Servlet
- Quartz使用-入门使用(java定时任务实现)
- 20145327 《Java程序设计》第六周学习总结
- Java工具类TextUtil(可以进行字符串处理的)
- 我的java开始
- Java实现数组反转翻转的方法
- java循环练习:判断7的倍数
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序