20145218 《Java程序设计》第三周学习总结
2016-03-19 22:31
423 查看
20145218 《Java程序设计》第三周学习总结
教材学习内容总结
定义类
编写程序要产生对象就要先定义类。类是对象的设计图,对象是类的实例。类定义时使用class关键词,建立实例时,要使用new关键词。代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319184049396-358733161.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319184036099-2034141620.png)
在Field.java中,存在公开的Field类(即存在public class Field语句),所以文档名称必须是Field,而当我保存文件起名为Clothes时,编译就会出现错误。
使用标准类
两个标准类:java.util.Scanner和java.math.BigDecimaljava.util.Scanner
之前编写的程序都是直接输出结果,没办法接受输入,C语言中只要有scanf便可接受用户输入,在java中,当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。先编写一个简单地判断奇偶数的程序。
代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319191231365-1007853956.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319191239912-519592548.png)
java.math.BigDecimal
0.1+0.1+0.1在Java的运算中并不等于0.3
代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319192052740-377961857.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319192100599-1292241445.png)
这是因为Java遵守IEEE754浮点数运算,简而言之,在Java中编写程序进行浮点数运算多多少少会产生误差。而使用java.math.BigDecimal则可以产生更好的精度。
代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319192858787-535967854.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319192910412-1996213474.png)
数组的基本学习
数组打印:数组就像是一个有很多小隔间的容器,每个小隔间可以放入一个元素,例如在数组中存入六个数字,并打印出来代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319193959271-981253073.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319194007162-656847854.png)
数组排序:数组的常见使用方法就是获取最值和排序,其实二者差别不是很大,都是对数组内每一个小隔间的元素进行判断及重排序。排序要比获取最值复杂一点,排序的代码如下
代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319195819349-119137824.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319195833084-1915287868.png)
图中排序方法为冒泡排序法。
操作数组对象
如果事先不知道数组中的元素值,只知道元素个数,则可以通过new关键词指定长度来建立数组(例如:int[] scores=new int[10];)。此时数组初始值均为0,若要改变初始值,则可使用java.util.Arrays的fill()方法来设定新建数组的元素值。代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319203505349-1228184838.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319203515474-389683323.png)
数组复制
数组复制的基本做法是另行建立新数组。但可以使用arrays.copyOf()方法。System.arraycopy()的五个参数分别是来源数组、来源起始索引、目的数组、目的起始索引、复制长度。代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319204356646-1577531981.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319204407256-2083473680.png)
字符串对象
字符串是由字符组成的文字符号。在java中,字符串是java.lang.String实例,用来打包字符数组。例如:String name="justin"; //建立String实例
System.out.println(name); //显示justin
System.out.println(name.length()); //显示长度为6
System.out.println(name.charAt(0)); //显示第一个字符j
System.out.println(name.toUpperCase()); //显示JUSTIN
练习让用户输入整数,输入0后计算所有整数总和
代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319205925349-68936797.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319205932693-98187748.png)
封装
封装可以理解为把方法封在类中,用打时候可以直接拿,就好比你要上学,类就是书包而方法就是书,要用方法打时候直接从书包中拿书就行。代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319213240865-1449225289.png)
类语法细节
public权限修饰public是个公开类,可以在其他包的类中使用。可以在构造函数上声明public,这表示其他包中的类可以直接调用这个构造函数。可以在方法上声明public,这表示其他包中的方法可以直接调用这个方法。
关于构造函数
函数名与类名相同,不用定义返回值类型,不可以写return语句。
重载
(1)重载的概念:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
(2)重载的特点:与返回值类型无关,只看参数列表。
(3)重载的好处:方便于阅读,优化了程序设计。
方法重载代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319215045131-390015867.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319215055365-1682966179.png)
若想让上面的程序结果显示为“Integer被调用”则代码修改如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319215319381-392592157.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319215339646-1211054604.png)
使用this
除了被声明为static的地方外,this关键字可以出现在类中任何地方。在构建函数参数与对象数据成员同名时,可用this加以区别。代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319215952162-1425071145.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319220002287-2117081492.png)
static类成员
被声明为static的成员,不会让个别对象拥有,而是属于类,是将类名称作为名称空间。由于static成员是属于类,而非个别对象,所以在static成员中使用this,会是一种语意上的错误。
静态变量必须在初始化之前进行赋值,否则会报错。静态方法通常都是被经常使用的方法,不需要每次都重新实例化,提高工作效率。
import static语法代码如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319221703178-1473595276.png)
运行结果如下:
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319221715990-1956406181.png)
不定长度自变量
要使用不定长度自变量,声明参数列时要在类型关键字后加上...。内部类
可以在类中再定义类。内部类也可以使用public、protected或private声明。例如:
class Some{
private class Other{
}
}
代码托管
代码托管可以更直观的反应我们所写的代码。![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160324214838073-1412263105.png)
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160324214907261-345403123.png)
代码调试中的问题和解决过程
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319222414193-993194018.png)
![](https://images2015.cnblogs.com/blog/889679/201603/889679-20160319222424318-1476272797.png)
课本上的代码敲上去之后却运行不了,出现了上图中的错误。
感悟
与前两周轻松的学习不同,第三周的任务量与难度同时加大了,出现了很多以前从未接触过的名词及定义。但通过对第四章第五章的学习,我对java的认识更深了一层,原来没有自己想象中的那么简单,有的代码明明和书上的一模一样,到了自己的电脑上却无法运行,而且出现了问题也不知道怎么去解决,希望通过以后的学习可以慢慢提高自己的水平,遇到问题不再慌张,也试着自己去解决。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 1/3 | 18/40 | |
第三周 | 400/1000 | 1/4 | 25/60 |
参考资料
Java学习笔记(第8版)《Java学习笔记(第8版)》学习指导
相关文章推荐
- spring xmlns 记录
- java - static - final
- Java - 包 - 成员访问修饰符
- Java - 数组
- Hadoop-0.21源代码编译及导入eclipse
- NIIT实训 java笔记--3.14
- 20145320《Java程序设计》第3周学习总结
- 20145219 《Java程序设计》第03周学习总结
- Java实现Mongo嵌套查询
- Java面向对象05-抽象方法,抽象类和接口
- java图像压缩
- NIIT实训 java笔记--3.11
- Struts和Hibernate整合中分页实现解析
- EL表达式使用了java保留关键字
- Java Map
- 网页页面自动刷新的3中实现方式
- Java单例你所不知道的事,与Volatile关键字有染
- 创建第一个Spring MVC程序helloworld
- eclipse不能新建server
- 教你如何使用Java泛型