您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Java基础知识扫盲贴
Java基础1.如何获得数组的长度?数组名.length2.访问修饰符“public/private/protected/缺省的修饰符”的使用类?public:公共,均可访问private:私有的,同一个java类中可以访问.子类不能访问.protected:同一个包中的类都可访问.子类可以访问.缺省,friendly:当前类,同一个包,都可以访问.作用域当前类同一package子孙类其他packagepublic√√√√protected√√√×friendly√√××private√×××3.AnonymousInnerClass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?匿名内部类是没有名字的内部类,不能继承其它类,但一个内部类可以作为一个接口,由另一个内部类实现.一、由于匿名内部类没有名字,所以它没有构造函数。因为没有构造函数,所以它必须完全借用父类的构造函数来实例化,换言之:匿名内部类完全把创建对象的任务交给了父类去完成。二、在匿名内部类里创建新的方法没有太大意义,但它可以通过覆盖父类的方法达到神奇效果,如上例所示。这是多态性的体现。三、因为匿名内部类没有名字,所以无法进行向下的强制类型转换,持有对一个匿名内部类对象引用的变量类型一定是它的直接或间接父类类型。new类或接口类的主体匿名类匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。这就要采用另一种形式的new语句,如下所示:new类或接口类的主体这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。从技术上说,匿名类可被视为非静态的内部类,所以它们具有和方法内部声明的非静态内部类一样的权限和限制。如果要执行的任务需要一个对象,但却不值得创建全新的对象(原因可能是所需的类过于简单,或者是由于它只在一个方法内部使用),匿名类就显得非常有用。匿名类尤其适合在Swing应用程序中快速创建事件处理程序。exp:returnnewContents(){privateinti=11;publicintvalue(){returni;}};这种奇怪的语法要表达的意思是:“创建从Contents衍生出来的匿名类的一个对象”。由new表达式返回的句柄会自动上溯造型成一个Contents句柄。匿名内部类的语法其实要表达的是:classMyContentsextendsContents{privateinti=11;publicintvalue(){returni;}}returnnewMyContents();若试图定义内部类,并想使用在匿名内部类外部定义的一个对象,则编译器要求外部对象必须是final属性.publicclassParcel9{publicDestinationdest(finalStringdest,finalfloatprice){returnnewDestination(){privateintcost;//Instanceinitializationforeachobject:{cost=Math.round(price);if(cost100)System.out.println(Overbudget!);}privateStringlabel=dest;publicStringreadLabel(){returnlabel;}};}publicstaticvoidmain(String[]args){Parcel9p=newParcel9();Destinationd=p.dest(Tanzania,101.395F);}}4.staticnestedclass和innerclass的不同?nestedclass在c++中是嵌套类,innerclass在java中是内部类.不同就是在于是否有指向外部的引用上.静态内部类意味着创建一个static内部类的对象,不需要一个外部类对象;不能从一个static内部类的一个对象访问到一个外部类的对象.5.&和&&的区别&是位运算符,表示按位与运算;&&是逻辑运算符,表示逻辑与(and)6.Collection和Collections的区别collection是集合类的上级接口,继承与它的接口主要是set和list其中list必须以特定的顺序容纳元素;而一个set不能包含重复的元素.映射(Map)一系列键-值对.可以返回自己键的一个set,一个包含自己值的list,或者包含自己(键-值)对的一个list.均可构建自己的反复器.collections类是针对集合类的一个帮助类.它提供一系列的静态方法对各种集合的搜索,排序,线程安全化等操作.publicclassSimpleCollection{publicstaticvoidmain(String[]args){Collectionc=newArrayList();for(inti=0;i10;i++)c.add(Integer.toString(i));Iteratorit=c.iterator();while(it.hasNext())System.out.println(it.next());}}7.什么时候用assertassertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的.8.Strings=newString(xyz);创建了几个StringObject***两个,一个字符对象,一个字符对象引用对象9.math.round(11.5)和math.round(-11.5)前者等于12,后者等于-11.round方法返回与参数最接近的长整数.参数加0.5,求其floor10.shorts1=1;s1=s1+1;是否有错误?shorts1=1;s1+=1;是否有错误?前者s1+1返回一个int型,需要强制类型转换.后者正确.11.java种有没有goto?有,为保留字.但是尚未使用.12.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型13.Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值14.给我一个你最常见到的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,UnsupportedOperationException..15.error和exception有什么区别?答:error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况16.List,Set,Map是否继承自Collection接口答:List,Set是,Map不是17.abstractclass和interface的区别答:声明方法的存在而不去实现它的类叫虚拟类(abstractclass).它用于创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstractclass的实例.但是可以声明一个abstractclass变量,将其指向其具体子类的一个实例.不能有抽象构造函数或抽象静态方法.Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法.接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口.接口是一个更纯的抽象类.18.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实
本文标题:Java基础知识扫盲贴
链接地址:https://www.777doc.com/doc-3401967 .html