软考--J2SE

        J2SE视频着重讲解了java基本语法,本次学习掌握了java的基本语法规则,对面向对象以及死锁现象都有了更深层次的了解。本博文主要对面向对象,容器,流做出讨论。

【总体回顾】


        任何语言的学习都是由数据和程序两部分组成,数据主要区分的是不同数据类型在何时使用,所占用的内存空间是多少以及数据类型转换。java的数据类型主要分为基本数据类型和引用类型两方面,引用数据类型是分配在堆空间的数据。数据类型转换遵循字节数小的向字节数大的类型转换可自动转换,字节数大的向字节数小的转换,则需要强制类型转换机制,且数据准确度降低,字节由小到大数据类型顺序为:byte,short,char->int->long->float->double


       程序要考虑的三大结构:选择,顺序,循环。Java程序在执行过程中不得不考虑的一个重要因素是错误处理机制:

                         
         RuntimeException是运行时错误,出现频繁,由系统自动检测并将他们交给特定的异常处理程序,不需要我们去捕获,error有Java虚拟机生成并捕获,程序也不需要做处理。

        错误处理过程中遵循先捕获小异常然后再捕获大异常,小异常详细具体,先捕获大异常的情况下,小异常就会被忽略不计。

【面向对象】

       不同的学习阶段对面向对象都有不一样的理解,首先我们先对两个个易混概念做一下区分:

       重载:方法名相同,但传进的参数不同,在调用时根据不同的参数选择不同的方法,最常用的是构造函数,用户往往需要引用不同的参数来建立对象,实例化过程中引用的构造函数就要多种多样了。

       重写:方法名,参数,返回数据类型均一致,实现方法体不一样。多用于类的继承和接口实现,抽象方法,子类继承父类,必须要求重写。

       动态绑定:在执行期间(非编译期间)判断所引用对象的实际类型,根据实际类型调用相应的方法。 
                                                
abstract class Animal {
  private String name;
  Animal(String name) {this.name = name;}
  /*
  public void enjoy(){
    System.out.println("叫声......");
  }
  */
  public abstract void enjoy();
}

abstract class Cat extends Animal {
  private String eyesColor;
  Cat(String n,String c) {super(n); eyesColor = c;}
  /*
  public void enjoy() {
    System.out.println("猫叫声......");
  }
  */
  //public abstract void enjoy();
}

class Dog extends Animal {
  private String furColor;
  Dog(String n,String c) {super(n); furColor = c;}
 
  public void enjoy() {
    System.out.println("狗叫声......");
  }
}

class Bird extends Animal {
	 Bird() {
	 	 super("bird");
	 }
	 public void enjoy() {
    System.out.println("鸟叫声......");
  }
}

class Lady {
    private String name;
    private Animal pet;
    Lady(String name,Animal pet) {
        this.name = name; this.pet = pet;
    }
    public void myPetEnjoy(){pet.enjoy();}  //Lady内引用的只是pet的enjoy方法
}

public class Test {
    public static void main(String args[]){
        Cat c = new Cat("catname","blue");
        Dog d = new Dog("dogname","black");
        Bird b = new Bird();
        Lady l2 = new Lady("l2",d);  
        Lady l3 = new Lady("l3",b);
        l2.myPetEnjoy();    //输出为dog的叫声
        l3.myPetEnjoy();    //输出为bird的叫声
    }
}
    
         在Lady类内只使用了pet的enjoy()方法,但输出根据实际类型返回子类dog和bird的enjoy方法,实现动态绑定。

【容器】

        引用数据类型--对象存在堆内,用同一类实例化的对象大量的分散在内存中,程序调用过程是相当复杂的,因此提出容器的概念,来盛放这些对象引用。另外,这些容器引用要能够提供方便的遍历,查询和修改接口。

       java中提供丰富的容器接口,满足用户多样化需求:
                                 

        set容器装元素,不能重复,且没有顺序
        
        List可重复,有顺序。

        Map是一对一对的往里装。
     
        详细学习内容可参考:《java中的容器

【流】

        流是对输入输出设备的抽象,这个设备可以是文件,内存,网络。流是有方向的,从程序流向设备,称为输出流,从设备流向程序叫做输入流。

       在java.IO包中分为字节流(InputStream输入流  outputStream输出流)和字符流(Reader输入流,writer输出流)两种。
                        
         Java中数据的输入输出都是以流的方式进行。

【总结】

         阶段性用思维导图的方式对学习的内容进行整理,便于形成知识网,在以后的学习中要不断实践,不断总结,达到颗粒归仓的效果。

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值