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

教材学习内容总结

类与对象

使用Java撰写程序几乎都在使用对象,要产生对象必须先定义类,类是对象的设计图,对象是类的实例。定义类时用关键词class,利用类建立对象实例用new关键词。

  1. Java中变量有2种类型,一个是基本类型,另一个则是类类型。两个基本的标准类:java.util.Scanner与java.math.BigDecimal。
  2. BigDecimal提供有plus()、substract()、multiply()、divide()可以进行加、减、乘、除等运算。

基本类型打包器

Long、Integer、Double、Float、Boolean等类就是打包器。这些类的主要目的是提供对象实例作为“壳”,将基本类型打包在对象之中,这样就可以操作这个对象,就像是将基本类型当作对象操作。J2SE5.0后可以自动装箱、拆箱。编写Java时一定要把固有的“面向过程”的思想转化为“面向对象”.

数组对象

数组在Java中就是对象。

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

2.二维数组:二维数组使用两个索引存取数组元素。要声明二维数组,就是在类型关键词庞建加上[][]。

3.数组复制

浅层复制:仅将每个索引处所参考的对象给复制的参考,并没有复制出对象。System.arraycopy()和Arrays.copyof()都是执行的浅层复制。

深层复制:连同对象一同复制,必须自行操作。

字符串对象

字符串本质是打包字符数组的对象,是java.lang.String类的实例。

length()是取得字符串长度,charAt()是取得字符串中某个字符,toUpperCase()是将原本小写的字符串内容转为大写的字符串内容。

用 "" 写下的字符串称为字符串常量,使用 + 连接字符串会产生新的String实例。

封装

封装是不用重复撰写对象初始化流程。封装的目的书要是隐藏对象细节,将对象作为黑箱操作。构造函数就是在实现对象初始化流程的封装。

类语法

  • public

public为公开类,在构造函数上声明public表示其他包中的类可以直接调用这个构造函数,在方法上声明public表示其他包的方法可以直接调用这个方法。

  • private

可以用private定义私有数据类型。用在成员变量前,这是一种保护机制。

  • 构造函数

只有编译程序自动加入的构造函数,才成为默认构造函数。如果自行撰写无参数、没有内容的构造函数就不是默认构造函数了。

  • 重载

在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。

  • this

除了被声明为static的地方外,this关键字可以出现在类中任意地方,在对象建立后为“这个对象”的参考名称。this()代表了调用另一个构造函数,至于调用哪一个构造函数,则视调用this()时给出的自变量类型与个数而定。

  • static类成员

被声明为static的成员,不会让个别对象拥有,而属于类。在static方法或区块中,不能出现this关键字。static方法中不能使用非static数据或方法成员。

  • 不定长度自变量

使用不定长度自变量时,方法上声明的不定长度参数必须是参数列最后一个。

  • 内部类

在类中再定义类。

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

  • 1问题

不是很理解浅层复制和深层复制到底有什么区别

  • 1解决方案

反复看书,敲了书上关于浅层复制和深层复制的几段代码,对两者的区别大致有了一点理解。在java中,默认是浅层复制的,如果要复制的对象中只含有基本数据类型和String类型,那么浅层复制和浅层复制是没有区别的,所以可以放心的使用默认的浅层复制,但是如果要复制的对象中除了上述类型还有数组和集合的话,浅层复制和深层复制是有区别的,有时候会出现意想不到的效果。

  • 2问题

如果不同包的类程序代码中想直接存取要怎么做?

  • 2解决方案

如果想在其他包的类程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,在Java中要使用public加以声明。

  • 3问题

尽管看完了书也照着书上敲了代码,但是看了课后操作题还是一头雾水无从下手。脑子里细碎的知识点太多,但是遇到实际的问题时还是不知道怎么动手解决。

  • 3解决方案

待解决。要解决实际操作的问题并不简单,可能是我学习得太浅了。多说不如多学,希望能逐渐掌握要领。

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

  • 1问题

    在学习书上P109页的程序Sum时,出现了以下问题。

  • 1解决方案



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

代码托管

  • 代码提交过程截图:

  • 代码量截图:

上周考试错题总结

  • 运行class文件:

执行带main方法的class文件,命令行为:

java < CLASS文件名 >

注意CLASS文件名不要带文件后缀.class。

如果执行的class文件是带包的,即在类文件中使用了:package <包名>

那应该在包的基路径下执行,命令行为:

java <包名>.CLASS文件名

  • ~0b1101的十进制数值:

看到这道题的时候觉得很简单,结果是自己想错了。正确结果是-12.。00001011取反后为11110100,得到的有符号数是一个负数,将这个负数的补码取反加一得到原码。10001011+1得到10001100.

  • 在linux bash中查找两天前创建的Java文件的命令:find -ctime 2 -name *.java

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

本周学习的知识相比前两周来说不管是量还是内容都着实上了一个台阶,仅仅是对象这一个内容就让我晕头转向。这两章需要掌握的概念都比较抽象又不容易理解,看完之后感觉又忘了,这就需要我不停地练习来加以巩固。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 10/10 1/1 20/20
第二周 98/108 1/2 20/40
第三周 401/509 1/3 15/55

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:20小时

  • 实际学习时间:15小时

参考资料

20155227 2016-2017-2 《Java程序设计》第三周学习总结的更多相关文章

  1. Java程序设计第三周学习总结

    1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  2. 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈

    对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...

  3. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  4. 20155227 2016-2017-2 《Java程序设计》第二周学习总结

    20155227 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周学习的第三章内容与以前学过的C语言有很多共通的地方,学习起来还是比较快的. 主要的内容有 ...

  5. 20155227 2016-2017-2 《Java程序设计》第一周学习总结

    20155227 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 浏览教材,根据自己的理解每章提出一个问题 Java三个平台的区别. JDK.JRE.JVM区 ...

  6. 20155213 2016-2017-2 《Java程序设计》第九周学习总结

    20155213 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连 ...

  7. 20155328 2016-2017-2 《Java程序设计》第九周学习总结

    20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ...

  8. 20155216 2016-2017-2 《Java程序设计》第九周学习总结

    20155216 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC架构 JDBC API的使用 JDBC连接数据库 1.导入JDBC包: 添加impo ...

  9. 20155320 2016-2017-2《Java程序设计》第九周学习总结

    20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...

  10. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

随机推荐

  1. redis下的字符串处理

    redis设计一款sds对象[字符串对象] 优点:可跨平台的内存处理zmalloc:内存消耗的线性增长优势:每次加SDS_MAX_PREALLOC(1MB)的空间: 重写了各种字符串操作的函数: 写跨 ...

  2. php反序列化

    之前听漏洞银行的一个女生讲php反序列化.她说了一句.php反序列话找public变量. 导致我以为必须php反序列化.可控的变量必须是public or protected.private私有的变量 ...

  3. selenium + python自动化测试unittest框架学习(七)随机生成姓名

    在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...

  4. sqoop mysql--->hive 报错 (ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf)

    ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apa ...

  5. 404 Note Found 队 Alpha 6

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  6. C语言函数指针 和 OC-Block

    C语言函数指针 和 OC-Block 一. C语言函数指针 关于函数指针的知识详细可参考:http://www.cnblogs.com/mjios/archive/2013/03/19/2967037 ...

  7. Bluetooth® Low Energy Beacons

    Bluetooth® Low Energy Beacons ABSTRACT (abstract ) 1.This application report presents the concept of ...

  8. 鼠标不能用怎么办 USB OPTICAL MOUSE

    刚买的新鼠标,一般鼠标插上去自动安装驱动,然后就可以正常使用了. 如果遇到下面这种情况:"usb optical mouse 找不到驱动程序" 插上以后死活都没作用,然后开始下载一 ...

  9. centos6.4安装使用wine 持续更新中

    首先,从wine的官网下载页面http://www.winehq.org/download/可以了解到centos安装wine需要EPEL软件仓库.那么首先安装EPEL软件仓库,从http://mir ...

  10. App跳转系统设置界面

    NSString * urlString = @"App-Prefs:root=WIFI"; if ([[UIApplication sharedApplication] canO ...