20155227 2016-2017-2 《Java程序设计》第三周学习总结
20155227 2016-2017-2 《Java程序设计》第三周学习总结
教材学习内容总结
类与对象
使用Java撰写程序几乎都在使用对象,要产生对象必须先定义类,类是对象的设计图,对象是类的实例。定义类时用关键词class,利用类建立对象实例用new关键词。
- Java中变量有2种类型,一个是基本类型,另一个则是类类型。两个基本的标准类:java.util.Scanner与java.math.BigDecimal。
- BigDecimal提供有plus()、substract()、multiply()、divide()可以进行加、减、乘、除等运算。
基本类型打包器
Long、Integer、Double、Float、Boolean等类就是打包器。这些类的主要目的是提供对象实例作为“壳”,将基本类型打包在对象之中,这样就可以操作这个对象,就像是将基本类型当作对象操作。J2SE5.0后可以自动装箱、拆箱。编写Java时一定要把固有的“面向过程”的思想转化为“面向对象”.
数组对象
数组在Java中就是对象。
- 格式:
元素类型[] 数组名=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程序设计》第三周学习总结的更多相关文章
- Java程序设计第三周学习总结
1. 本周学习总结 2. 书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
- 对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈
对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈 一:教学中存在的学习问题 “1.由于同学们平时练习不足,上课总是出现跟不上老师的节奏的现象. 2.个别同学上课不认真听讲,打开 ...
- 20155227 2016-2017-2 《Java程序设计》第九周学习总结
20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...
- 20155227 2016-2017-2 《Java程序设计》第二周学习总结
20155227 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周学习的第三章内容与以前学过的C语言有很多共通的地方,学习起来还是比较快的. 主要的内容有 ...
- 20155227 2016-2017-2 《Java程序设计》第一周学习总结
20155227 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 浏览教材,根据自己的理解每章提出一个问题 Java三个平台的区别. JDK.JRE.JVM区 ...
- 20155213 2016-2017-2 《Java程序设计》第九周学习总结
20155213 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBase Connectivity)即java数据库连 ...
- 20155328 2016-2017-2 《Java程序设计》第九周学习总结
20155328 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 16.1 JDBC入门 JDBC是Java联机数据库的标准规范,定义一组标准类与接口,应用程 ...
- 20155216 2016-2017-2 《Java程序设计》第九周学习总结
20155216 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC架构 JDBC API的使用 JDBC连接数据库 1.导入JDBC包: 添加impo ...
- 20155320 2016-2017-2《Java程序设计》第九周学习总结
20155320 2016-2017-2<Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
随机推荐
- [EffectiveC++]item24:若所有参数皆需类型转换,请为此采用non-member函数
Declare non-member functions when type conversions should apply to all parameters. 104页 只有当参数被列于参数列( ...
- TcpListerner、TcpClient 、邮件发送MailMessage、SmtpClient类
一.服务端 TcpListener server = );//定义监听器 server.Start();//启动监听器 ]; //创建一个容器用于接受数据 string data = null; wh ...
- 如何在windows下用IDA优雅调试ELF
在windows下如何用IDA优雅调试ELF brief: 构建一个IDA-linux_server-docker镜像,优雅地IDA远程调试 使用传统虚拟机来运行一个linux程序就得跑一个完整的li ...
- pat 5—1 求该日是该年的第几天
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 前面还是欠了一堆,慢慢补吧. 看了别人的博客才知道前面有一次圆面积的题,我上课是在干啥......... 打是打出来了,但是还是有几个蒙蔽的地方: ...
- codeforces A. Supercentral Point 题解
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- P2059 [JLOI2013]卡牌游戏
题目描述 N个人坐成一圈玩游戏.一开始我们把所有玩家按顺时针从1到N编号.首先第一回合是玩家1作为庄家.每个回合庄家都会随机(即按相等的概率)从卡牌堆里选择一张卡片,假设卡片上的数字为X,则庄家首先把 ...
- HDU - 5547 数独(回溯法)
题目链接:HDU-5547 http://acm.hdu.edu.cn/showproblem.php?pid=5547 正所谓:骗分过样例,暴力出奇迹. 解题思想(暴力出奇迹(DFS+回溯)): 1 ...
- flutter 配置环境
1. 下载java SDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html c ...
- Kali-linux渗透攻击应用
前面依次介绍了Armitage.MSFCONSOLE和MSFCLI接口的概念及使用.本节将介绍使用MSFCONSOLE工具渗透攻击MySQL数据库服务.PostgreSQL数据库服务.Tomcat服务 ...
- PHP扩展功能 ---- 伪静态
一.入门三部曲 1.什么是伪静态? 改写URL,以静态的url形式访问页面,但其实是用PHP一类的动态脚本来处理的. 2.为什么要用伪静态? 需要动态获取数据,但是又希望能够对搜索引擎友好. 3.怎么 ...