Java基础

来源:互联网 发布:matlab 矩阵 pdf 编辑:程序博客网 时间:2024/04/29 07:13

只有记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有abstract方法。

抽象类和接口的区别:

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4. 抽象类中的抽象方法的访问类型可以是publicprotected和(默认类型,虽然

eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5. 抽象类中可以包含静态方法,接口中不能包含静态方法

6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

7.一个类可以实现多个接口,但只能继承一个抽象类。

内部类:

内部类就是在一个类的内部定义的类,内部类中不能定义静态成员;

内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中;

在方法体外面定义的内部类的访问类型可以是public,protecte,默认的,private4种类型,这就好像类中定义的成员变量有4种访问类型一样,它们决定这个内部类的定义对其他类是否可见;

在方法内部定义的内部类前面不能有访问类型修饰符,

static nested class:

Static Nested Class与普通类在运行时的行为和功能上没有什么区别,外面引用Static Nested Class类的名称为“外部类名.内部类名”。在外面不需要创建外部类的实例对象,在静态方法中定义的内部类也是Static Nested Class,这时候不能在类前面加static关键字,静态方法中的Static Nested Class与普通方法中的内部类的应用方式很相似,它除了可以直接访问外部类中的static的成员变量,还可以访问静态方法中的局部变量,但是,该局部变量前必须加final修饰符。

方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调super.getClass().getName()方法

String类是final类故不可以继承。

String s = new String("xyz");创建了几个String Object? 

两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它依据那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。

String StringBuffer的区别:1、string和stringbuffer都是存字符串的,但string字符串是不可改的,而stringbuffer可以修改,2、String实现了equals方法,而stringbuffer没有。

下面这条语句一共创建了多少个对象:Strings="a"+"b"+"c"+"d";

1个,字符串+编译时,会去掉,直接拼接成字符串,没有去创建对象。

Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。

finally中的代码比returnbreak语句后执行。

Throwable下面又派生了两个子类:ErrorExceptionError表示应用程序本身无法克服和恢复的一种严重问题,程序只有死的份了,例如,说内存溢出和线程死锁等系统问题。Exception表示程序还能够克服和恢复的问题,其中又分为系统异常和普通异常,系统异常是软件本身缺陷所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件死掉;普通异常是运行环境的变化或异常所导致的问题,是用户能够克服的问题,发生这样的异常后,程序不应该死掉。

runtime exception:ArrayIndexOutOfBoundsException,StringIndexOutOfBoundsException,NullPointerException,ClassCastException,IllegalArgumentException,NumberFormatException.







0 0
原创粉丝点击