java的自我总结

来源:互联网 发布:数控转塔冲床编程招聘 编辑:程序博客网 时间:2024/05/16 19:08
1.重写和重载的区别:
 重载:在同一类域下,不同对象执行同一方法的时候会有不同的效果。
  重载的方法名一样,参数不同(个数,类型)
  重载Overloading是一个类中多态性的一种表现。
  (多态性:调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法)
  (多态存在的三个必要条件:继承,重写,父类引用指向子类对象)
 重写:对父类的函数进行重新定义。
  重写的方法名一样,参数一样,返回值类型一样
  重写方法不能抛出新的异常或者比被重写方法声明的异常更广的检查异常。
  重写Overriding是父类与子类之间多态性的一种表现
2.==和equals的区别:
 ==比较的是内存地址,equal比较的是内容本身。
 ==
  基本类型:比较的是值
  引用类型:比较的是地址值
 Equals:
  基本类型:比较的是值本身
  引用类型:在不重写的情况下比较的是地址值+哈希值
3.值传递,引用传递的区别:
 值传递:传递的是数值。参数是基本数据类型 采用值传递
 地址传递:传递的是地址。参数是引用类型 采用地址传递
4.形参和实参:
 形参:方法声明时的参数
 实参:方法调用时的参数
5.使用new的作用:
 为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值
 如实例变量显示初始化,将初始化值赋给实例变量
 调用构造方法
 返回对象的引用类型
6.面向对象的特征有哪些方面:
 封装继承多态
 1)封装
     一方面对属性进行隐藏,另一方面让实现细节不可见。
     (好处:)
 2)继承
     对象的新类可以从现有的类中派生,这个过程成为继承。
     新类继承了原始类的特性,新类就是子类,原始类就是新类的父类。
     子类可以从父类那里继承方法和实例变量,并且可以修改 增加新的方法。
 3)多态
     不同类的对象对同一消息做出响应。
     (优点:具有灵活,抽象,行为共享,代码共享的优势,解决了应用程序函数同名问题)
7.String是最基本的数据类型吗?
 基本数据类型:byte.short.int.long.float.double.char.boolean
  (四个引用数据类型:接口类型,类类型,String类型,Array类型)
 java.lang.String是final类型的(不能继承这个类,不能修改这个类)
8.int和integer有什么区别?
 java两种不同的类型:引用类型,原始类型。
 java为每个原始类型提供了封装类
 int i = integer.inValue(string);  integer可以把string转化成int
9.String和StringBuffer的区别?
 String的长度是不可变的,StringBuffer的长度是可变的。
 如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer。
 如果最后需要String,那么使用StringBuffer的toString()方法
10.ArrayList,Vector,LinkList的存储性能和特征?
 ArrayList,Vector使用数组方式存储数据。效率高,查询快,增删速度慢。
     Vector由于使用了synchronized方法(线程安全),性能较差,并发的情况下使用。
 LinkList使用双向链表存储数据。索引数据需要进行遍历,查询慢,增删快。
11.Collection和Collections的区别?
 Collection是集合类的上级接口,继承他的接口有Set和List
 Collections是针对集合类的一个帮助类,提供静态方法实现各种集合的搜索,排序,线程安全化等操作。
12.&和&&的区别:
 &是位运算符,按位与运算
 &&是逻辑运算符,表示逻辑与and
13.sleep()和wait()和yield()有什么区别?
 sleep()是线程类Thread的方法,会使当前运行的线程放弃CPU,把运行机会让给别的线程。
  但是监控状态依然保持,到时会自动恢复。调用sleep不会释放对象锁。
 wait()是Object类的方法,使本线程放弃对象锁,进入等待此对象的等待池中,只有针对此对象
  发出notify方法后,唤醒本线程进入锁池,准备获得对象锁进入运行状态。
 yield()会给相同优先级或者更高优先级的线程一个运行的机会。使当前线程让出CPU占有权,
  让出的时间不定。
14.线程的实现方式?
  继承Thread类;
         实现Runnable接口;
  (优点:避免由于java的单继承特性带来的局限)
  (初始化了一个没有run()方法的线程类,不会出错(继承Thread类,Thread已经实现了空的run方法))
同步有几种实现方法,都是什么?
同步的实现方面有两种,分别是synchronized,wait与notify
15.同步和异步有什么区别?
 同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;
 异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。
16.抽象类和接口的区别?
  1. 相同点:
               a. 都不能被实例化;
               b. 都能包含抽象方法;
         2. 不同点;
               a. 抽象类中可以为部分方法提供默认的实现,从而避免子类中重复实现它们,
        提高代码的可重用性,而接口中只能包含抽象方法;
               b. 一个类只能继承一个直接的父类,这个父类有可能是抽象类;
        但一个类可以实现多个接口,这是接口的优势所在。
 一个只能继承一个抽象类,但却可以实现多个接口。抽象类中可以有也可以没有抽象方法。
 并且可以定义和常规类一样的变量和方法。而接口中所有的方法都是抽象的,所有的变量
 都是静态不可修改的。
 
17.常见的几种异常?
 ArrayIndexOutOfBoundsException 数组下标越界异常
 NullPointerException 空指针异常
 SystemException 系统异常
 FileNotFoundException 文件未找到异常
 ClassCastException 类型强制转换异常
18.break,continue以及return的用法?
 break跳出当前循环,继续往下执行
 continue 跳出本次循环,继续下一次循环
 return 结束当前方法,return之后的语句不会执行
19.XML文档定义有哪几种形式?有什么区别?解析XML文档有哪几种方式?
 XML文档定义有两种形式:dtd 和 schema
 区别:schema本身是xml的,可以被XML解析器解析。
 解析XML文档方式:DOM,SAX
  DOM解析:会将xml文档全部载入到内存当中,然后将xml文档中的所有
   内容转换为tree上的节点(对象)。
   (适合随机解析,适合解析小文件,占用内存较多)
  SAX解析:遇到开始标签,结束标签,开始解析文件,文件解析结束,字符内容,
   空白字符等都会触发各自的方法。
   (适合对XML顺序访问,适合解析大文件)
20.java中有几种流?JDK为每种类型的流提供了一些抽象类以供继承,他们分别是哪些类?
 字节流,字符流。
 字节流:继承InputStream,OutputStream
 字符流:继承InputStreamReader,OutputStreamWriter
21.java中实现多态的机制是什么?
 java多态性的不同表现体现在:方法的重写和重载。
 重写是父子类之间的多态性的一种表现。
 重载是一个类中多态性的一种表现。
22.什么是java序列化,如何实现java序列化?
 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后
 的对象进行读写操作,也可将流化后的对象传输于网络之间。
      序列化是为了解决在对对象流进行读写操作时所引发的问题。
 序列化的实现:将需要被序列化的类
 实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象
 是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)
 对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象
 写出(即保存其状态),要恢复的话则用输入流。
23.是否可以从一个static方法内部发出对非static方法的调用?
 不可以。
 因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行
 方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,
 可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法
 是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。
24.垃圾回收机制?
 GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,
 忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以
 自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已
 分配内存的显式操作方法。

25.说出一些常用的类,包,接口,请各举五个?
 常用类:Object Thread File String Integer
 常用包:java.lang  java.io  java.util  java.math  java.sql
 常用接口:List Map Collection Runnable Comparable
 (Collection接口:List接口:ArrayList LinkList,Set接口:HashSet TressSet)
 (Map接口:HashMap,TreeMap)
 (ArrayList 继承自 AbstractList)
 (HashSet   继承自 AbstractSet)
 (Java.lang.Throwable,java.lang.Error,java.lang.Exception 继承自Throwable)
 (RunntimeException和其他Exception 继承自Exception)
26..HashMap和Hashtable的区别。
 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都实现了Map接口.
 主要区别在于HashMap允许空(null)键值(key)与空值(value),由于非线程安全,
 效率上可能高于Hashtable,Hashtable不允许有空(null)键值(key)与空值(value)。
27.String s = new String("xyz");创建了几个String Object?
 两个,一个是对象new String("xyz"),一个是对象的引用xyz
28.数组有没有length()这个方法? String有没有length()这个方法?
 数组没有length()这个方法,有length的属性。
 String有length()这个方法。
29.启动一个线程是用run()还是start()?有什么区别?
 启动一个线程是调用start()方法,这并不意味着线程就会立即运行,
 只是进入了可运行状态。直接调用run()方法不会产生线程,而是把它当作普通的方法调用,马上执行。
30.Class.forName的作用?
 调用该访问返回一个类名为指定字符串的类的对象。
31.2的10次方则是:1<<10
32.JAVA类实现序列化的方法?在collection中,实现比较要实现什么样的接口?
 java类实现序列化需要实现java.io.Serializable接口。
 在collection中实现比较要实现java.lang.Comparable接口或java.util.Comparator接口。
33.谈谈final, finally, finalize的区别。
 final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,
 不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。
 将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,
 而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
 finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,
 那么相匹配的 catch子句就会执行,然后控制就会进入 finally 块(如果有的话)。
 finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前
 做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
 它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize()方法以整理系统资源或者
 执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的
34.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?
 是否可以implements(实现)interface(接口)?
 匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,
 由另一个内部类实现。
35.在Java中,TCP协议提供的是可靠无差错的数据传输,UDP 协议不保证数据传输的可靠性。
原创粉丝点击