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. August 25th 2017 Week 34th Friday

    Stop to have a rest, do not forget others still in the running. 停下来休息的时候,不要忘记别人还在奔跑. You don't need ...

  2. iOS 滑动比较

    对iOS手机进行滑动操作进行总结:1.mobile:scroll向下滚动整个屏幕driver.execute_script('mobile: scroll', {'direction': 'down' ...

  3. java多态-向上转型和向下转型

    向上转型:符合“is a”,是安全的,子类向上到父类,多余的属性和方法会丢弃 向下转型:不安全的,用instanceof提前判断一下,以免抛出异常 instanceof用法: result = obj ...

  4. bzoj5153 [Wc2018]州区划分

    题目链接 正解:子集和变换. 考场上只会暴力和$p=0$的情况,还只会$O(2^{n}*n^{3})$的. 然而这题题面出锅,导致考场上一直在卡裸暴力,后面的部分分没写了..听$laofu$说$O(2 ...

  5. 使用jenkins SonarQube gitlab 构建自动化发布系统

    目前持续集成的生态越来越完善,工具也有很多,开源的或商业的.如: 最最流行的,也是使用最多的 Jenkins 有着持续集成DNA的ThoughtWorks GO.理念:"Deployment ...

  6. 2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践 目录 实验准备 后门概念 常用后门工具 实验内容与步骤 使用netcat获取主机操作Shell,cron启动 使用so ...

  7. ubuntu ibus 输入法总在左下角不跟随光标的处理

    sudo apt-get install ibus-gtk ibus-gtk3 ibus-qt4 参考文章

  8. virtualbox+vagrant学习-5-Boxes-2-Box Versioning

    Box Versioning 从Vagrant 1.5版本开始, box支持版本控制.这允许创建box的人将更新推送到box中,使用box的人有一个简单的工作流,用于检查更新.更新box以及查看发生了 ...

  9. sudo 启动tomcat报错没有java环境

    报错: Cannot find ./catalina.shThe file is absent or does not have execute permissionThis file is need ...

  10. C#网络Socket编程

    1.什么是Socket Sockets 是一种进程通信机制,是一个通信链的句柄(其实就是两个程序通信用的) 2.分类 流式套接字(SOCK_STREAM):提供了一种可靠的.面向连接的双向数据传输服务 ...