20145228《Java程序设计》第三周学习总结
教材学习内容总结
类与对象
•类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例
•为个别对象的数据成员指定值的方式是:对象.对象成员
•类在定义时要使用关键词class,而具体对象就是对应java在堆内存中用new建立的实体
•注意“一类一文件”
标准类
•java.util.Scanner类:接收用户的输入,比System.in.read()方法更方便,如果想取得用户输入的整行文字,则使用nextLine()。
•java.math.BigDecimal类:Java遵守IEEE754浮点数运算规范,使用分数与指数来表示浮点数,这样就导致无法精确的进行运算,从而造成运算上的误差,比如1.0-0.8的结果就不是0.2。
0.5会使用1/2来表示,0.75会使用1/2+1/4来表示,而0.1会使用1/16+1/32+1/256+1/512+1/4096+。。。无限循环下去,无法精确表示。
所以java.math.BigDecimal类就可以解决这类问题。
对象指定与相等性
•在基本类型中,=是将值复制给变量,而是比较两个变量储存的值是否相同。但是,如果是在操作对象时,=是用在指定参考名称参考某个对象,而是用在比较两个参考名称是否参考同一对象,换句话说也就是=是用在将某个名牌绑到某个对象,而==是用在比较两个名牌是否绑到同一对象。
•equals是逻辑上相等,比较两个BigDecimal实质上是否相同,需要注意的是与==的区别。
数组对象
import java.util.Arrays;
public class Score
{
public static void main(String[] args)
{
int[] scores = new int[10];
for(int score : scores)
{
System.out.printf("%2d",score);
}
System.out.println();
Arrays.fill(scores,60);
for(int score : scores)
{
System.out.printf("%3d",score);
}
}
}
运行结果:
•数组在Java中就是对象,数组一旦建立,其长度就已经固定了。
•数组基本上是用来收集数据,是具有索引功能的数据结构,在JAVA中要声明数组并初始值。
•如果需要循序地从头至尾取出数组值,可以用更简单的增强式for循环。
import java.util.Scanner;
public class Sum
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
long sum = 0;
long number = 0;
do
{
System.out.print("输入数字:");
number = Long.parseLong(scanner.nextLine());
sum += number;
}
while(number != 0);
System.out.println("总和为:"+sum);
}
}
运行结果:
字符串对象
•字符串本质是打包字符数组的对象,是java.lang.String类的实例。
•使用+连接字符串会产生新的String实例,不要将+用在重复性的连接场合。
对象封装
封装
•封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,其目的主要就是隐藏对象细节,将对象当作黑箱进行操作。
一、构造函数
•构造函数特点:首先,函数名与类名相同,其次,不用定义返回值类型,另外不可以写return语句。
•构造函数作用是给对象进行初始化,多个构造函数是以重载的形式存在的。
二、this关键字
•this代表其所在函数所属对象的引用,简而言之就是this代本类对象的引用,当在函数内需要用到调用该函数的对象时,我们就可以使用this。
•this()代表了调用另一个构造函数,至于调用哪个构造函数,则视调用this()时给的自变量类型与个数而定。
三、static关键字
•static用于修饰成员(成员变量和成员函数),被声明为static的成员,不会让个别对象拥有,而是属于类。
•在static方法中不能出现this关键字,static方法中不能用非static数据或方法成员。
代码调试中的问题和解决过程
public class Arr{
public static void main(String[] args){
int [] arr1 = {1,2,3};
int [] arr2 = new int [arr1.length];
arr2=arr1;
for(int value : arr2){
System.out.printf("%d",value);
}
}
}
这是应用的增强式for循环来编写的方法,可用于循序取得数组元素,避免出现ArrayIndexOutOfBoundsException等错误。
结果如下:
感悟
这周的内容比前两周明显多了不少,而且是过去没有接触过的新知识和新概念,理解起来需要一定的时间,编写代码也要一步一步地努力提高。我对这些新知识现在还掌握得不够熟练,希望多花时间敲代码后能够熟练应用。
托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 4000行 | 20篇 | 300小时 | |
第一周 | 100/100 | 1/1 | 15/15 | |
第二周 | 300/400 | 1/2 | 25/40 | |
第三周 | 500/900 | 1/3 | 35/75 |
参考资料
•Java学习笔记(第8版)
•《Java学习笔记(第8版)》学习指导