201621123028《Java程序设计》第一周学习总结
第1周-Java基本概念
1.本周学习总结
关键字:java语言发展,java语言的特点,JDK,JRE,JVM,字节码文件,环境配置,开发工具。java发展迅速,因为它具有简单性,跨平台性等优良特点,实现良好的可移植功能是多亏JVM去运行解释生成的字节码文件,JDK这个工具包含了JRE,而JRE内部包含了JVM。要实现java的编译运行,需要对电脑进行环境配置。编写java可以使用一些编辑器如Notepad、Notepad++等,当然也有集成开发环境Eclipse等。
2.书面作业
1.虚拟机
1.1 执行java程序时,首先是使用javac工具启动编译器,对所写的源文件即以.java为后缀的文件进行编译,在没跳出其他问题后会生成以.class为后缀的字节码文件,比如HelloWorld.class,此时的HelloWorld称为类,最后是用java HelloWorld来实现代码的运行。java程序具有跨平台性,因为有了JVM,java程序并不是直接对.java的源文件进行操作的,而是在使用java的时候会启动JVM,JVM的能力是对生成的.class字节码文件进行解释运行。这样子只要在不同操作系统下安装不同版本的JVM,就可以实现java语言的跨平台性。
1.2JDK(Java Development Kit)即java开发工具包,是提供给java开发人员使用的,这个里面包含了java的开发工具比如编译工具(javac.exe),打包工具(jar.exe),而且里面也有JRE,也就是说安装时只需要安装JDK就可以了,使用JDK开发完成的java程序,交给JRE去运行。JRE(Java Runtime Environment)是java运行的环境,里面有虚拟机JVM和类库。所以三者JDK包含JRE,JRE包含JVM.三者关系如下:
2.java与javac
2.1 java HelloWorld命令的含义是启动虚拟机JVM,对字节码文件开始解释运行,HelloWorld指的是类。
2.2 Path变量存放着系统中应用程序所在的路径,比如我要使用javac命令,如果我没配置环境,那么我就要先到javac所在的目录下输入javac才有用,如下图,如果不在该目录下,输入javac是会出现错误,现在将javac所在的位置存放在Path变量后,就可以不用自己找那个目录,而是系统来找,就可以在任意位置输入javac而成功。这样就会方便很多。
2.3 使用java编写程序并与运行,先使用javac进行编译,编译通过后生成一个中间文件——字节码文件,而解释运行字节码文件是JVM来实现的。
3.实验总结
3.1 在PTA中对于输入来说,在开始前都需要添加import java.util.Scanner
,功能是导入Scanner类。要想输入,就需要代码Scanner sc = new Scanner(System.in);
来获取从键盘上输入的字符串,也可以获取int型等的数据。当要循环输入的时候,使用while (sc.hasNextInt())
来实现,这里是对int型进行处理。double x=in.nextDouble();
这个是读取下一个的Double 型字符串。格式化输出例如System.out.printf("%d,%f,%s,%b\n",1,2.3,"abc",true)
,在括号内前面的双引号里面是格式的说明,在逗号的后面添加你所要输出的数字,字符串等等。
3.2 5-2(取数字)实验总结
这题关键是整数转换成整数字符串进行遍历。将字符串存入一个数组中char[] c=i.toCharArray();
,用一个for循环遍历,因为数字有负数,所以当遍历到负号时应该可以继续遍历,即:if(c[b]=='-')continue;
,最后将读取的数字加和就好了。
3.3 5-3(取数字浮点数)实验总结
如果前面取数字问题解决,那么这题的方法和上一题一样,就是多了考虑小数点的情况,可以将输入的数字转换为字符串在遍历到“-”和“.”时使用continue继续遍历,最后将得到的单个数字相加求和。
3.4 5-4(开根号)
用题目所说的逐步逼近的方法,先定义一个参数a=0,double a=0;
然后进入循环,循环条件为while(!(x-a*a<0.0001||a*a>=x))
,因为题目说满足x-aa<0.0001||aa>=x该条件时跳出循环,那么我在while循环里取反,不满足x-aa<0.0001||aa>=x时进入加0.0001的循环中,当满足x-aa<0.0001||aa>=x时就跳出循环输出结果。System.out.printf("%.6f\n",a);
3.5 5-5(二进制的前导的零)
既然32位是固定的,那么可以用参数a等于32,int a=32;
,这样我可以对一个数字转化为32位的二进制表示,然后从右往左遍历,是0就继续移动,一直读到1时,记下当前位置,用32减去当前位置,就是二进制前导零的个数,但是输入0这个数要单独考虑,因为0的二进制第一位就是0,那么输出结果是31,答案是错误的。
4.Java主要应用在那几个方面?你对自己在这门课的目标与期许是什么?
- java应用于互联网开发,游戏开发,银行系统管理等等。
- 第一个学期学习了C语言,但是学的不好,代码量不是很多,导致基础就不太扎实。
目标 | 给自己定一个目标是成功的开始 |
---|---|
时间 | 每天基本时间一个小时,然后根据难易度增加时间 |
代码量 | 每周310行代码,一个学期4800 |
学习方式 | 理论和代码并行,上完课后,复习时使用软件敲代码,小问题先解决再解决大的问题 |
有困难时 | 简单问题找百度,自己百度解决不了的问题,整理好后问同学和老师 |
3.使用码云管理Java代码
3.1 GIT的使用
3.2截图题集“Java基本语法”PTA提交列表
3.3 使用学姐、学长开发的jar程序统计每周的代码量
周次 | 总代码俩 | 新增代码量 | 总文件数 | 新增文件数 |
---|---|---|---|---|
1 | 191 | 191 | 18 | 18 |