您的位置:首页 > 编程语言 > Java开发

20155305乔磊2016-2017-2《Java程序设计》第三周学习总结

2017-03-12 12:46 447 查看

20155305乔磊 2016-2017-2 《Java程序设计》第三周学习总结

教材学习内容总结

对象(Object):存在的具体实体,具有明确的状态和行为

类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制

从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象

从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction)

类是对象的设计图,对象是类的实例,生成对象要先定义类

4.1 类与对象

Clothes c1 = new Clothes();


c1是引用,在栈上

new Clothes()
在堆上生成对象

c1 可以近似看成指向对象的指针

封装 = 类 + 访问控制(public,protected,private...)

java.util.Scanner
java.math.BigDecimal


注意类的构造方法

Scanner
类大大简化了Java的输入,要熟练掌握其方法,关键是会查API文档,能自学

对象相等

==
equals
的区别

==
比较的对象的地址

equals
是逻辑上相等

函数

又称方法,是定义在类中的具有特定功能的一段独立的小程序。

格式:

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)
{
执行语句;
return 返回值;
}


返回值类型
函数运行后结果的数据类型,
return
结束函数,
返回值
返回给调用处,
形式参数
变量,存储调用函数时传递给函数的实际参数,
实际参数
传递给形式参数的具体数值。

不用返回值的函数可以用void声明。

程序示例

class Clothes2
{
String color;
char size;
Clothes2(String color, char size)
{
this.color=color;
this.size=size;
}
}

public class Field2
{
public static void main(String[] args)
{
Clothes2 sun = new Clothes2("red",'S');
Clothes2 spring = new Clothes2("green",'M');
System.out.printf("sun(%s,%c)%n",sun.color,sun.size);
System.out.printf("spring(%s,%c)%n",spring.color,spring.size);
}
}


4.2 基本类型包装

为了让Java 基本类型像类一样使用
int-Integer


long-Long


byte-Byte


float-Float


double-Double


boolean-Boolean


...

程序示例

public class IntegerDemo
{
public static void main(String[] args)
{
int data1 = 10;
int data2 = 20;
Integer w1 = new Integer(data1);
Integer w2 = new Integer(data2);
System.out.println(data1/3);
System.out.println(w1.doubleValue()/3);
System.out.println(w1.compareTo(w2));
}
}


理解
Autoboxing和
Unboxing

Autoboxing
Unboxing
是编译器语法

4.3 数组对象

Java中,数组是对象

与C语言不同,Java检查数组边界,越界会触发
ArrayIndexOutOfBoundsException
异常

数组访问的
foreach
语法

是同一类型数据的集合,是一个容器。它会自动从0开始编号。

格式:

元素类型[] 数组名=new 元素类型[元素个数或数组长度];
元素类型[] 数组名=new 元素类型[]{元素,元素,...};
元素类型[] 数组名={元素,元素,...};


数组一被定义即有默认初始值。

javac -encoding
指定字符编码

思考题:

举例说明什么是浅拷贝与深拷贝?

深拷贝:采用了在堆内存中申请新的空间来存储数据,这样每个可以避免指针悬挂。

浅拷贝:也就是在对象复制时,只是对对象中的数据成员进行简单的赋值,如果对象中存在动态成员,即指针,浅拷贝就会出现问题。


4.4 字符串对象

String
/
StringBuffer
/
StringBuilder


4.5 查询API文档

学习Java,同样要学会使用
Java API
,在Windows下一定要下载
CHM
格式的
Java API
,这个版本具有检索功能,使用非常方便。

5.1 何谓封装

封装实际上使用方法
(Method)
将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作

封装的好处

模块化(Modularity)


信息隐藏(Information hiding)


5.2 类语法细节

public

  用在类前

  用在方法前

  用在成员变量前

private

  用在类前不可以

  用在方法前不可以

  用在成员变量前

this

除了被声明为static的地方外,this关键字可以出现在类中任何地方,在构造函数与对象数据成员同名时,可用this加以区别。

static:所有对象公有的

被声明为
static
的成员,不会让个别对象拥有,而是属于类,将类名称作为名称空间。

教材学习中的问题和解决过程

1 问题:在操作对象时,=和==的区别,并且不太能够熟练区分应用。

1 解决方案:首先理解概念,=是用在指定参考名称参考某个对象,而==是用在比较两个参考名称是否参考同一个对象。然后我编代码时注意这些特殊的点,渐渐掌握。

2 问题:Java编写中事先建立的数组长度不够怎么办?

2 解决方案:利用
Arrays.copyOf()
方法建立新数组,将原数组内容复制至新数组。理解到
Arrys.copyOf()
的第二个参数就是指定建立的新数组长度。

代码调试中的问题和解决过程

1 问题:在编译书上
p96
Score
程序时,我错将
System.out.printf("学生分数:%d %n",scores[i])
打成
System.out.println("学生分数:%d %n",scores[i])
,结果弹出来很多错误。在上一章中书上说
System.out.printf
是按格式输出,而
System.out.println
是输出后换行,如果仅仅只是换行的差别的话那为什么用后面一种不行呢?

1 解决方案:后来了解到这主要是因为println是用于输出参数内容,然后换行,其参数个数固定为一个,而printf是用于输出带各种数据类型的占位符的参数,其参数个数是不定的,所以上面的代码应该用printf。



2 问题:书上代码平均值结果是NaN





2 解决方案:应该是因为没有输入数字的结果吧,没有解决。

代码托管



上周考试错题总结

填空:~0b1011的十进制值是(-12)

00001011取反得11110100,因为java语音中带符号得不骂形式,所以对他区补码,则得10001100,即-12.


填空 :0x10%9 的结果是( 7 )

0x是16进制的意思,0x10是16,16%9答案是7


填空 :0x10&9 的结果是(0)。

同上一题,16和9位运算,得0。


学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标3000行20篇400小时
第一周200/2001/118/18
第二周153/3531/218/36
第三周356/7091/324/60
计划学习时间:30小时

实际学习时间:24小时

改进情况:计划时间提高了,所以学习时间有所提高,但是由于缺乏经验,可能计划学习时间没有能够达到。

参考资料

Java学习笔记(第8版)

《Java学习笔记(第8版)》学习指导
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: