教材学习内容总结

1.构造方法决定类生成对象的方式

  • this将已存在的参数的值指定给此参数。
  • new建立新的实例。
  1. class Clothes {
  2. String color;
  3. char size;
  4. new Clothes(String color,char size){
  5. this.color = color;
  6. this.size = size;
  7. }
  8. }

在上述的例子中,new建立了一个新的Clothes实例,相当于是C语言中的结构体。用this.将color和size参数的值指定给color和size参数,简单来说,string类型的color和char类型的size参数在设定时是不带值的,要用this.将数据color和size指定给color这个参数和size这个参数。有的时候,加上this是为了区分同名的参数和数据成员。

2. 打包器

  • 自动装箱
  1. Integer wrapper = 10;
  • 自动拆箱
  1. int foo = wrapper;

所谓装箱、拆箱,其实就是数据储存中对空间的占有。装箱即数据存入地址之后参与运算,这期间地址中的数不会发生改变,也就是只读的状态;拆箱就类似与改变文件的只读模式,可以改变地址中的值,或者说这个值从地址中被拆走,改变的值重新存入原来的地址。如运算时的自动装箱与拆箱。

  1. Integer i = 10;
  2. System.out.println(i+10);
  3. System.out.println(i++);

运算时,先对i拆箱,进行加法运算之后再自动装箱。

3. 浅拷贝与深拷贝

在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存。也就是说,浅拷贝是用的已存在的内存,深拷贝是新建一个内存再把东西拷到新的内存里,后者在释放内存的时候不会出现释放同一内存的错误。

4. 封装与SRP原则

封装(Encapsulation)实际上使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作

  • 封装就是将一个函数打包,不让其他用户看到其中的细节,但可以调用其中的对象进行操作。书上上说道:“在说明案例的时候,都会假设两个以上的开发者”,将函数进行封装也便于合作伙伴之间的交流。封装的主要目的是隐藏细节,用户调用封装中的函数,却不了解函数的细节,这对保护私有数据很重要。
  • SRP原则即单一职责原则。内容是

决不要有一个以上的理由修改一个类。

对象提供单一职责的高度封装,对象的改变仅仅依赖于单一职责的改变。

也就是说,每个封装内部的函数也只能在这一封装里通过特定的方法进行修改。

5. 类语法细节

  • public修饰权限,说明对象公开可用;
  • private用在成员变量前,声明成员表示为类私有;
  • 重载构造函数:参数类型或个数不同,可以定义多个构造函数。
  • this()代表调用了另一个构造函数,调用的函数视自变量类型和个数而定。
  • 类名.static成员,static方法或区块中不能出现this关键字。声明为static的成员,不会让个别对象拥有,而是属于类。
  • 可以用import static进行偷懒。但要注意名称冲突问题。

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

问题1:在用增强式的for循环改写普通循环的时候,不清楚冒号前写什么,冒号后写什么。

解决1:在参考了网上的问答之后,我了解到

  1. for(循环变量类型 循环变量名称:要被遍历的对象 )
  2. {
  3. 循环体...
  4. }

用一个实例来说明

  1. public class For {
  2. public static void main(String[] args) {
  3. int[] a ={12,43,54,65,76};
  4. for(int s:a) {
  5. System.out.println(s);
  6. }
  7. }
  8. }

在这个例子中,a是要遍历的数组,s是输出的对象,可以自己设定。

问题2:静态内部类有什么用?定义非静态的内部类不是更利于程序后来的修改和完善吗?

解决2查找资料,发现即使是需要不断读取用户信息的程序也需要静态成员来保证某些关键信息不被修改。在非静态内部类中不可以声明静态成员,而如果没有静态内部类,就需要绕一大圈来满足用户的需求。但是用静态内部类就可以较简单的解决这一问题。

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

这一周只编辑了书上要求的代码文件,通过编辑这些文件理解了一些基本的方法,有自己写的程序但是大多是就书上的程序修改变量和输出而已,没有多大改变,因此也没有调试中的问题。下一周的学习中除了书上的代码我还会自己多编辑,加深理解,有问题时再加以解决。

代码托管

  • 用statistics脚本查看代码行数

  • 代码提交结果

上周考试错题总结

  • 1.填空:Linux Bash中,查找当前目录中前天创建的Java文件的命令是(++find . –name *.java -ctime 2++)。

    理解情况:查找用find;输入名称不确定时用 *.;"-ctime -n/+n"按文件创建时间来查找文件,-n指n天以内,+n指n天以前。
  • 6.CH03 填空:~0b1011的十进制值是(++-12++)

    理解情况:"1011"在计算机中以8bit储存,只有4位时往前补零得"00001011";取反得"11110100",最高位"1",说明是负数,取补码为"10001100",十进制数为-12。
  • 9.CH03 判断:System.out.printf("%b", 11)的输出结果是0b1011 (++X++)

    理解情况:"%b "表示输出结果是true还是false;"%B"表示输出结果是TRUE还是FALSE;"%d"表示以十进制整数格式输出。
  • 13.CH03 填空 :0x10%9 的结果是( ++7++ )

    理解情况:十六进制表示,用"0x"开头;八进制表示,用"0"开头;本题指的是十六进制,16%9=7。
  • 20.CH03 判断:byte a=3;byte b=4; 那么 a+b的类型也是byte.(++X++)

    理解情况:如果前后两个变量的类型一致,运算后的变量默认为整型变量,要转换成byte要强制装换类型。

收获

这周我尝试在Linux中安装JDK和IDEA,并将所有的代码都用命令行来编译还查找了vi编辑过程中会遇到的各种问题。虽然寒假的时候通过实验楼了解了,但直到这周才在自己的虚拟机上实践。我将自己遇到的各种问题整理成一个博客,在Linux中安装JDK和IDEA,供自己和大家共同学习。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/1 10/10 安装了JDK、IDEA和Git,写了第一个Java程序
第二周 97/117 2/3 20/30 用Linux上传代码,熟悉修改文件的命令行
第三周 336/453 2/4 35/65 在Linux上安装JDK和IDEA,更熟悉vi的操作指令以及修改时需要注意的地方。
  • 计划学习时间:30小时
  • 实际学习时间:35小时

参考资料

20155315 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. 20155336 2016-2017-2《JAVA程序设计》第九周学习总结

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

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

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

  5. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  8. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

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

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

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

    20145236 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API ...

随机推荐

  1. HTML5 网页 漂浮窗广告 JavaScript逻辑 - demo

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. codeforces 808G Anthem of Berland

    codeforces 808G Anthem of Berland 题面 给定\(s\)串和\(t\)串,字符集是小写字母.\(s\)串中有些位置的值不确定,要求你确定这些位置上的值,使得\(t\)在 ...

  3. Ubuntu 14.04 下安装Skype

    操作1: Ubuntu 14.04 下安装Skype,使用 Ctr+Alt+T组合键打开终端Terminal,输入如下即可: wget -O skype.deb http://download.sky ...

  4. spring的权限控制,过滤器

    spring的过滤器可以实现登录状态问题 1.创建一个AccessFilter类,基础代码 package com.ujia.util.access; import javax.servlet.htt ...

  5. 【bzoj3456】 城市规划

    题目 一句话题意,无向连通图计数 技不如人,甘拜下风 设\(f_i\)表示\(i\)个节点构成的无向连通图数量 之后...之后就不会了 于是抄题解 考虑容斥 \[f_i=t_i-\sum_{j=1}^ ...

  6. 【bbs】logout.php

    字体大小通过js设定,并结合@media,可实现自适应. 图片自适应窗口 实现流水灯手机端不滚动,script嵌套 多余文字省略号显示  http://www.cnblogs.com/yujihang ...

  7. 哈希表和字典List和Ilist和array和arraylist的应用

    string x = string.Empty; string y = string.Empty;                Hashtable ht = new Hashtable();     ...

  8. python学习day25 正则表达式

    4.30-25 正则表达式与re模块 re模块本身是用来操作正则表达式,与正则本身没有关系 正则表达式是指一规则,匹配字符串的规则 1.正则表达式regex 正则表达式regex是指一规则,匹配字符串 ...

  9. linux下搭建禅道项目管理系统

    1.禅道下载:                 #官网:http://www.zentao.net/article-browse-1067.html [root@localhost ~]# wget ...

  10. JDK(五)JDK1.8源码分析【集合】HashMap

    本文转载自无始无终,原文连接 HashMap 在 JDK 1.8 后新增的红黑树结构 传统 HashMap 的缺点 JDK 1.8 以前 HashMap 的实现是 数组+链表,即使哈希函数取得再好,也 ...