20145319 第三周学习总结

20145319 《Java程序设计》第三周学习总结

教材学习内容总结

本周学习教材第四、五章,这两章主要讲述了java语言中“对象”的相关知识,认识对象以及对象封装。

1. 类与对象

  1. 定义:对象是java语言中极为重要的一环,在使用java编写程序时基本离不开对象,而java中有基本类型和类类型两种类型系统,在使用对象前就需先定义类(Class),类是对象的设计图,对象是类的实例
  2. 使用事项:

1对象的一些使用和c语言中的指针极为相似,例如Clothes c1 = new Clothes();,其中c1是在栈内存中产生,而对象c1则是产生在堆内存中,c1可以近似看成指向堆内存中的指针。

2一些系统的标准类可以直接使用,如java.util.Scanner,java.math.BigDecimal。

3对象中的相等即类类型中"=="和基本类型中"=="在本质上也有着一定区别,"=="用于基本类型时,判断两个变量存储的值是否相等,"=="用于类类型时,是判断两个参考名是否表示同一对象,如要判断对象a、b的内含值是否相等,就要使用a.equals(b)

2. 基本类型包装

  1. 用途:让java中基本类型可以像对象一般操作
  • int-Integer
  • long-Long
  • byte-Byte
  • float-Float
  • double-Double
  • boolean-Boolean

3. 数组对象

  1. 与c语言不同,在java中数组就是对象,需按照对象的基本性质来使用数组
  2. 数组存储数目不能超过其索引范围,否则会报错:ArrayIndexOutOfBoundsException(在编译时,系统并不会提示错误,但是运行时会发生错误)
  3. java中与c语言有些许区别,c语言中int abc[10]代表为可以存储十个数的空数组,然而java中int[] abc=new int[10],却是一个十个数均为0的数组,并非空数组,如果不能清除分辨两者在程序中可能会出错(之后会用程序详细展示)
  4. 数组的复制,可以用System.arraycopy()与Arrays.copyof(),可以通过这些类快速复制一个数组,不过在调用时要注意括号中参变量的含义,类型内容都要一致。

4. 字符串对象

  1. 定义:在java中,字符串本质是打包字符数组的对象,是java.lang.String类的实例
  2. 操作方法:
  • length():取得字符串长度
  • charAt():指定取得字符串中某个字符
  • toUpperCase():将小写字符串内容转换成大写字符串内容
  • Byte.parseByte(number):将字符串转换成byte整数类型
  • Integer.parseInt(number):将字符串转换成int整数类型
  • Xxx.parseXxx(number):将字符串转换成long、short等相应类型

                   ……

     3.  字符串池:如果将一串字符指定给2个字符串变量,则这2个字符串变量会参考到同一对象。只要""中字符串内容相同,无论在程序代码中出现多少次,JVM都只会建立一个             String实例,并在字符串池中维护。

     4.  不可变动字符串:在Java中,字符串对象一旦建立,就无法更改对象中的任何内容,对象上没有任何一个方法可以更改字符串内容。使用+字符可以达到这样的效果,不过             根据反编译的过程,可以发现,实际上是产生了新的字符串对象。而大量的产生新对象又是不希望看到的,所以我们可以用StringBuilder来改善,它的特点在于每次调用完           后都会返回原有的StringBuilder对象,这样可以避免产生多个对象。

5. 查询Java API文件

  1. 打开java官方网站:http://www.oracle.com/technetwork/java/
  2. 知道类的完全吻合名称以及想查询的版本,就可以在搜索引擎中直接进行查询,单击即可看到说明
  3. 在Windows下可以下载CHM格式的Java API

6. 封装

  1. 封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作,可将函数、流程、值都封装在类中,即可直接调用

7. 类语法细节

  1. public:用在类、函数、方法、对象数据成员之前,用在类前,表示其是公开类,可以在其他包的类中调用。用在函数前,表示其他包的类可以直接调用此函数,用于方法前,表示其他包的方法中可以调用这个方法

  2. this:可出现在类的任何地方,在构造函数参数与对象数据成员同名时,可以用this加以区别,在java中,this()也代表了调用另一个构造函数。注意:this()调用只能出现在构造函数的第一行

  3. static:可用在类、方法、对象数据成员之前。声明为static的成员,不会让个别对象拥有,而是属于类。 在static方法中不能出现this关键字,static方法中不能用非static数据或方法成员。 import static语法是为了偷懒,但要注意名称冲突的问题。

  4. final:可用在类、方法、对象数据成员之前,final int x=10;即x为10,不可改动。final int x;即表示在之后一定要对x赋值,否则会出现编译错误

 

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

  • 在一开始时候学到对象可以封存函数,方法,流程之类的并不是很能理解,后来对照书上自己敲了代码并且运行之后才有初步的了解,感觉比较类似于c语言中的函数调用,只是java中除了构造函数也可在定义class类时候做到一样的效果。

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

课后作业题3(进阶版 冒泡法)

  1. 代码:

     

     2.  运行结果:

 

这里因为c语言习惯性思维,认为int[]maopao=new int[5319];即定义出一个可以存储5319个数的空数组,其实是定义了一个含5319个0的数组,所以在输出结果时,for(int jieguo:maopao)因为数组输出结果太多,从而导致了结不能正常输出结果。

       3.  修改代码:

     

       4.  运行结果:

修改过后程序就可正常输出结果

 

cashcard(对象)


      1.  代码:


      2.   运行结果:

 

代码托管截图

 

其他(感悟、思考等,可选)

  • 虽然java可以类比着c语言来学习,但是很多地方还是会有些许出入,例如这次在学习数组时候就过于想当然而犯了错误,在之后学习中还是要多落于实践,细节处也要多敲代码验证自己的猜想,体会java和c语言之间的区别才行。

学习进度条

 

 

 

代码行数(新增/累积)

博客量(新增/累积)

学习时间(新增/累积)

重要成长

目标

3500行

28篇

300小时

 

第一周

150/150

1/1

20/20

 

第二周

200/350

1/2

20/40

 

第三周

300/650

1/3

20/60

 

第四周

 

 

 

 

参考资料

posted on 2016-03-20 13:45  20145319钟轲  阅读(290)  评论(4编辑  收藏  举报