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

教材学习内容总结

  • 学习类的概念(类体,成员变量,方法)
  • 学会构造方法(默认和自定义构造方法)
  • 学会创建、使用对象(注意对象引用和实体)
  • 学会同目录下的文件源文件一起使用的方法(同时编译)
  • 学会参数传值
  • 学会对象的组合与复用
  • 学会区别实例变量和类便利
  • 了解方法重载(注意不要出现歧义)
  • 学会使用this关键字
  • 学会使用包
  • 学会import的用法(帮助包的使用)
  • 了解访问权限
  • 了解类封装,对象数组,JRE扩展与jar文件,文档生成器

学习重点

  1. 关键词:

    • class:定义类
    • new:新建一个对象(实例)
  2. 只要有一个类定义,编译程序就会产生一个.class文档。
  3. 标准类的使用:java.util.Scanner`:在“命令提示符”模式下取得用户输入
  4. 使用new关键词指定长度建立数组

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

  • 问题1:在刚学这一章的时候我完全搞不清楚(分不清)类,方法,对象的概念,之后我在知乎中找到一个我认为比较清楚的讲解,我把他的内容总结了一下:

  • 问题1解决方法:

    - 类=一个种类(class)的东西

    - 对象=属于该种类(类)的一个对象/物品

    - 方法=对这个种类的东西都可以进行操作

    - 比如:我有一辆汽车

          public class car{...}

    我把汽车命名为‘gu’

      car myCar = new car("gu")

    所有的汽车都可以加速(accelerate)和刹车(brake)

      public class car
    {
    void accelerate() {...}
    void brake(){...}
    }

    我可以指定我的汽车加速

      myCar.accelearte();

    我的朋友也有一辆汽车,也可以加速

      car pCar = new car("p");
    pCar.accelerate();
  • 问题2:关于实例变量和类变量,实例方法和类方法的区别,我在一开始学的时候感觉似懂非懂,我还是借助了百度,学了一下,做了一点总结(大部分来自原文)。

  • 问题2解决方法:

  • 实例变量(无static):

1.实例变量声明在一个类中,但在方法、构造方法和语句块之外;

2.当一个对象被实例化之后,每个实例变量的值就跟着确定;

3.实例变量在对象创建的时候创建,在对象被销毁的时候销毁;

4.实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方法获取实例变量信息;

5.实例变量具有默认值。数据型变量的默认值是0,布尔型变量的默认值是false,引用类型的默认值是null私有。。变量的值可以在声明时指定,也可以在构造方法中指定;

6.实例变量对于类中方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;

7.实例变量可以直接通过变量名访问。但在静态方法以及其他类中,九应该使用完全限定名:ObejectReference.VariableName

  • 类变量(静态变量)

1.类变量在类中以static关键词声明,但必须在方法、构造方法和语句块之外。

2.无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。(我对这句话的理解是类变量只占一个内存,并且共享)。

3.静态变量除了被声明为常量外很少使用。常量是指声明为public、final和static类型的变量。常量初始化后不可改变。

4.静态变量储存在静态储存区。经常被声明为常量,很少单独使用static申明变量。

5.静态变量在程序开始时创建,在程序结束时销毁。

6.与实例变量具有相似的可见性。

  • 实例方法与类方法对实例变量和类变量的访问

实例方法可以对当前对象的实例变量进行操作,也可以对类方法进行操作。实例方法由实例对象调用。

类方法不能访问实例变量,只能访问类变量。类方法由类名或者实例对象调用。类方法不能出现this或者super关键字。

  • 问题3:普通方法和构造方法的区别是什么?
  • 问题3解决办法:

与一般方法相比,构造方法的特点是:

1.构造方法的名称总和它的类名一致。

2.构造函数没有返回值,即不可以为它指定任何类型的返回值。(学到这里我明白了为什么我之前改了对象名称没有改构造方法时报错:没有返回类型)。

3.在构造函数的第一条语句中,可以调用同类的另一个构造函数或者父类的构造函数。

4.构造函数不能由编程人员显示地直接调用。

5.构造函数的主要作用是完成对类对象的初始化。

  • 问题4:java语言类库中的包是如何使用的?
  • 问题4解决办法:首先我在书中学到类库中的包需要用import作为接口来使用,,然后书上介绍了六种包,我通过百度完善了一下,也解决了我上一篇博客中的一些问题。
  1. java.lang包。

    该包提供了Java语言进行程序设计的基础类,它是默认导入的包。该包里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable类需要重点掌握,因为它们应用很广。

2.java.util包

该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。

3.java.io包。

该包通过文件系统、数据流和序列化提供系统的输入与输出。

4.java.NET包

该包提供实现网络应用与开发的类。

5.java.swing包

这两个包提供了GUI设计与开发的类。java.awt包提供了创建界面和绘制图形图像的所有类,而javax.swing包提供了一组“轻量级”的组件,尽量让这些组件在所有平台上的工作方式相同。

说实话这些我是没有看懂的,只是知道了有这些包,然后在课本代码中见过java.util的包,剩下的在学习他们的时候再学吧。

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

  • 问题1: 如图,在bin文件夹外无法运行程序。
  • 问题1解决方法:进入bin文件夹后可以运行


  • 但是,我总觉得在根目录里是可以运行的,于是我在询问之下找到了解决办法java -cp .: ch4.hello.nihao.p91,如下图,这样是可以运行成功的。

  • 问题2:关于多个类相互调用(使用)的问题:需要同时编译javac *.java的文件,当这些文件放在大文件夹之下无法编译成功,会显示无法找到类,同时无关程序也出现报错。(无截图)

  • 问题2解决方案:

方法一:把需要相互使用的java文件放在新建文件夹之下,然后javac *.java时,可以成功。

方法二:将需要同时编译的文件名加前缀,我在命名文件时以代码页数命名,如p90_1.java,p90_2.java,所以我在编译时需要输入javac p9*.java就可以在src/ch4里编译成功。当然,按照老师说的,类名要有意义,我这样的方法是不好的。但是,可以在原类名(有意义)前加a(或其他字母)这样就可以类名既有意义,又方便编译。

代码托管

总结

本周的学习内容的难度明显增加了,前三章学习的时候还可以说与c语言类似,但第四章开始,完全是java的知识,包括初次学习面向对象,方法,类等知识都比较抽象,在听网课的时候老师画图解释的方法我是很受用了。边敲代码边学习也是一种很好的方法。但是还是有很大一部分内容搞不懂,有许多刚接触的东西,不能掌握,我只好借助百度来学习。好在这周在上传代码方面已经没有了问题可以顺利进行了。

还有一个我刚发现的问题是我在统计代码时每git push一次,code summary information就会减少,暂时不知道是 什么原因。

20165205 2017-2018-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. 20165205 2017-2018-2 《Java程序设计》 第二周学习总结

    20165205 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 学习第二章知识(标识符,关键字,数据类型,输入.输出数据和数组) 学习第三章知识(运算符,基 ...

  4. 20165205 2017-2018-2 《Java程序设计》第九周学习总结

    20165205 2017-2018-2 <Java程序设计>第九周学习总结 教材学习内容总结 掌握URL类的使用方法 URL类的构造方法: public URL(String spec) ...

  5. 20165205 《Java程序设计》第一周学习总结

    20165205 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 安装JDK1.8,Git(在虚拟机内) 了解Git的使用方法 学习了vim的使用方法(很难) ...

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

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

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

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

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

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

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

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

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

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

随机推荐

  1. MySQL程序之mysqldump详解

    mysqldump命令详解 mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等 用法: ...

  2. Hiero扩展工具包开发小结

    写了两个月,Hiero扩展工具包终于完成了,包括了7个扩展内容,从Tags的扩展到TranscodeImage任务的检查再到版本的搜索,还有新Token的创建,算是对Hiero原生程序做了一个补充,提 ...

  3. 黄聪:PHP代码获取客户端IP地址经纬度及所在城市

    echo $_SERVER['HTTP_HOST']; //echo $_SERVER['REQUEST_URI']; $getIp=$_SERVER["REMOTE_ADDR"] ...

  4. RTB业务知识之2-Impression概念和关键属性

    一.定义-impression This object describes an ad placement or impression being auctioned. A single bid re ...

  5. 日志框架学习(log4j2+slf4j)

    现在比较吊的就是这个log4j2这个日志框架了,功能强悍.slf4j是个日志框架的统一接口,方便扩展,切换框架啥的. 配置SSM+log4J2+SL4J https://blog.csdn.net/c ...

  6. ALGO-140_蓝桥杯_算法训练_P1101

    有一份提货单,其数据项目有:商品名(MC).单价(DJ).数量(SL).定义一个结构体prut,其成员是上面的三项数据.在主函数中定义一个prut类型的结构体数组,输入每个元素的值,计算并输出提货单的 ...

  7. Kubernetes DNS服务配置案例

    首先创建DNS服务的RC配置文件skydns-rc.yaml apiVersion: v1 kind: ReplicationController metadata: name: kube-dns-v ...

  8. 廖雪峰Java3异常处理-1错误处理-4自定义异常

    JDK已有的异常: RuntimeException * NullPointerException * IndexOutOfBoundsException * SecurityException * ...

  9. Jmeter(十四)Logic Controller 之 If Controller

    If Controller---如果控制器:属于逻辑判断类型的组件,其实学过代码的都知道if--else,while等都是常用的逻辑判断关键词,Jmeter也提供了逻辑判断--If Controlle ...

  10. [UE4]给Widget增加参数,Pre Construct和Construct的区别

    使用Pre Construct事件可以在编辑器中实时显示出选择的背景图片. 如果使用的是“Construct”事件则只能在游戏运行时把图片显示出来.