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

教材学习内容总结

  • 对象(Object):存在的具体实体,具有明确的状态和行为
  • 类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制
  • 从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象
  • 从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction)
  • 类是对象的设计图,对象是类的实例,生成对象要先定义类

4.1 类与对象

    Clothes c1 = new Clothes();
  • c1是引用,在栈上

    new Clothes()在堆上生成对象

    c1 可以近似看成指向对象的指针

  • 封装 = 类 + 访问控制(public,protected,private...)

    java.util.Scannerjava.math.BigDecimal

  • 注意类的构造方法

    Scanner类大大简化了Java的输入,要熟练掌握其方法,关键是会查API文档,能自学

  • 对象相等

    ==equals的区别

    ==比较的对象的地址

    equals是逻辑上相等

  • 函数

    又称方法,是定义在类中的具有特定功能的一段独立的小程序。

  • 格式:

      修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)
    {
    执行语句;
    return 返回值;
    }
  • 返回值类型函数运行后结果的数据类型,return结束函数,返回值返回给调用处,形式参数变量,存储调用函数时传递给函数的实际参数,实际参数传递给形式参数的具体数值。

  • 不用返回值的函数可以用void声明。

  • 程序示例

      class Clothes2
    {
    String color;
    char size;
    Clothes2(String color, char size)
    {
    this.color=color;
    this.size=size;
    }
    } public class Field2
    {
    public static void main(String[] args)
    {
    Clothes2 sun = new Clothes2("red",'S');
    Clothes2 spring = new Clothes2("green",'M');
    System.out.printf("sun(%s,%c)%n",sun.color,sun.size);
    System.out.printf("spring(%s,%c)%n",spring.color,spring.size);
    }
    }

4.2 基本类型包装

  • 为了让Java 基本类型像类一样使用 int-Integer

    long-Long

    byte-Byte

    float-Float

    double-Double

    boolean-Boolean

    ...

  • 程序示例

      public class IntegerDemo
    {
    public static void main(String[] args)
    {
    int data1 = 10;
    int data2 = 20;
    Integer w1 = new Integer(data1);
    Integer w2 = new Integer(data2);
    System.out.println(data1/3);
    System.out.println(w1.doubleValue()/3);
    System.out.println(w1.compareTo(w2));
    }
    }
  • 理解Autoboxing和Unboxing

    AutoboxingUnboxing是编译器语法

4.3 数组对象

  • Java中,数组是对象

    与C语言不同,Java检查数组边界,越界会触发ArrayIndexOutOfBoundsException异常

  • 数组访问的foreach语法

  • 是同一类型数据的集合,是一个容器。它会自动从0开始编号。

  • 格式:

      元素类型[] 数组名=new 元素类型[元素个数或数组长度];
    元素类型[] 数组名=new 元素类型[]{元素,元素,...};
    元素类型[] 数组名={元素,元素,...};
  • 数组一被定义即有默认初始值。

  • javac -encoding 指定字符编码

  • 思考题:

    举例说明什么是浅拷贝与深拷贝?

      深拷贝:采用了在堆内存中申请新的空间来存储数据,这样每个可以避免指针悬挂。
    
      浅拷贝:也就是在对象复制时,只是对对象中的数据成员进行简单的赋值,如果对象中存在动态成员,即指针,浅拷贝就会出现问题。

4.4 字符串对象

  • String/StringBuffer/StringBuilder

4.5 查询API文档

  • 学习Java,同样要学会使用Java API,在Windows下一定要下载CHM格式的Java API,这个版本具有检索功能,使用非常方便。

5.1 何谓封装

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

    模块化(Modularity)

    信息隐藏(Information hiding)

5.2 类语法细节

  • public

      用在类前

      用在方法前

      用在成员变量前

  • private

      用在类前不可以

      用在方法前不可以

      用在成员变量前

  • this

  • 除了被声明为static的地方外,this关键字可以出现在类中任何地方,在构造函数与对象数据成员同名时,可用this加以区别。

  • static:所有对象公有的

  • 被声明为static的成员,不会让个别对象拥有,而是属于类,将类名称作为名称空间。

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

  • 1 问题:在操作对象时,=和==的区别,并且不太能够熟练区分应用。
  • 1 解决方案:首先理解概念,=是用在指定参考名称参考某个对象,而==是用在比较两个参考名称是否参考同一个对象。然后我编代码时注意这些特殊的点,渐渐掌握。
  • 2 问题:Java编写中事先建立的数组长度不够怎么办?
  • 2 解决方案:利用Arrays.copyOf()方法建立新数组,将原数组内容复制至新数组。理解到Arrys.copyOf()的第二个参数就是指定建立的新数组长度。

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

  • 1 问题:在编译书上p96Score程序时,我错将System.out.printf("学生分数:%d %n",scores[i])打成System.out.println("学生分数:%d %n",scores[i]),结果弹出来很多错误。在上一章中书上说System.out.printf是按格式输出,而System.out.println是输出后换行,如果仅仅只是换行的差别的话那为什么用后面一种不行呢?

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

  • 2 问题:书上代码平均值结果是NaN



  • 2 解决方案:应该是因为没有输入数字的结果吧,没有解决。

代码托管

上周考试错题总结

  • 填空:~0b1011的十进制值是(-12)

      00001011取反得11110100,因为java语音中带符号得不骂形式,所以对他区补码,则得10001100,即-12.
  • 填空 :0x10%9 的结果是( 7 )

      0x是16进制的意思,0x10是16,16%9答案是7
  • 填空 :0x10&9 的结果是(0)。

      同上一题,16和9位运算,得0。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3000行 20篇 400小时
第一周 200/200 1/1 18/18
第二周 153/353 1/2 18/36
第三周 356/709 1/3 24/60
  • 计划学习时间:30小时

  • 实际学习时间:24小时

  • 改进情况:计划时间提高了,所以学习时间有所提高,但是由于缺乏经验,可能计划学习时间没有能够达到。

参考资料

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

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

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

  2. 20155305乔磊2016-2017-2《Java程序设计》第二周学习总结

    20155305乔磊 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 第三章学习了基本类型 整数(short.int.long) 字节(byte) 浮点数(f ...

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

    20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...

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

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

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

    20155331 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC是什么? JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立 ...

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

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

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

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

  8. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

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

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

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

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

随机推荐

  1. Java 多态(接口)

    有两种意义的多态,一是操作名称的多态,即有多个操作具有相同的名字,但这些操作所接收的消息类型必须不同(方法重载).另一种多态是和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为(方 ...

  2. 原生JS写了一个小demo,根据输入的数字生成不同背景颜色的小方块儿~

    昨天练习写了这个小demo,个人觉得通过设置定位元素left和top的值,来实现换行的功能,这种方法很巧妙~ 另外,如下代码中的随机颜色的获取,还请各位前辈多多指教:需要改进的地方:或者有没有更好的方 ...

  3. layui渲染form表单

    有时ajax请求的数据返回时,页面已经加载了,此时就无法展示ajax加载的内容,如果要局部刷新表单,则加上如下代码: layui.use('form', function() { var form = ...

  4. 【[CQOI2016]手机号码】

    递推版的数位dp 绝对的暴力美学 我们设\(dp[l][i][j][0/1][0/1][0/1]\)表示到了第\(l\)位,这一位上选择的数是\(i\),\(l-1\)位选择的数是\(j\),第一个\ ...

  5. 数论——算数基本定理 - HDU 4497 GCD and LCM

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  6. 关于RAM与ROM的区别与理解

    随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存).它可以随时读写,而且速度很快,通常作为操作系统或其他正在运 ...

  7. Android 异步开发之 AsyncQueryHandler 批量添加联系人

    AsyncQueryHandler: 官方解释是一个异步帮助类(A helper class to help make handling asynchronous ContentResolver qu ...

  8. gdb tui中切换窗口

    gdb的gui用法 调试代码的时候,只能看到下一行,每次使用list非常烦,不知道当前代码的context  http://beej.us/guide/bggdb/#compiling 简单来说就是在 ...

  9. 查看mysql的安装目录

    如果忘记了MySQL的安装目录,怎么快速找到呢?方法或许很多,作者觉得这种最方便了 环境:windows+mysql+navicat 方法:进入mysql命令行输入:show variables li ...

  10. js中改变this指向的call、apply、bind 方法使用

    前言: 由于js 中this的指向受函数运行环境的影响,指向经常改变,使得开发变得困难和模糊,所以在封装sdk,写一些复杂函数的时候经常会用到this 指向绑定,以避免出现不必要的问题,call.ap ...