zoukankan      html  css  js  c++  java
  • 20155208徐子涵 2016-2017-2 《Java程序设计》第3周学习总结

    • 20155208徐子涵 2016-2017-2 《Java程序设计》第3周学习总结

      教材学习内容总结

      第四章 认识对象

      4.1 类与对象

      •对象(Object):存在的具体实体,具有明确的状态和行为

      •类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制

      •从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象

      •从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction)

      •类是对象的设计图,对象是类的实例,生成对象要先定义类。类定义时使用class关键词,建立实例要使用new关键词。以类名称声明的变量,称为参考名称、参考变量或直接叫参考。

      •一个原始码中可以有很多个类定义,但只能有一个是公开类,且文档中的主文档名必须与公开类名称相同。只要有一个类定义,编译程序就会产生一个.class文档。

      •对象指定与相等性:

      当=用于基本类型时,是将值复制给变量,当==用于基本类型时,是比较两个变量储存的值是否相同。

      当你在操作对象时,=是用在指定参考名称参考某个对象,而==是用在比较两个参考名称是否参考同一对象。

      注意:别使用==或!=来比较两个对象实质内容值是否相同,要使用equals()

      class Clothes{
      String color;
      char size;
      }
      public class Field{
      public static void main(String[] args){
          Clothes sun = new Clothes();
          Clothes spring = new Clothes();
      }
      }

      这一代码就是面向对象知识的简单举例。

      4.2基本类型打包器

      • 要使基本类型如同对象一样操作,可以使用Long、Integer、Double、Float、Boolean、Byte等类型打包。

      4.3数组对象

      •在Java中,数组是对象。

      •与C语言不同,Java需要检查数组边界,越界会触发ArrayIndexOutOfBoundsException异常。

      •无论System.arraycopy()还是Arrays.copyof(),用在类类型声明的数组时,都是执行浅层复制。

      class Clothes {
      
      	String color;
      
      	char size;
      
              }
      
      
      
      
      
      public class Field {
      
      	public static void main(String[] args) {
      
      	Clothes sun = new Clothes();
      
      	Clothes spring = new Clothes();
      
      	sun.color = "red";
      
      	sun.size = 'S';
      
      	spring.color = "green";
      
      	spring.size = 'M';
      
      	System.out.printf("sun (%s, %c)%n", sun.color, sun,size);
      
      	System.out.printf("spring(%s, %c)%n",spring.color, spring.size);
      
      	}
      
           }

      4.4字符串对象

      •在Java中,字符串是java.lang.String实例,用来打包字符数组。

      •在Java中,以""包括的字符串,只要内容相同(序列、大小写相同),无论在代码中出现几次,JVM都只会建立一个String实例。

      class Clothes3 {
      
      	String color;
      
      	char size;
      
      	Clothes2(String color, char size) {
      
      	this.color = color;
      
      	this.size = size;
      
      	}
      
      }
      
      public class Field2 {
      
      	public static void main(String[] args) {
      
      	Clothes2 sun = new Clothes("red",'S');
      
      	Clothes2 spring = new Clothes2("green", 'M');
      
      	System.out.printf("sun (%s,%c)%n", sun.color, sun.size);
      
              System.out.printf("spring (%s,%c)%n", spring.color, spring.size);
      
      	}

      第五章 对象封装

      5.1 封装概念

      •封装(Encapsulation)实际上使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作。

      通过构造方法(构造函数)封装初始化流程

      通过成员方法(函数)封装操作

      通过成员变量封装数据

      5.2类语法细节

      •如果没有声明权限修饰的成员,只有在相同包的类程序代码中才可以直接存取,也就是“包范围权限”。如果想在其他包的类程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,在Java中要使用public加以声明。

      •如果定义类时,没有撰写任何构造函数,编译程序会自动加入一个无参数、内容为空的构造函数,称为默认构造函数。可以定义多个构造函数,只要参数类型或个数不同,这称为重载构造函数。

      •在Java中,this()代表了调用另一个构造函数,且this()调用只能出现在构造函数的第一行。

      •被声明为static的成员,不会让个别对象拥有,而是属于类。

      •以类命名实例来说,首字母是大写,以static使用习惯来说,是通过类名称与“.”运算符来存取。

      •在static方法或区块中不能出现this关键字。static方法中不能用非static数据或方法成员。

      •使用import static语法要注意名称冲突问题,有些名称冲突编译程序可通过以下顺序来解析。

      局部变量覆盖:选用方法中的同名变量、参数、方法名称。

      成员覆盖:选用类中定义的同名数据成员、方法名称。

      重载方法比较:使用import static的各个静态成员,若有同名冲突,尝试通过重载判断

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

      问题:

      由于以前学的C语言中for循环语法都是:

      for(初始式;执行结果必须是boolean的重复式;重复式){

      描述句;

      }

      所以当看到书上p96页的for循环语法时(具体语句如下),便感到很难理解。

      for(int score:scores){

      System.out.printf("学生分数:%d %n",score);

      }

      解决过程:

      通过反复看书上的解释和上网查找资料,我知道了该语法是增强式for循环,执行结果其实与以前学的for循环语句相同 ,但是编写代码时会更简洁方便。其具体执行过程是:上面的程序片段取得scores数组第一个元素,指定给score变量 后执行循环体,接着取得scores中第二个元素,指定给score变量后执行循环体,依次类推,直到scores数组中所有 元素都访问完为止。

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

      问题: 命令提示符中不能显示中文字

      解决方法: 后来上网查发现要在Editplus里面设置文件编码为ANSI格式,然后直接保存还是不能正常显示中文,必须重新写一个JAVA程序才能实现。

    •  

      其他(感悟、思考等,可选)

      我感觉这周的学习任务比较多,教材上两章有80多页,看起来也有一点困难,有些知识是第一次接触,弄了好久才弄懂,而且还留存了一些问题,和室友讨论之后才基本弄懂,不过我还是会坚持下去的。

      学习进度条

       代码行数(新增/积累)博客量(新增/积累学习时间(新增/累积)
      目标 5000行 30篇 400小时
      第一周 16/16 1/1 8/8
      第二周 120/120 2/2 12/12
      第三周 130/150 1/1 9/9

      参考资料

  • 相关阅读:
    C语言函数qsort的使用方法
    成绩打分
    distance.c
    留学生题目
    6大排序算法比较
    小游戏得分[石头剪刀布]
    二叉排序树算法
    头文件相关
    小型考试系统
    小题目【链表1】
  • 原文地址:https://www.cnblogs.com/xuzihan/p/6539395.html
Copyright © 2011-2022 走看看