20165223 《JAVA程序设计》第三周学习总结

教材学习内容总结

第四章是整个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程序

原文地址:https://www.cnblogs.com/moddy13162201/p/8596206.html

时间: 2024-08-02 02:48:50

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

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

20165223 <JAVA程序设计>第二周学习总结 教材学习内容总结 第二章要点 标识符与关键字 基本数据类型 类型转换运算 输入输出数据 数组 第三章要点 运算符与表达式 语句概述 if条件分支语句 switch开关语句 循环语句 break和continue语句 数组与for语句 教材学习中的问题和解决过程 标识符与关键字 标识符=名字:由字母.下划线.$.数字组成,长度不受限:第一个字符不能是数字字符:区分大小写:不能用关键字:不能是true.false.null java使用的语言:

20155336 2016-2017-2《JAVA程序设计》第二周学习总结

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

20145326蔡馨熠《Java程序设计》第一周学习总结

20145326蔡馨熠 <Java程序设计>第一周学习总结 教材学习内容总结 转眼间新的一学期终于开始了!为什么我这么期待呢?因为这学期可以上娄嘉鹏老师的java程序设计课,我不是什么电脑天才,之前c语言学得也不是特别好.可我就是对hdl和java特别感兴趣(之前在我的问卷调查报告里面提到过),并且寒假的时候在家里也预习了一部分java知识.第一周要求学习两个章节并作心得体会,虽然我早已看过前两章的知识,不过为了进一步巩固,我还是用了星期六一天的时间把第一章和第二章的知识从头到尾仔仔细细的看了

20155335 俞昆 2016-2017-2 《Java程序设计》第九周学习总结

学号 2016-2017-2 <Java程序设计>第九周学习总结 ##JDBC入门 在正式介绍JDBC前,已知JDBC是用来执行SQL的解决方案,开发人员使用JDBC的标准接口,开发人员不需接触底层数据库驱动程序的差异性. 本章,我们需要了解JDBC与API使用和概念,我们先要认识应用程序如何与数据库进行沟通,数据库本身是一种独立运行的应用程旭,程序员撰写的应用程序是利用通信协议对数据库进行指令交换,以进行数据的增加删除以及查找. 通常应用程序会利用一组专门与数据库进行通信协议的链接库,以简化

20145326《Java程序设计》第二周学习总结

20145326<Java程序设计>第二周学习总结 教材学习内容总结 本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,java是个支持面向对象的程序语言,但在正式进入面向对象支持语法的探讨前,对于类型.变量.运算符.流程控制等,这些各种程序语言都会有的基本语法元素,还是要有一定的基础.虽然各种程序语言都有这些基本语法元素,但千万别因此而轻忽它们,因为各种程序语言都有其诞生的宗旨与演化过程,对这些基本语法元素,也就会有其独有的特性. 1. 类型 在java的世界中,并非每个东西都

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

20145311 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1JDBC 16.1.1JDBC简介 JDBC(Java DataBase Connectivity)是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性. 厂商在操作JDBC驱动程序时,依方式可将驱动程序分为4种类型: ·Type 1:JDBC-ODBC Bridge Driver·Type 2:Native API

20165218 2017-2018-2 《Java程序设计》第一周学习总结

20165218 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一章.Java入门 1. Java特点 Java具有简单.面向对象.平台无关.多线程.动态等特点,其中平台无关是使它风靡全球的最重要的特点.平台无关指同样的Java指令在不同的平台上都可以运行,不受平台本身的机器码的影响.这是由于Java可以在计算机的操作系统之上在提供一个Java运行环境. graph LR A[Java语言]-->B[字节码] B-->C[机器指令] 2. 平台=O

20165324《Java程序设计》第一周学习总结

20165324<Java程序设计>第一周学习总结 教材学习内容总结 第一章:Java入门 重点一.编写Java程序 第一步编写源文件,(注:第一步中Java严格区分大小写:Java源文件的扩展名是*.java一般Java源文件名与类名一样.保存类型为所有文件.) 第二步编译,(注:第二步中使用Javac命令来编译源文件如: javac Hello.java 编译之后会生成一个字节码文件,字节码文件的文件名和类名相同,字节码文件的扩展名是*.class). 第三步运行,(注:第三步中使用jav

20165203 2017-2018-2 《Java程序设计》第一周学习总结

20165203 2017-2018-2<Java程序设计>第一周学习总结 教材学习内容总结 (一)Java的地位 Java是面向对象编程,并涉及网络.多线程等重要的基础知识,是一门很好的面向对象的语言. (二)Java的特点 简单 面向对象 平台无关 多线程 动态 (三)Java三大平台 Java SE Java EE Java ME (四)Java SE的四个组成部分 JVM: Java虚拟机,包含在JRE中 JRE:Java执行环境,运行Java程序必需 JDK: 包括JRK及开发过程中

20172318 2016-2017-2 《Java程序设计》第一周学习总结

20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一些Java的基本命令,学会了会编译.运行.调试简单的Java程序 教材学习中的问题和解决过程 问题1:教程有很多专有词汇,有时候实际操作完全不会 问题1解决方案:问舍友和课代表解决大部分问题,剩下的靠百度 代码调试中的问题和解决过程 问题1:写了个小程序发现无法上传 问题1解决方案:没有用cd链接 问题2:使