美文网首页
java重点知识的学习心得:

java重点知识的学习心得:

作者: Girl_endless | 来源:发表于2015-12-14 09:59 被阅读290次

    封装与隐藏性:

    当我们定义一个对象调用一个属性的时候,有可能这个属性不满足我们日常的要求,比如动物的legs,所以我们可以在方法中对这个属性进行限制,调用对象的方法,同时将属性类型改为private,这便叫做封装。

    一般有两个特点,一个是私有化属性,一个是setter/getter方法。

    封装的好处是,隐藏实现的细节,更易于维护,更安全。

    类就是一个封装体,封装了属性和方法。


    继承:extends

    当多个类(student,teacher,worker...)中,都包含多个类似的属性方法时,则每个类中都需要重复的声明这些属性方法,这时则可以把这些类似的东西封装到一个类(person)中,其他几个类extends该共有类。

    子类继承了父类的方法,并对父类的方法进行改造,则称为方法重写、覆写或者覆盖。

    子类继承了父类的属性 方法 构造函数。


    多态性:

    多态是一种编程技巧,它增加论了程序的可扩展性

    比如你要做个篮子放水果,你当然不希望造这样的篮子--苹果篮子,橘子篮子,梨篮子,正常人都会想,麻烦啊,我就造个篮子,什么都能放,干嘛造那么多啊?

    回归程序:你造个篮子 basket();参数是水果 fruit,这样你调用的时候就可以这样 basket(fruit f);然后往里放苹果啊,梨啊,什么都行,只要是水果类的子类

    好处:这样设计你的程序,等你的参数变了的时候,只要还是水果,你就不用去改程序了,这就是可扩展性的体现

    class TestInstance{

    public static void main(String[] args) {

    }


    public void info(Person p){ //多态性

    p.walk();

    }

    }


    为什么要有包装类?

    答:由于基本数据类型并不是类,所以不能够使用java类库里提供的大量方法。所以我们在程序设计上,让每一个基本数据类型都对应一个类,同时数据存储的范围还不变。这时就相当于基本数据类型具有了类的特点。这些类即为包装类(wrapper或封装类)

    1、基本数据类型与对应的包装类有自动装箱、自动拆箱

    如:int i = 10;

          Integer i1 = i;//自动装箱

          int i1 = i;//自动拆箱

    2、基本数据类型、包装类---->String类:调用String类的重载的valueOf(Xxx xx)方法 ;

    String类---->基本数据类型、包装类:调用相应的包装的parseXxx(String str);

    注:由于String类与int基本数据类型之间没有任何关系,所以他们之间不存在强制转换。

    例如:String str = "123";

              int i = (int) str;//是错误的



    为什么重写equals()方法?

    答:object类自带的equals()方法比较的是两个对象的地址值是否相等,但是两个不同对象在堆空间中的地址值肯定不同,并且很多时候我们需要比较的是两个对象的属性值是否相同,所以需要重写equals()方法。


    为什么重写toString()方法?

    答:一般情况下,调用object默认的toString方法会输出”该对象所在的类@该对象实体所在堆空间中的位置“;

    但是实际中,我们希望输出的是该对象的所有属性值。所以要对toString()方法进行重写。可以自动调用生成该方法。

    注:toString()方法不能够写成静态的,因为子类重写父类的方法,要跟父类状态一致,因为object父类没有static,所以子类也不可以有。并且toString()方法里面有使用实例变量,所以不行,另外静态方法只能调用静态属性。


    为什么要有static静态关键字,有什么用途?


    代码块的作用?

    答:代码块是类的第四个成员,用来初始化类的属性。只能用static来修饰,分为静态代码块与非静态代码块。


    为什么使用final关键字,什么样的方法适合用final修饰?

    答:final可以修饰属性、方法、类,

    修饰方法的时候:说明该方法并不需要再被子类重写了;

    修饰类的时候:表示这个类不需要再被继续


    为什么要使用抽象类?

    抽象类是用来模型化那些父类无法确定全部实现,而是通过子类提供其全部实现的对象的类。例如父类是几何图形,任何几何图形都有不同的面积计算方法。所以在父类中做个抽象的定义,在每一个子类中重写该计算面积的方法。


    java中的继承方面具有怎样的特性/特点?(类和类、类和接口、接口和接口)

    java中的类是单继承;java还定义了接口,它是一个功能,可以让类去实现接口,这个实现是可以多实现的;同时接口与接口之间也是继承关系,这个继承是可以多继承的。

    (java中类和类的继承是单继承的,一个类只能有一个父类;而类和接口之间属于多实现,类可以实现多个接口;接口和接口之间属于多继承,一个接口可以继承多个接口。)


    使用接口有什么好处?

    答:通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。

    通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩张功能。

    接口主要用来定义规范。解除耦合关系。


    java的异常事件分为几类,分别是什么?

    答:java程序在执行过程中所发生的异常事件可分为两类:

    1.Error:java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重状况。一般不编写针对性的代码进行处理。

    2.Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。如:空指针访问、试图读取不存在的文件、网络连接中断

    |----编译时异常:在编译期间会出现的异常(执行javac.exe命令时,出现异常)

    |----运行时异常:在运行期间出现的异常(执行java.exe命令时,出现的异常)(文件找不到、IO异常... )。


    指出throw和throws的区别?

    答:对于异常--抓抛模型,抛异常的时候,分为手动抛和自动抛,自动抛比如文件不存在,IO异常之类的,而手动抛需要自定义一个异常。但是不管是手动抛出还是自动抛出,最后我的异常都需要处理,即所谓的抓。抓分为throws或者是try-catch。抓抛各分为两种,可以自己组合,比如方法里可以一直throws,放到main方法中进行统一处理,也可以现场就try-catch处理掉。

    【java提供了两种异常处理(抓)方式,一种是try-catch-finally,主动抛出异常,另外一种是在方法定义的时候,throws方法,一级一级逐层向上抛出异常。

    而异常的抛出又分为两种(抛)方式,一种是自动抛出异常对象,一种是手动抛出异常对象,手动抛出的时候是throw方法。  throw new Exception(“...”);自动抛出的异常如文件不存在或者IO异常等等。】


    java中的各种流:

    按照的通的分类方法可以分成不同的类。

    按照操作数据单位不同,分为:字节流(1 byte = 8 bit),字符流(2 byte = 16 bit);

    按照数据流的流向不同,分为:输入流,输出流;

    按照流的角色不同,分为:节点流,处理流

    字节流:FileInputStream、FileOutputStream,可处理文本、非文本文件(建议非文本文件使用)

    字符流:FileReader、FileWriter,只能处理文本文件(建议文本文件使用)

    节点流:FileInputStream、FileOutputStream、FileReader、FileWriter,除这几种之外,均为处理流。

    缓存流:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter,缓冲流是处理流的一种,与名字与上述节点流一一对应。

    **实际的开发中,一般都用缓冲流,而不用节点流,因为其效率高**

    **对于.doc的文件应该使用字节流,而不能使用字符流,因为里面虽然是字符,但是可以插入各种图片,表格之类的。使用字符流会乱码**

    **解码:**字节数组到字符串

    **编码:**字符串到字节数组




    相关文章

      网友评论

          本文标题:java重点知识的学习心得:

          本文链接:https://www.haomeiwen.com/subject/lhtshttx.html