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版)》学习指导

posted @ 2016-03-20 14:07  20145228江苒  阅读(187)  评论(0编辑  收藏  举报