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. December 17th 2016 Week 51st Saturday

    Great minds have purpose, others only have wishes. 杰出的人有着目标,其他人只拥有愿望. Are you clear about the differ ...

  2. Entity Framework:代码优先

    一.代码优先Code First EF6支持Oracle ODT 12C Release 3 (net4.5) DataModel(类)-->生成数据库DB 或 存在的数据库DB-->生成 ...

  3. 2241. [SDOI2011]打地鼠【暴力+剪枝】

    Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. 游戏中的锤 ...

  4. linux使用秘钥登录(禁用root密码登录)

    目的:为了巩固线上外网服务器的安全,避免黑客攻击植入木马,初步决定禁用root密码登录(安全强度低),统一使用秘钥登录(4096位长度,安全性较高) 具体操作如下: 一.生成ssh秘钥: ssh-ke ...

  5. 用Maven创建动态Web工程

    前言 maven是一个强大的工具.如果你知道如何使用它,你只要付出最小的努力,但可以获得最大的回报.一般来说,maven可以帮助你管理项目,包括管理依赖库.构建工程等. 下面将通过一个简单的教程来描述 ...

  6. Boost asio基本概念

    asio库基于操作系统提供的异步机制,采用前摄器模式(Proactor)实现可移植的异步(或同步)IO操作,不需要使用多线程和锁,有效避免多线程编程带来的诸多有害副作用(如竞争,死锁). asio封装 ...

  7. C# windows服务安装及卸载

    --C# windows服务安装及卸载   保存BAT文件  执行即可 @SET FrameworkDir=%WINDIR%\Microsoft.NET\Framework@SET Framework ...

  8. javaSE web开发 登录思路代码

    准备工作: 1.在WebContent  WEB-INF   lib下添加c3p0-0.9.5.2.jar     mchange-common-java-0.2.11.jar   ojdbc6.ja ...

  9. html标签种类

    标签 描述 <!--...--> 定义注释. <!DOCTYPE> 定义文档类型. <a> 定义锚. <abbr> 定义缩写. <acronym& ...

  10. python3爬虫-爬取B站排行榜信息

    import requests, re, time, os category_dic = { "all": "全站榜", "origin": ...