教材学习内容总结

第四章是整个JAVA语言的基础和重点,要重点学习和把握。

第四章要点

  • 基础

    • 构造方法与对象的创建
    • 类与程序的基本结构
  • 重点
    • 参数传值
    • 对象组合
  • JAVA独有语法
    • 实例成员与类成员
    • 方法重载
    • this关键字
    • import语句
  • 实用
    • JRE扩展与jar文件

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

一、面向对象

  • 特性:封装性、继承、多态
  • 重点理解:类

二、类

  • 类:重要的数据类型
  • 的含义:封装着数据和对数据的操作
  • 的内容:类声明+类体
    • 类声明:变量被称为对象变量,简称对象,用class 类名表示
    • 类体:变量声明(体现数据,属性)+方法(体现操作,行为),类声明后包括{ }的所有内容
  • 类体的内容
    • 成员变量/域变量:变量声明部分声明的变量

      • 有效范围与整个类和书写位置无关
      • 变量起名习惯第一个单词小写(若有多个单词则从第二个单词开始首字母大写,eg:heightLightFlight,不用下划线,驼峰习惯)
      • 成员变量有默认值
    • 方法:定义方法
      • 方法=方法头+方法体
      • 方法体:局部变量+语句,类似c的函数
      • 方法体中局部变量定义的参数只在方法内有效,且与位置有关,从声明它的位置之后才开始有效
      • 局部变量与成员变量同名,成员变量在方法内暂时失效
      • 局部变量没有默认值

三、构造方法与创建对象

  • 构造方法

    • 创建对象时用,名字与类名一样,无类型
    • 默认构造方法和自定义构造方法
      • 默认:默认一个类只有一个无参数的构造方法
      • 自定义:自定义时系统不提供构造方法,构造几个有几个。一个类中可以有多个构造方法,但必须保证构造方法名字与类名都一样,且参数不同(数量或类型)
  • 创建对象
    • 创建对象=对象的声明+为对象分配变量
    • 对象声明:类名 对象名
    • 为对象分配变量:new运算符+类的构造方法
  • 对象的内存模型
    • new运算符运算结果是一个十六进制数,一个引用
    • 首先给成员对象分配内存空间,再执行构造方法中的语句

四、参数传值(重点)

  • 传值机制:方法中所有参数都是调用了指定值的拷贝
  • 两种方法:基本数据类型参数的传值、引用类型参数的传值
  • 基本数据类型参数:向该参数传递的值的级别不可以高于该参数的级别,不改变传入参数本身的值
  • 引用类型参数:传递的是变量中存放的“引用”,不是变量引用的实体;改变参数变量实体则原变量实体改变,改变参数变量“引用”不改变原变量“引用”,反之亦然
  • 可变参数:eg. public void f(int … x)
    • 参数类型一致
    • 可变参数代表在最后一个
    • 表示若干参数

五、对象的组合(重点)

  • 组合与复用:一个类声明的两个对象如果具有相同的引用,那么二者就具有完全相同的变量

六、实例成员与类成员

  • 实例变量声明与类变量声明

    • 实例变量(无修饰):float x;

      • 不同对象实例变量不同
      • 通过该对象访问该实例变量
    • 类变量(static变量/静态变量):static int y
      • static需要放在变量类型前面
      • 所有对象共享类变量
      • 通过类名直接访问类变量
  • 实例方法与类方法
    • 实例方法:float max(float x,float y) { … }

      • 对象调用实例方法(直接使用)
    • 类方法:static float jerry() { … }
      • static放在方法类型前
      • 类名调用类方法(类似C语言函数调用)

七、方法重载

  • java多态:重载、重写(继承相关)
  • 方法重载:对象行为的多态性
    • 一个类中可以有多个同名方法,但必须参数(个数或类型,二选一)不同

八、this关键字

  • 构造方法中:可省略
  • 实例方法中:
    • 实例成员变量:this.成员变量;
    • 类成员变量:类名.成员变量;
      • 实例成员名字与局部变量名字相同时,this.类名.不可省略
    • 实例方法中调用实例方法:this.方法;
    • 实例方法中调用类方法:类名.方法;
      • 一个实例方法调用另一个方法时可省略this.类名.
      • this不能在类方法中调用,因为类方法可以通过类名直接调用,且可能调用时还没有对象诞生

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

一、程序的若干个类分布在多个源文件时的编译与运行

  • 未放入同个文件夹时出现下图错误:

  • 检查得知原因,将这几个源文件单独建文件夹放在其中后再正常编译主类所在源文件Example4_5.java:

  • 因此当程序的若干个类分布在多个源文件时,需要将所有源文件都放在同一个文件夹中再在终端里编译才能成功,且只需要编译主类即可

  • 如上图能看到,直接编译主类时系统会自动编译Rect.java和Lader.java,这是因为主类中需要用到这两个源文件产生的字节码
  • 编译后有三个字节码文件产生,其中Rect和Lader是可复用的代码,相当于c中的可调用函数,主类就相当于主函数,直接调用这些代码即可进行计算

二、返回类型不同(再一次强调!!避免不小心犯错)

  • 编译时出现如图错误:

  • 发现是源文件中类名和文件名不符,无法返回值

  • 修改后就可以正常编译运行了

三、包语句和import语句的编译和运行

  • Example4_17和Example4_18中引入自定义包中的类,第一次编译时未将Example4_18.java置于包文件hello/nihao中导致出错:

  • 放入后再编译运行:

  • 这是由于Example4_18.java中的主类没有包名,因此需要将自定义包名形成的目录和无包名的类放在同一个文件夹中
  • 都是无名包且在同个文件夹下的类可以互相使用
  • 无名包类可以使用import语句来使用有名包的类
  • 有名包的类无法使用无名包的类

代码托管

上周代码详见码云ch04

上周考试错题总结

还未进行第二次测试,稍后补充

感悟与思考

这一章的学习比起前两周而言明显难且深入了许多,且因为生病耽误了时间,一周的时间里学起来较之前吃力,但也还在接受范围之内。看第四章学习视频时也了解到这一章是整个JAVA学习中的基础和重点,的重要性不言而喻。经过蓝墨云上的测试考验后,我也更深入的理解了知识点,虽然对有些点的认知现在还浮于表面,但我相信在接下来的学习中会逐渐明白其中的重要性,比如书本中从第一章开始就一直重复出现的一句话“一个类声明的两个对象如果具有相同的引用,那么二者就具有完全相同的变量”,到了这一章终于有了比较明确的认识。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 3000行 30篇 400小时
第一周 178/200 1/2 20/20 基础
第二周 368/200 2/2 20/20 基础
第三周 865/200 3/2 20/20 逐渐深入

参考资料

  1. 第四章教学视频
  2. 使用JDB调试Java程序

20165223 《JAVA程序设计》第三周学习总结的更多相关文章

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

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

  2. 20165223《JAVA程序设计》第二周学习总结

    20165223 <JAVA程序设计>第二周学习总结 教材学习内容总结 第二章要点 标识符与关键字 基本数据类型 类型转换运算 输入输出数据 数组 第三章要点 运算符与表达式 语句概述 i ...

  3. 20165223《JAVA程序设计》第一周学习总结

    20165223 <JAVA程序设计>第一周学习总结 教材学习内容总结 通过网站JAVA第一章视频教程.教材.老师所给的教程及网上查询进行学习 第一章要点 JAVA地位和特点 地位:网络. ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. js原生实现div渐入渐出

    jq对渐入渐出进行封装,简单的使用连个方法就可以实现.fadeIn(),fadeOut();如果我们界面没有使用jq那么原生怎么实现呢? 我们讲解一下,这个原理.当我们要实现渐入的时候,首先是让隐藏的 ...

  2. React Native之FlatList的介绍与使用实例

    React Native之FlatList的介绍与使用实例 功能简介 FlatList高性能的简单列表组件,支持下面这些常用的功能: 完全跨平台. 支持水平布局模式. 行组件显示或隐藏时可配置回调事件 ...

  3. Laravel 5.6 模型关联 user 表后查询 user 表数据只能获取第一条数据,不知道怎么获取第二条

    按照开发手册的说法,肯定是指令不够全,附代码图 如果, tests 是文章表, users 是用户表 test.com/tests/1 是 id 为 1 的文章地址( get 访问) 假如 Tests ...

  4. org.elasticsearch.client.transport.NoNodeAvailableException

    SpringBoot连接elasticsearch异常 2018-09-11 16:03:43.692 ERROR 8684 --- [ main] o.s.boot.SpringApplicatio ...

  5. JS学习笔记 等于和包装对象

    严格等于 a===b 首先判断两边数据的类型,若类型不同,返回false. 若类型相同(1.2和1.2,字符串相等指内容和长度都是一样的),返回true null===null undefined== ...

  6. mysql 中出现:不能打开到主机的连接,在端口3306: 连接失败

    由于某种原因,在服务器部署,然后mysql就连接不上了, navicat查看数据库正常,telnet怎么都不同,总会卡一会儿说遗失主机,最后终于找到解决办法 http://www.51testing. ...

  7. k8s使用glusterfs做存储

    一.安装glusterfs https://www.cnblogs.com/zhangb8042/p/7801181.html 环境介绍; centos 7 [root@k8s-m ~]# cat / ...

  8. Js--动态生成表格

    <div>        <h1>动态生成表格</h1>        <div id="table1">            行 ...

  9. How to convert mkv to mp4 lossless

    ffmpeg -i example.mkv -vcodec copy -acodec copy example.mp4

  10. 包packages

    packages里面如何跨模块导入路径: print(dir()) 可以看到__file__ print(os.path.abspaht(__file__)) 可以看到当前绝对路径 import sy ...