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

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

教材学习内容总结

4.1 编程语言的几个发展阶段

  • 称过程语为高级语言。
  • 面向对象编程的几个特性:封装型、继承、多态。
  • 继承:子类可以继承父类的属性和行为。
  • 多态:分为操作名称的多态(多个操作具有相同的名字)、和继承有关的多态(同一个操作被不同类型对象调用时可能产生不同的行为)。
  • 属性通过变量來刻画,行为通过方法来体现。

定义理解

  1. 类包括类声明和类体,类声明 class 类名(类的名字要符合标识符规定)。
  2. 类体内容:包括变量的声明和方法的定义。
    所声明的变量包括成员变量和域变量。
  3. 如果局部变量的名字与成员变量的名字相同,则隐藏成员变量。若要使用需 this.成员变量
  4. 在使用局部变量前必须保证局部变量有具体的值。
  5. 注意事项:类体中对于成员变量的操作只能出现在方法中。在类中

int a=12 是合法的



int a;

a=12;是不合法的

  1. 一个源文件中的类可以被多个java程序使用,

对象

  1. 由类声明的变量被称作对象变量,简称对象。
  2. 对象的声明:类的名字 对象名字
  3. 创建对象:

类中没有构造方法的:

XiYouJi zhubajie;声明对象

zhubajie = new XiYouJi();为对象分配变量

定义了构造方法的:

XiYouJi zhubajie;声明对象

zhubajie = new XiYouJi(10,20);为对象分配变量

  1. new XiYouJi()是一个值,把该引用赋值给了zhubajie
  2. 使用对象:对象.变量访问自己的变量体现属性;对象.方法调用类中的方法体现行为
  3. 对象的实体:指分配给对象的变量
  4. 注意:不能使用空对象去调用方法产生行为;一个类声明的两个对象如果有相同的引用就具有完全相同的变量,即完全相同的实体。

方法

  1. 无参数的方法头int speak(),有参数的int add(int x,int y,int z)
  2. 方法在理解上类似于C语言中的函数。
  3. 构造方法:名字必须与它所在类的名字相同,而且没有类型,如Point(){},一个类中可以有若干个构造方法,但必须保证参数的个数不同,或参数列表中对应的某个参数的类型不同。
  4. 一个类中可以有不同个方法。

可变参数

  1. 是在声明方法的参数列表中给出的不确定个数的参数,参数类型必须相同,如 public void f(int ...x),x为参数代表。

public void g(double a,int ...x)是合法的

public void g(int ...x,double a)是不合法的

  1. x.length等于x所代表的参数的个数
  2. 可变参数的for循环 for(声明循环变量:参数代表)

实例成员与类成员

  1. 实例变量和类变量:static 修饰的为类变量,也称静态变量
  2. 实例方法和类方法:static 修饰的为类方法,也称静态方法
  3. 实例方法可以操作实例变量、类变量。类方法可以操作类变量

this

this可以出现在实例方法和构造方法中,不可出现在类方法中。

构造方法:this代表使用该构造方法创建的对象。

实例方法:this代表正在调用该方法的当前对象。

this.实例成员变量this.实例方法

类名.static成员变量类名.类方法

this和类名通常可省,但当局部变量和实例成员变量的名字相同时,均不可省。

package

  1. 建立包是为了当不同的源文件中包含名字相同的类的情况时,便于区分这些类。
  2. 包的创建: package 包名
  3. 编译运行:
    因为package类运行要求:源文件编译得到的类的字节码文件的保存目录必须包含包名。

举例说明:package 20165208.ky;

则存储文件目录必须包含...20165208ky;

所以可以利用以下两种方法实现

  1. 利用 javac -d 路径 文件.javajava -cp .:路径 包名.文件名

    相当于去指定路径下编译生成字节码文件
  2. 利用 mkdir 目录mv 字节码文件 目录java 目录.Hello

    在原有目录编译后,人为创建同包名目录,将字节码移入该目录下。

import语句

  1. 用于引用在其他包中的类,必须写在package语句和类的定义之间。
  2. 引用java.util包中全部的类import java.util.*,引用java.util包中的Date类import java.util.Date.
  3. 除了import语句引入,还可以直接带着包名使用该类。如java.util.Date date =new java.util.Date():
  4. 引入非类库中有包名的类import 包名.*
  5. 注意:程序使用的的自定义的包名所形成的目录应放在同一文件夹中。

访问权限

  1. 友好变量:不用private、public、protected修饰的变量。
  2. 访问权限从高到低:public、protected、友好的、private

对象数组

即数组的元素是对象

Student [] stu;//定义每个元素都是Student类型的对象
stu = new Student[10]//定义数组stu有10个元素
stu[0]=new Student()//创建数组所包含的对象

注意事项

  1. 编译某个目录下的全部java源文件应如 javac -d bin src/ex4.1/*.java
  2. 向方法参数传递的值的级别不可以高于该参数的级别。

其他

  1. java引用型数据包括数组、对象、接口。
  2. 若A类中的成员变量是用B类声明的对象,则A、B是关联关系。
    若A类中某个方法的参数是用B类声明的对象或某个方法返回的数据类型是B类对象,则是依赖关系。
  3. 方法重载:行为的多态性就是方法的重载。一个类中可以有多个方法具有相同的名字,但这项方法的参数必须不同(个数不同或者对应的某个参数的类型不同)
    如果两个方法的名字相同,即使返回类型不同,也必须保证参数不同。

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

  • 问题1:有关教材中4.15所讲的例子,按照操作步骤进行能得到jar文件,但是在虚拟机中找不到jrelibext,尝试将压缩包放到相近路径下,运行失败。

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

  • 问题1:

  • 问题1解决方案:问题出现是因为没有考虑到package包的运行,直接在bin文件下javac操作导致找不到主类,按图中更改后即可运行

  • 问题2:

  • 问题2解决方案:

  • 问题3:

  • 问题3解决方案:调试如图

代码托管

上周考试错题总结

  • >>>为无符号位右移,>>为带符号位右移,区别在于移位空出来位置,带符号位的全部需要用符号位补齐。
  • if关键字后面的小括号内,表达式的值可以为10。这句话是错的。表达式是指整个式子,不应理解为if(a==10).
  • 3* 2^2的结果并非12,而是4,我理解的是优先运算3*2,再与2进行异或。
  • 0xaa转化为二进制应为10101010

参考资料

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 36/36 4/4 30/30
第二周 464/500 1/5 18/48
第三周 331/881 2/7 17/65
原文地址:https://www.cnblogs.com/KY-high/p/8597462.html