• 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
  • 相关阅读:
    在二元树中查找和为某一值的所有路径
    求整数的二进制表示1的个数
    Javascript AJAX 解析XML 兼容FIREFOX/IE
    DOM解析XML笔记
    Linux c 共享内存
    C Socket 发送/接收数据结构
    Linux c 获取系统内存
    7.5备忘
    linux c 唤醒进程 获取子进程结束状态
    7.1-7.2备忘
  • 原文地址:https://www.cnblogs.com/KY-high/p/8597462.html
Copyright © 2020-2023  润新知