`
阅读更多

1.继承

    含义:继承是从已有的类中派生出新的类,新类可以吸收已有类的数据属性和行为,并能扩展新的能力。

    继承的关键字:extends 

    java只支持单继承,不支持多继承,也就是说一个类只能有一个父类,同时一个类可实现多个接口。

  多态

    含义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。

  现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助  文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发  生在不同的对象上会产生不同的结果。

  重载:javajava允许在一个类中,多个方法拥有相同的名字,但在名字相同的同时,必须有不同的参数,这就是重载。

  普通方法的重载:a).参数个数不同。 b).对应位置上的参数类型不同

  注:不允许参数完全相同而只是返回值不同的情况。

  重写:父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的    名称和参数    ,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新      编写相同的方法。但有时    子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用      方法的重写。方法重写又称方法覆盖。

2.数据类型、值传递和引用传递的区别,String属于什么传递(转载)

   ①总体而言,Java中的数据类型分为两大类,即原始类型的对象类型(或叫引用类型),后者是指由类生         成的对象的类型,我们将在下一节详解;Java中的原始类型有如下8种,如表所示。 

类型称呼值域表示范围

byte字节型8 bits-128~127

int整型32 bits-2,147,483,648~ -2,147,483,647

short短整型18 bits-32,768~32,767

long长整型64 bits -9,223,372,036,854,775,808~ 9,223,372,036,854,775,807

char字符型16 bits (UNICODE) 0~65535

float浮点型32 bits IEEE 754-1985

double双精度64 bits IEEE 754-1985

boolean布尔型true/flase只有“真”或“假”两种结果

 

        ②JAVA中的参数传递全是以值传递的。是基本类型,就拷贝一个基本类型传进方法;是引用,就拷贝一个引用变量传进去方法。 

        关键是区分对象和引用。 

        对象是传引用,简单类型是传值。 

       “参数传递”就是调用对象和被调用对象之间数据传递的过程,它有两种方式:一种方式是将调用对象的数据(源数据)拷贝一份传递给被调用对象(作为新数据),这种方式叫做“值传递”,在这种方式下,被调用对象对新数据的改变不影响源数据的取值,如基本类型的传递;另一种方式是将调用对象的数据(源数据)的引用直接复制给被调用对象的引用(作为新数据的引用),这种方式叫做“引用传递”,在这种方式下,被调用对象新数据的改变影响源数据内容,因为新数据和源数据的引用虽然不同但却指向同一数据对象,如类型对象的传递。 

        总的来说,简单概括Java中进行方法调用的时候传递参数时,遵循值传递的原则: 

        1)基本数据类型,传递的是数据的拷贝 

        2)引用数据类型,传递的是传递的引用地址的拷贝,而不是该对象本身 

//例1 

void method1(){ 

int x=0; 

this.change(x); 

System.out.println(x); 

 

void int change(int i){ 

i=1; 

        结果:x=0; 

 

//例2 

void method1(){ 

StringBuffer x=new StringBuffer("Hello"); 

this.change(x); 

System.out.println(x); 

 

void int change(StringBuffer i){ 

i.append(" world!"); 

        结果:x=Hello world; 

 

        ③String是一个比较特殊的数据类型,在Java中,String是一个类,但是他的传值却是采用“值传递”的方式。 

首先String不属于8种基本数据类型,String是一个对象。 

      因为对象的默认值是null,所以String的默认值也是null;但它又是一种非凡的对象,有其它对象没有的一些特性。 

      new String()和new String(“”)都是申明一个新的空字符串,是空串不是null; 

      String str=”kvill”; 

      String str=new String (“kvill”);的区别。 

 

      在这里,引入常量池这个简单的概念。 

      常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。 

      例1: 

  String s0=”kvill”; 

  String s1=”kvill”; 

  String s2=”kv” + “ill”; 

  System.out.println( s0==s1 ); 

  System.out.println( s0==s2 ); 

  结果为: 

  true 

  true 

 

      首先,我们要知结果为道Java会确保一个字符串常量只有一个拷贝。 

       因为例子中的s0和s1中的”kvill”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”kv”和”ill”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”kvill”的一个引用。 

      所以我们得出s0==s1==s2; 

      用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。 

      例2: 

  String s0=”kvill”; 

  String s1=new String(”kvill”); 

  String s2=”kv” + new String(“ill”); 

  System.out.println( s0==s1 ); 

  System.out.println( s0==s2 ); 

  System.out.println( s1==s2 ); 

       结果为: 

  false 

  false 

  false 

 3.Set如何遍历,有哪些子类、List如何遍历,有哪些子类、Map如何遍历,有哪些子类

    Map中是否可以放入null的key或Vlaue?Set,List呢?

1、Set是最简单的一种集合,它的对象不按特定方式排序,只是把对象加入集合。 具有无序性和不重复性(不同计算机操作的结果可能不同,但同一计算机多次操作结构是相同的)。 

set的常用具体实现类:HashSet和TreeSet。可以通过使用迭代器输出所有的元素。 

2 、list:具有线性,有序性,重复性,可以通过迭代器遍历数组。

    常用实现类:Vector,ArrayList.

3 、map:map提供的是一种映射关系的集合数据结构存放两种对象,一种是key(键),一种是value(值)。它们是一对一的关系。 

   map中值可以重复,键不可以重复。可以迭代器输出所有元素

   常用实现类:HashMap、Hashtable

 

  5.递归与循环的区别?

递归是指函数在运行中不断的调用自己的一种现象。循环是程序的流程结构。递归都可转化成相应的循环结构。普遍认为循环的效率比递归高,可靠性好

 

7.线程:线程有几种创建方式?线程在程序中有几种状态?

    java中创建线程有2种方法,第一种是继承Thread类,第二种是实现Runnable接口。两种方法的区别是,第一种的灵活性稍微差了点,因为java只能继承一个类。第二种就是可以继承别的类,而且可以实现多种接口。

    线程有四种状态,任何一个线程肯定处于这四种状态中的一种:

1)产生:线程对象已经产生,但尚未启动,无法执行。通过new产生一个线程对象之后没对它调用start()函数之前

2)可执行:执行一个线程对象的start()方法后,线程处于可执行状态。

3)死亡:当一个线程正常结束,它便处于死亡状态。run方法执行完毕,线程死亡

4)停滞:处于停滞的线程重新回到可执行状态,它可能重新执行。

8.static用法与注意事项,==和equals的区别?

   ①  static 方法称类方法,直接使用类名调用,而非 static 方法的调用必须通过创建该类的对象调用

②  static 属性称类属性,可以不创建类的对象直接调用

③  类的某一个对象的static属性值改变后,类中所有的对象的static属性值都会改变。

④ 定义代码块

⑤  静态方法中不能使用非静态的属性和方法,也不能使用this,super

⑥  编译时,先装载static 属性和方法,再运行主函数

equals 方法是String类从它的超类Object中继承来的。被用来检测两个对象的内容是否相等。equals 方法不能用在基本类型中,只能用在引用类型里。

==是运算符,用于比较引用和比较基本数据类型时具有不同的功能。比较基本数据类型,如果两个值相同,则结果为true;比较对象时如String,用==是比较两个变量是否指向同一个对象,而用equals才是比较两个String的内容是否相等。

9.链表、队列、栈的区别

   1.链表是一种物理存储单元上非连续、非顺序的存储结构。链表有一系列的结点组成,结点可以在运行是动态生成。每一个结点包括两个部分:存储数据的数据域和存储下一个结点的指针域。在链表中实现数据的插入和删除比比队列和栈方便。

   2.队列 :是一个容器,用来存储同一类型的数据容器。这容器是可以变大小的。数据是“先进先出”的,最基本的使用是能够实现数据的查找、插入、删除、合并、排序、统计以及简单计算等操作。

 

   3.栈:是一个容器,“先进后出”。可以对数据进行排序,实现中缀表达式转换为后缀表达式

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics