




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1Java中的异常处理机制的简单原理和应用。当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Throwable的子类。2在Java中,以下的异常:java.lang.Excetion,java.lang.RuntimeException,java.lang.Error有什么区别?Error类对象由Java虚拟机生成并抛出,Exception类对象由应用程序处理或抛出error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。Error表示系统级的错误和程序不必处理的异常,RuntimeException是Exception的子类,一般来说该异常是程序在运行时抛出这种错误编译是无法捕捉的,如果在程序中不加处理,在程序运行就会产生并上缴给JVM处理。异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。Java编译器要求方法必须声明抛出可能发生的非运行时异常同,但是并不要求必须声明抛出未被捕获的运行时异常。exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况Exception表示需要捕捉或者需要程序进行处理的异常。3Java中异常处理机制、事件机制?异常处理机制:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。这种机制为复杂程序提供了强有力的控制方式。同时这些异常代码与“常规”代码分离,增强了程序的可读性,编写程序时也显得更灵活。异常处理还有一个好处是在你不能确定和处理异常时,你可以不处理,而把问题提交上去。另一方面,异常处理机制便利错误处理代码更有条理,更便于维护。事件机制:事件从事件源到监听者的传递是通过对目标监听者对象的Java方法调用进行的。对每个明确的事件的发生,都相应地定义一个明确的Java方法。这些方法都集中定义在事件监听者(EventListener)接口中,这个接口要继承java.util.EventLlistener。实现了事件监听者接口中一些或全部方法的类就是事件监听者。伴随着事件的发生,相应的状态通常都封装在事件状态对象中,该对象必须继承自java.util.EventObject。事件状态对象作为单参数传递给应响应该事件的监听者方法中。发出某种特定事件的事件源的标识是:遵从规定的设计格式为事件监听者定义注册方法,并接受对指定事件监听者接口实例的引用。有时,事件监听者不能直接实现事件监听者接口,或者还有其它和额外动作时,就要在一个源与其它一个或多个监听者之间插入一个事件适配器类的实例,来建立它们之间的联系。4运行时异常与一般异常有何异同?异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。5Java中使用接口比使用继承有那些更多的好处好处。由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。6垃圾回收的优点和原理 垃圾回收原理1、垃圾回收器只能回收由new产生的对象,如果你使用或产生了非new产生的对象,垃圾回收器是不知道如何把他清理掉的。这个时候就要使用到finalize()。2、垃圾回收器的运做方式是这样的,当垃圾回收器打算开始释放你的对象所占用的资源时,会先调用finalize(),并且在下一次垃圾回收动作放生的时候才回收该对象所占用的资源,如果使用finalize(),他便会让你得以在垃圾回收的时候执行你自己的清理动作3、finalize()是不会在对象销毁的时候自动唤起的。假设有一个对象在产生的过程中将自己绘制在屏幕之上。你要是没有手动的把他清理掉,那么他永远会在那里,而如果你将清理屏幕的功能放在finalize()之中,那么当这个对象被垃圾回收器回收之前,他在屏幕上的影象会先被清除4、你的对象永远可能都不会被回收,因为你的程序并没有把系统资源占用到需要垃圾回收器出马的状态,你所占用的系统资源会在程序结束运行的时候全部释放,那么你就不用付出垃圾回收器运行的额外系统开支。 垃圾回收优点:Java语言中一个显著的特点就是引入了垃圾回收机制,使C+程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有作用域的概念,只有对象的引用才有作用域。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。7请说出你所知道的线程同步的方法。wait():使一个线程处于等待状态,并且释放所持有的对象的lock。sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。8在java中一个类被声明为final类型,表示了什么意思?表示该类不能被继承9谈谈final,finally,finalize的区别。final用于声明属性、方法和类,分别表式属性不可改变,方法不可覆盖,类不可继承。修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。finally是异常处理语句结构的一部分,表示问题执行。在异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。finalize是Object类的一个方法,在垃圾悼念器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。Object类的一个方法。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。10Collection和Collections的区别。Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。Collection是个java.util下的接口,它是各种集合结构的父接口。11heap和stack有什么区别。栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素12发送一条邮件的几个步骤创建邮件对象、邮件对象中数据的封装以及邮件发送13常用的组件技术常用的组件技术:Servlets,JSP,EJB,JDBC,JAVAMAIL,JNDI(名字目录服务),JAXP(解析XML的JAVA API)14如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。/* * 超大整数相加: * 题目要求:如果系统要使用超大整数(超过long的范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数的加法运算 */public class VeryBigNumAdd public static void main(String args) VeryBigNumAdd vbn=new VeryBigNumAdd(); String a=123453243455535634535252345234677576252241234123523453664563634; String b=123453243455535634535252345234677576252241234123523453664563634; String result=vbn.doAdd(a,b); System.out.println(result:+result); /* * * param a 加数字符串1 * param b 加数字符串2 * return 结果字符串 * 分析: * 1、取得两个字符串的长度 * 2、把两个的长度做比较,并得出较长的长度,及较短的长度 * 3、把长度较短的加数字符串,在左面补0,使之与较长的字符串一样长 * 4、从最高位,一个个数的取出来相加,当然首先得转换为整型 * 5、设置进位,如果两个数相加及加上进位大于等于10,并且这不是最左边一个字符相加,相加结果等于 * (取出1取出2进位)10,并把进位设为1;如果没有大于10,就把进位设为0,如些循环,把 * 相加的结果以字符串的形式结合起来,就得到最后的结果 */ String doAdd(String a,String b) String str=; int lenA=a.length(); int lenB=b.length(); int maxLen=(lenAlenB) ? lenA : lenB; int minLen=(lenA0;i-) strTmp+=0; /把长度调整到相同 if(maxLen=lenA) b=strTmp+b; else a=strTmp+a; int JW=0;/进位 for(int i=maxLen-1;i=0;i-) int tempA=Integer.parseInt(String.valueOf(a.charAt(i); int tempB=Integer.parseInt(String.valueOf(b.charAt(i); int temp; if(tempA+tempB+JW=10 & i!=0) temp=tempA+tempB+JW-10; JW=1; else temp=tempA+tempB+JW; JW=0; str=String.valueOf(temp)+str; return str; 15匿名内部类是否可以做为父类被其它类继承,或是做为接口被实现。匿名内部类不能被继承,也不能被实现,因为它没名字。而一个内部类,只要有名字,就可以做为父类被继承,也可以做为接口被实现。16静态内部类和内部类的不同。1、静态内部类,它可以不依赖外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。2、 不能从一个静态内部类访问外部类。内部类的可以访问外部类的非静态成员3、 静态内部类中可以是静态成员,内部类中的成员不能为静态。17&和&的区别。&是位运算符。&是布尔逻辑运算符。18HashMap和Hashtable的区别。都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或者排序。它允许一个null键和多个null值。Hashtable类似于HashMap,但是不允许null键和null值。它也比HashMap慢,因为它是同步的。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。19什么时候用assert。assert是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。如果表达式计算为false,那么系统会报告一个AssertionError。它用于调试目的:assert(a0);/throwsanAssertionErrorifa=0assert可以有两种形式:assertExpression1;assertExpression1:Expression2;Expression1应该总是产生一个布尔值。Expression2可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的String消息。assert在默认情况下是禁用的。要在编译时启用assert,需要使用source1.4标记:javac-source1.4Test.java要在运行时启用assert,可使用-enableassertions或者-ea标记。要在运行时选择禁用assert,可使用-da或者-disableassertions标记。要系统类中启用assert,可使用-esa或者-dsa标记。还可以在包的基础上启用或者禁用assert。可以在预计正常情况下不会到达的任何位置上放置assert。assert可以用于验证传递给私有方法的参数。不过,assert不应该用于验证传递给公有方法的参数,因为不管是否启用了assert,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用assert测试后置条件。另外,assert不应该以任何方式改变程序的状态。20GC是什么?为什么要有GC?(基础)。GC是垃圾收集器。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc()Runtime.getRuntime().gc()21Strings=newString(xyz);创建了几个StringObject?两个对象,一个是xyx,一个是指向xyx的引用对象。22sleep()和wait()有什么区别?sleep()方法是使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非醒来的线程具有更高的优先级或者正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。23Java有没有goto?Gotojava中的保留字,现在没有在java中使用。24数组有没有length()这个方法?String有没有length()这个方法?数组没有length()这个方法,有length的属性。String有有length()这个方法。25重载(Overload)和重写(Override)的区别。重载的方法是否可以改变返回值的类型?方法的重写和重载是Java多态性的不同表现。重写是父类与子类之间多态性的一种表现,如果在子类中定义某方法与其父类有相同的名称参数,我们说该方法被重写,子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽。和重载是一个类中多态性的一种表现。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载。重载的方法是可以改变返回值的类型。26Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用=还是equals()?它们有何区别?Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。equals()和=方法决定引用值是否指向同一对象。equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。27Math.round(11.5)等于多少?Math.round(-11.5)等于多少?Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;28Short s1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?Short s1=1;s1=s1+1错误原因:s1是short型,1是int型,高位向低位可以自动转化,但是低位向高位转换要强制转换。低位数s1与高位数1相加时应当将低位转化为高位,即要将s1转化成int才行,但是s1+1中的s1不能自动从低位转化成高位。可修改为s1=(short)(s1+1)。Short s1=1;s1+=1正确。根据java虚拟机规范 a+=b 最终会被java虚拟机解释为a=(a的类型)(a+b) 其中a为高位数,b为低位数29List,Set,Map是否继承自Collection接口?List,Set是Map不是30abstractclass和interface有什么区别?声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换31请例示:如何使用instanceof关键字,以及如何进行对象的强制类型转换如下面的例子程序:class Studentclass Graduate extends Studentclass UnderGraduateSutdent extends Studentpublic class stpublic static void main(String args)UnderGraduateSutdent s1=new UnderGraduateSutdent();Graduate s2=new Graduate();Student x;x=s1;if(x instanceof UnderGraduateSutdent)System.out.println(“x是UnderGraduateSutdent类的实例。”);elseSystem.out.println(“x是Graduate类的实例。”);32接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。33启动一个线程是用run()还是start()?启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法必须有一个退出的标志来停止线程。public class MyThread implements Runnablestatic int count=0;MyThread()/实现Runnable接口的run方法public void run()/一个退出的标志来停止线程while(true)count+;System.out.println (count);try Thread.sleep(1000); catch (Exception ex) System.out.println (error); public static void main(String args) /虽然MyThread实现了Runnable接口,具有了线程的功能 /但是MyThread并没有start()方法来启动线程,所以要启动 /MyThread的run方法,必须用MyThread类对象来构造一个线程 Thread t = new Thread(new MyThread(); t.start(); 34构造器Constructor是否可被override?构造器Constructor不能被继承,因此不能重写,但可以被重载。35abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?都不能补充:什么是native?用修饰符 native 修饰的方法称为本地方法。为了提高程序的运行速度,需要用其它的高级语言书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰36最常见到的runtimeexception。ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException37try里有一个return语句,那么紧跟在这个try后的finally里的code会不会被执行,什么时候被执行,在return前还是后?会执行,在return前执行。38编程题:用最有效率的方法算出2乘以8等於几?2339两个对象值相同(x.equals(y)=true),但却可有不同的hashcode,这句话对不对?不对,有相同的hashcode。40.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?是值传递。Java编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。41swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case语句的参数应该是int、short、char或者byte。long,string都不能作用于swtich。42是否可以继承String类?String类是final类故不可以继承。43当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?不能,一个对象的一个synchronized方法只能由一个线程访问。44编程题:写一个Singleton出来。Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。一般Singleton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。Public class SingletonPrivate Singleton()Private static final Singletoninstance=newSingleton();/这里提供了一个供外部访问本class的静态方法,可以直接访问Public static Singleton getInstance()returninstance;第二种形式:Public class SingletonPrivate static Singleton instance=null;Public static synchronized Singleton getInstance()/这个方法比上面有所改进,不用每次都进行生成对象,只是第一次/使用时生成实例,提高了效率!if(instance=null)instancenewSingleton();returninstance;45作用域public,private,protected,以及不写时的区别答:区别如下:作用域当前类同一package子孙类其他packagepublicprotectedfriendlyprivate不写时默认为friendly46ArrayList(List)和Vector的区别,HashMap和Hashtable的区别?答:就ArrayList(List)与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList(List)是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList(List)却是原来的一半Vector是序列式容器,作为缺省使用。ArrayList(List)应当用于频繁在序列中部进行插入和删除操作的情况47char型变量中能不能存贮一个中文汉字?为什么?答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的48多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify49垃圾回收机制,如何优化程序? 垃圾回收机制前面题目有答案,如何优化程序请自由发挥吧。50float型floatf=3.4是否正确?答:不正确。精度不准确,应该用强制类型转换,如下所示:floatf=(float)3.451介绍JAVA中的CollectionFrameWork(包括如何写自己的数据结构)?答:CollectionFrameWork如下:CollectionListLinkedListArrayListVectorStackSetMapHashtableHashMapWeakHashMapCollection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)Map提供key到value的映射53JAVA中的多态与继承多态与继承、重载并不是孤立的,他们之间存在着紧密的联系,多态是建立在这两者的基础之上的(实际上继承就有用重载这一特性)。下面我们来看个例子:Abstract Class Sharp implement IhaveSide public bool isSharp() return true; poublic abstract int getSides();Class Triangle extends Sharp public Override int getShides() return 3; Class Rectangle extends Sharp public Override int getSides() return 4 那么这种类的关系叫做继承,下面这种使用方式也是继承所带来的:Triangel tri=new Triangle();Println(“Triangle is a type of sharp?”+tri.isSharp();而这种方式则是多态:Sharp sharp=new Rectangle();Println(“My sharp has”+sharp.getSides()+” sides.”);这两者区别在哪?很显然,继承是子类使用父类的方法,而多态则是父类的引用指向子类的对象,使用的是子类的方法。其技术上的区别是绑定时期,晚期绑定的一定是多态。53STRING与STRINGBUFFER的区别。答:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法54面向对象的三个基本特征1.继承:是一种联结类的层次模型,并且允许和鼓励类的重用。它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。2.封装:是把过程和数据包围起来,对数据的访问只能通过己定义的界面。面向对象设计始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。3多态性:是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名的问题。56接口和内部类、抽象类的特性接口:一个接口只有方法的特征,而没有方法的实现,因此这些方法在不同的地方被实现时可以有完全不同的行为,JAVA接口还可以定义public 的常量。抽象类:仅提供一个类型的部分实现。抽象类可以有实例变量,以及一个或多个构造子。抽象类可以同时有抽象方法和具体方法。它提供一个继承的出发点,不能被实例化。因此,抽象类一定是用来继承的。内部类:JAVA中的内部类实际上和C+中嵌套类(Nested Class)有相似之处,但也有区别:关于JAVA中的内部类有以下说法:有一点需要注意的是:匿名内部类由于没有名字,所有他没有构造函数(但是如果这个匿名内部类继承了一个只含有带参数构造函数的父类,创建它的时候必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)。如果你想要初始化它的变量,有下面几种方法:1.如果是在一个方法的匿名内部类,可以利用这个方法传进你 的参数,不过记住,这些参数快艇被声明为final。2.将匿名内部类改造成有名字的局部内部类,这样它就可以拥有构造函数了。3.这个匿名内部类中使用初始化代码块。为什么需要内部类?Java内部类有什么好处?为什么需要内部类?首先举一个简单的例子,如果您想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称、参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口。由于内部类对外部类的所有内容都是可访问的,所有这样做可以完成所有你直接实现这个接口的功能。不过你可能要质疑,更改一个方法名不就行了吗?的确,以此作为设计内部类的理由,实在没有说服力。真正的原因是这样的,java中的内部类和接口加在一起,可以解决常被C+程序员抱怨java中存在的一个问题没有多重继承。实际上,C+的多继承设计起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果。57文件读写的基本类FileInputStream,FileOutputStream,File58串行化的注意事项以及如何实现串行化串行化就是把一个对象写入流的过程具体的做法:1必须实现Serializable(标志接口,没有具体的方法)2ObjectOutputStream封装一个地层类(与具体的设备交互)3使用WriteObject将对象写入流59线程的基本概念、线程的基本状态以及状态之间的关系线程的基本描述:多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为珍上线程,彼此间互相独立。线程又称轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调试,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。线程的基本状态:1新状态:线程已被创建但尚未执行(strart()尚未被调用)。2可执行状态:线程可以执行,虽然不一定正在执行。CPU时间随时可能被分配给该线程,从而使得它执行。3死亡状态:正常情况下run()返回使得线程死亡。调用stop()或destroy()亦有相同效果,但是不被推荐,前者会产生异常,后者是强制终止,不会释放锁。4阻塞状态:线程不会被分配CPU时间,无法执行。60线程的同步、如何实现线程的同步由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。实现的同一种方式:1synchronized方法:通过在方法声明中加入synchronized关键字来声明synchronized方法。2synchronized块:通过synchronized关键字来声明synchronized块。61Socket通信(TCP、UDP区别及Java实现方式)UDP与TCP的主要区别在于:UDP:不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误的到达目的地。UDP在许多方面非常有效。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用UDP。UDP是通过DatagramSocket来实现,它使用DatagramSocket无须建立连接。TCP:在等待客户端的服务器是使用ServerSocket,客户端是使用Socket来连接服务器。62JDBC调用数据库的基本步骤1通过驱动器管理器获取连接接口。2获得Statement或它的子类。3限制Statement中的参数。4执行Statement。5查看返回的行数是否超出范围。6关闭Statement。7处理其它的Statement。8关闭连接接口。*63解析XML文件的几种方式和区别DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问。SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。STAX:Streaming API for XML (StAX)。64Java四种基本权限的定义启动类装载器,标准扩展类装载器,类路径装载器和网络类装载器。65Java的国际化Java语言具有平台无关、可移植性好等优点,并且提供了强大的类库,所以Java语言可以辅助我们解决上述问题。Java语言本身采用双字节字符编码,采用大汉字字符集,这就为解决国际化问题提供了很多方便。从设计角度来说,只要把程序中与语言和文化有关的部分分离出来,加上特殊处理,就可以部分解决国际化问题。在界面风格的定制方面,我们把可以参数化的元素,如字体、颜色等存储在数据库里,以便为用户提供友好的界面;如果某些部分饮食无法参数化的元素,那么我们可能不得不分别设计,通过有针对性的编码来解决具体问题。怎样解决国际化问题在用Java解决国际化问题的过程中,可能利用到的主要类都是由java.util包提供的。该类包中相关的类有Locale、ResourceBundle、ListResourceBundle、PropertyResourceBundle等,下面对上面的类的具体用法进行解释:Locale:该类包含对主要地理区域的地域化特征的封装。其特定对象表示某一特定的地理、政治或文化区域。通过设定Locale,我们可以为特定的国家或地区提供符合当地文化习惯的字体、符号、国标和表达格式。例如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉堡店安全知识培训课件
- 永济市交通安全知识培训课件
- 水轮机蝶阀课件
- 建筑工程合同管理方案
- 施工人员劳动保护与安全防护方案
- 人教版PEP四年级上册 Unit 2 My schoolbag 单元测试提升B卷(含答案)
- 图形图像处理数码照片处理之摄影基础84课件
- 陶瓷造型工艺36课件
- 消防系统应急反应方案
- 水电维修基础知识培训课件
- 插板机安全操作规程
- 铭复乐IV期临床方案介绍
- ks-9000气体报警控制器使用说明书
- 《SPC统计过程控制》课件
- GB/T 14153-1993硬质塑料落锤冲击试验方法通则
- (完整版)人教版八年级下册《道德与法治》期末测试卷及答案【新版】
- 并购贷款业务培训
- 北京大学人民医院-医疗知情同意书汇编
- 建设集团有限公司安全生产管理制度汇编
- 牙体牙髓病最全课件
- 交通信号控制系统检验批质量验收记录表
评论
0/150
提交评论