·JAVA小结

1.面向对象的特征有哪些?详细描述各自的特点。

  1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

  2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

  3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

  4. 多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

 

2.Java程序的执行过程是怎样的?

         Java源文件(.java软件)经Java编译器编译生成Java字节码文件(.class文件),字节码文件经过类加载器加载,然后由字节码校验器校验,接下来经由解释器或者即时翻译器生成本地代码,最后在操作系统平台运行。

 

3.什么是静态初始化块?

         初始化块是指在一个类中,用来对实例变量作初始化的语句块。它在每一次构造对象时被执行且比构造器先执行。

所谓静态初始化块是指在一个类中,用static 修饰的语句块,或者说加了static的初始化块。它用来对类变量(static变量)作初始化。它不能非静态的实例变量(非static变量)作处理。它在第一次加载类时(类名第一次出现时)被执行且只执行一次;与对象的创建无关。 

 

4.写出main方法的完整定义?static可以写在public前面吗?

  public static void main(String[] args){}

  其中static 可以放在public前面。

 

5.JDK与JRE分别是什么?

         jre是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。 jdk就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。

 

6. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

         switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

 

7.Java的数据类型有哪些?

         八种基本数据类型,分别是:boolean byte short char int long float double。

         三种引用数据类型,分别是:数组,类,接口。

 

 

8.Java引用数据类型有哪些?

  类、接口类型、数组类型。

 

9.类变量与成员变量的区别?

  成员变量:在类体的变量部分中定义的变量,也称为属性。成员变量又称全局变量,定义在类中,和类的方法处于同一个层次。成员变量的语法如下:变量修饰符 类型 变量名;

  类的实例变量和静态变量称为类属变量(class‘s variables,常称为类变量)或数据域。在java中,实例变量和静态变量也称为类属性。

10.访问修饰符有哪几种?它们之间的区别是什么?

  public 可以被任何类访问

  protected 可以被同一包中的所有类访问 可以被所有子类访问 子类没有在同一包中也可以访问

  private 只能够被当前类的方法访问

  缺省(无访问修饰符) 可以被同一包中的所有类访问 如果子类没有在同一个包中,也不能访问

 

11.int与Integer的区别?

         int是基本的数据类型,直接存数值,Integer是int的封装类。Integer 是对象,用一个引用指向这个对象;Integer 是一个类,是int的扩展,定义了很多的转换方法。 int和Integer都可以表示某一个数值; int和Integer不能够互用,因为他们两种不同的数据类型。

 

12.对对象进行比较怎么做?为什么不用“= =”?

  ==是判断两个变量或实例是不是指向同一个内存空间。

  equals是判断两个变量或实例所指向的内存空间的值是不是相同。

 

13.this、super的用法与区别?

  this有三种用法:1、使用this关键字引用成员变量:this.成员变量。

          2、使用this关键字引用当前对象。

          3、使用this关键字调用构造方法: this (参数列表);  

 

  super关键字的使用方法也有三种: 1、super (参数列表)   //调用父类的构造方法

                  2、super.方法名 (参数列表) //调用父类的方法

                  3、super.成员变量名 //调用父类的成员变量 

 

14.Java中产生对象的方式有哪些?

  java中生成对象的4方式:1、使用new操作符,这是最普遍的一种。2、使用反射动态生成。

  3、使用克隆生成对象。4、利用反序列化从流中生成对象。

  

15.什么是多态?多态的实现包括哪些方面?

  多态性:顾名思义就是拥有“多种形态”的含义,是指属性或方法在子类中表现为多种形态。它包括两种类型:静态多态性,动态多态性。

  静态多态性:包括变量的隐藏、方法的重载(指同一个类中,方法名相同[方便记忆],但是方法的参数类型、个数、次序不同,本质上是多个不同的方法)。

  动态多态性:是指子类在继承父类(或实现接口)时重写了父类(或接口)的方法,程序中用父类(或接口)引用去指向子类的具体实例,从代码形式上看是父类(或接口)引用去调用父类(接口)的方法,但是在实际运行时,JVM能够根据父类(或接口)引用所指的具体子类,去调用对应子类的方法,从而表现为不同子类对象有多种不同的形态。不过,程序代码在编译时还不能确定调用的哪一个类的方法,只有在运行时才能确定,故又称为运行时的多态性。

 

16.抽象类和接口的区别?

  区别一,两者表达的概念不一样。抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。这些听起来有些虚,举个例子。例如,狗是对于所有狗类动物的统称,京哈是狗,牧羊犬是狗,那么狗的一般特性,都会在京哈,牧羊犬中找到,那么狗相对于京哈和牧羊犬来说,就属于这类事物的抽象类型;而对于“叫”这个动作来说,狗可以叫,鸟也可以叫。很明显,前者相当于所说的是抽象类,而后者指的就是接口。

  区别二,抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。

 

17.如果父类中某些方法不包含逻辑,需要由子类来重写,应该使用什么关键字来声明此父类?

  abstract 声明为虚方法,不需要有方法体。

 

18.构造方法的作用?

  构造方法就是构造一个东西的方法,所么东西呢,是谁的构造方法就是谁的东西,我们知道构造方法是类的,那么也就是构造出来了一个类的实例,我们通常把写的类叫着模板,所以构造出来的就是它的一个对象,它可以用来对其初始化,但最主要的还是构造出这个东西。

 

19.构造方法能不能被重写、重载、继承,其修饰符能不能声明为private?

  不能被重写,继承,可以被重载,可以声明为private。

20.在构造方法中使用super()是调用了什么方法?

  父类的构造函数。

 

21. 数组有没有length()这个方法? String有没有length()这个方法?

  数组没有length()这个方法,有length的属性用来表示数组长度。String有length()这个方法来测量字符串长度。

posted on 2014-04-20 18:17  HAPZQC  阅读(162)  评论(0)    收藏  举报

导航