java知识点集合.docx

上传人:scccc 文档编号:14125142 上传时间:2022-02-02 格式:DOCX 页数:9 大小:102.43KB
返回 下载 相关 举报
java知识点集合.docx_第1页
第1页 / 共9页
java知识点集合.docx_第2页
第2页 / 共9页
java知识点集合.docx_第3页
第3页 / 共9页
java知识点集合.docx_第4页
第4页 / 共9页
java知识点集合.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《java知识点集合.docx》由会员分享,可在线阅读,更多相关《java知识点集合.docx(9页珍藏版)》请在三一文库上搜索。

1、I.java术语强类型还是弱类型语言?为什么?Java是强类语言,在使用变量时有如下规则:变量必须声明,并且初始化以后才能使用。变量必须有明确的类型(type)。变量不能重复定义。javascript是一种弱类型语言,即变量在声明时,不能明确声明其类型变量的类型是在运行时确定的,并且可以随时改变2.JAVA的数据类型有哪些?七)基本数据类型(八种):整型: byte 1字节,short 2字节,int 4字节,long 8字节浮点型:float 4字节,double 8字节float类型共32位(不int相同),其中1位为符号位,指数8位,尾数23位。】-double类型能表示64位,其中1位

2、符号位,11位指数,52位尾数】【浮点数的字面量默认是double!字符型:char 2字节【unicode编码值】L boolean 型: boolean 1 字节【值只有 true 和 false隐式类型转换:正方向: char int long float double负方向:byte short int long float double引用类型(自定义类型):比如String3 .JAVA中成员变量和局部变量的区别?成员变量:是在类范围内定义的(也叫成员属性) 类属性:使用static修饰的就是类属性。作用域:类属性的作用域与这个类的生存范围相同,它作为类的一个成员,与类共存亡。只要

3、类存在,程序就可以访问该类的类属性。L实例属性:不被static修饰的就是实例属性。作用域: 实例属性则从这个类的实例(对象)被创建开始存在,直到系统完 全销毁这个实例,它作为实例(对象)的一个成员,与实例(对象) 共存亡。只要实例存在,程序就可以访问该实例的实例属性。局部变量:在一个方法内定义的变量。(包括方法的形式参数)1 .形参:作用域是整个方法体-2.方法局部变量:一个代码块中一 3.代码块局部变量:一个代码块中注意:局部变量除了形式参数外,都必须显示初使化(必须显示指定初使值)。否则不可以访问它们。形式参数不须显示初使化,它在被调用时由系统完成。4 .前+和后+的区别?_ i+,后+

4、,先将i的值作为整个表达的值,然后将i增加1。l+i,先+,先将i增加1,然后将i的值作为整个表达的值。5 .短路运算符和非短路运算符的区别?r短路运算符条件1 &条件0,如果条件1不成立,则条件2不执行;非短路运算符条件1 & 条件2,两个条件都会执行。6 .怎样取得数组的长度?arr.length7 .实现数组拷贝(复制)的 2种方法?- System.arraycopy(src , srcPos, dest , destPos , length);src -源数组。srcPos -源数组中的起始位置。_ dest -目标数组。destPos -目标数据中的起始位置。length -要复制

5、的数组元素的数量。一 Arrays.copyOf(src , length):是 JDK1.6 版本提供的方法,比起 System.arraycopy()使用更简便.8.java中的4种访问制权限有哪些?分别作用范围是什么?.public :最大访问控制权限,对所有的类都可见。(2) .protect :修饰的,在类内部、同一个包、子类中能访问(3) .default :包访问权限,即同一个包中的类可以可见。默认不显式指定访问控制权限 时就是default包访问控制权限。(4) .private :最严格的访问控制权限,仅该类本身可见。9.JAVA5的新特性有哪些?(1)循环(For-each

6、 循环) for (type variable : array) bodyfor (type variable : arrayList)body而1.4必须是:for (int i = 0; i array.length; i+) type variable =arrayi;bodyfor (int i = 0; i arrayList.size(); i+)type variable = (type) arrayList.get(i); body (2)泛型以ArrayList为例,包括创建一个容器对象和取得容器内对象操作:1.5 ArrayList arrayList =new Array

7、List(); arrayList.get(i)1.4 ArrayList arrayList =new ArrayList();(Type) arrayList.get(i)(3)自动装箱拆箱在JDK5.0以前,在原始类型与相应的包装类之间的转化是不能自动完成的。要完成这种转化,需要手动调用包装类的构造函数,在 JDK5.0环境中,可以自动转化:1.5 Integer wrapper = n;int n = wrapper;1.4 Integer wrapper = new Integer(n);int n = wrapper.intValue();自动装包/拆包大大方便了基本类型数据和它们

8、包装类地使用。自动装包:基本类型自动转为包装类.(int Integer);自动拆包:包装类自动转为基本类型.(Integer int);(4)静态导入静态导入功能对于 JDK 5.0以前的版本是不支持的。import static java.lang.Math;import static java.lang.System;.1.5 out.println(sqrt(PI);1.6 System.out.println(Math.sqrt(Math.PI);(5)可变参数(Varargs)可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。在JDK

9、1.5之前,可以用重载来实现, 但是这样就需要写很多的重载函数。line1 public void write(Object. objs) line2 for (Object obj: objs)line3 System.out.println(obj);line4 10 .面向对象编程中两种对象组合方式is-a和has-a :厂(1).is-a组合:一个类继承具有相似功能的另一个类,根据需要在所继承的类基础上进 行扩展。优点:具有共同属性和方法的类可以将共享信息抽象到父类中,增强代码复用性,同时也是多态的基础。缺点:子类中扩展的部分对父类不可见,另外如果共性比较少的时候使用继承会增加冗余代码

10、。(2) .has-a组合:has-a组合是在一个类中引用另一个类作为其成员变量。优点:可扩展性和灵活性高。在对象组合关系中应优先考虑has-a组合关系。缺点:具有共性的类之间看不到派生关系。(3) .use-a组合:是一个类中使用到了另外一个类,依赖关系11 .构造方法(构造器)特点?Java中的构造器(构造方法)声明在类内部。方法名与类名一致的方法叫构造方法构造方法不能声明返回值类型。构造方法可以包含参数,参数一般是创建对象实例必须依赖的条件(前提条件)。子类默认调用父类的无参构造器,如果父类没有无参构造器,那么子类必需显示的去调用父类的有参构造器如果一个类没有提供无参构造器,那么编译器将

11、会自动提供一个无参构造器。12 .JAVA中属性和方法的静态绑定和动态绑定?静态绑定:Java根据引用变量类型查找属性动态绑定:java根据实际的对象查找方法13 . JavaBean 规范?1) 必须有包(package)2) Java类,具有无参数构造器3) 有用getXxx()和 setXxx()声明的Bean属性如:getName()和 setName(String n)声明的 Bean属性为:name,不是否有实例变 量name无关boolean类型的get方法可以有两种形式:getMarried()戒者 isMarried()4)必须实现序列化接口(注:在学习 IO的时候具体学习)

12、14.static关键字的特点?static静态关键字修饰:属性、方法、内部类、代码块static修饰的资源属于类级别,是全体对象实例共享的资源static变量在类加载期间初始化静态代码块是在类加载期间运行的代码块,由于类只加载一次,所以静态代码块只执行一次!15 .final关键字的特点?final可以修饰类,方法,变量final修饰的类,不能再被继承final修饰的方法,不能覆盖 final方法final修饰的变量final的局部变量,只能初始化不能改final的方法参数,不能改final的引用,引用指向不能改,但是对象的属性可以改16 .常见的final类有哪些?Java的String就

13、是final类,不能被继承!(Math 是 final 类,不能被继承!Integer 、 Long、 Character 等包装类是final 类,不能被继承!17 . 抽象类和接口的区别 ?抽象类 -不具体的类1 抽象方法,只有行为的概念,没有具体的行为实现。使用: abstract 关键字修饰,并且没有方法体。2 包含抽象方法的类,就一定是抽象类。使用: abstract 关键字修饰,包含抽象方法。如:平面图形一定可以计算面积。public abstract class CRMSystempublic abstract Client addClient( String name, Str

14、ing qq);3 抽象方法和抽象类非常适合作为系统的分析和设计的工具。4 抽象类不能直接创建实例。可以定义引用变量。5 抽象类只能被继承,一个具体类继承一个抽象类,必须实 现所有抽象方法。接口6 . 接口:全部的方法都是抽象方法,全部的属性都是常量。接口用来表示纯抽象概念,没有任何具体的方法和属性。7 .不能实例化,可以定义变量。8 .接口变量可以引用具体实现类的实例。9 .接口只能被实现,一个具体类实现接口,必须使用全部的 抽象方法。10 .接口之间可以继承。11 .一个具体类可以实现多个接口,实现多继承现象,表示: 一个概念即是XXX 也是XXX.12 .接口中的属性,默认是常量publ

15、ic static final13 .接中的方法一定是:public abstract14 .实现一个接口,使用关键字implements, 实现实际上是一种继承关系。接口和实现类是父子类型的关系18 . 重载和重写的区别 ?重载:方法名相同,参数不同(参数类型或者长度)重载和修饰符和返回类型无关。一是方法的参数列表必须改变,包括参数的类型,参数的个数多少,参数顺序。二是重载对返回类型,访问修饰符,异常声明没有任何限制,可以作任意的修改。实质上,重载只是创建了一个方法而已,特殊的地方在于方法的名字。重写:两同两大一小(规则)两同:方法名相同 参数类型 相同两小:返回值类型抛出的异常要小一大:访

16、问控制修饰符大( 1 )重写方法必须和被重写方法具有相同的参数列表,返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型。(2)重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声明为public的方法重写成一个 protected的方法)。(3)只有实例方法才能被重写,超类中的final方法不能被重写。(4)重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常。19 .=和 equals。的区别?“=,比较引用值和基本数据类型是否相等。xxx.equals()方法比较对象的内容是否相等。默认的比较规则是:比较引用20 .为什么要同时覆盖ha

17、shcode()和equals。?hashCode()方法要不equals方法一同覆盖(Sun公司规定) 当两个对象equals比较为true时,应具有相同的 hashCode()值 当两个对象equals比较为false时,应具有不相同的hashCode()值hashCode()值要稳定(一致性),一个对象创建以后就不应该再变化 默认的hashCode(直是当前堆对象地址转换的一个整数,这个整数不是内存地址! 在java的中,判断两个对象是否相等的规则是: 首先,判断两个对象的hashCode是否相等如果不相等,认为两个对象也不相等 如果相等,则判断两个对象用equals运算是否相等如果不相

18、等,认为两个对象也不相等 如果相等,认为两个对象相等21 .String类有哪些常用的方法 ?charAt()length()trim()toLowerCase()toUpperCase()indexOf()lastIndexOf()endsWith()startsWith()substring(int start, int end)substring(int start)toCharArray()22 .String,StringBuilder,StringBuffer 的区别?String = char口 +操作(复制创建新对象)char口不可变StringBuilder = char口

19、+ 对char口操作(处理当前数组内容)char口可变 1) StringBuilder是变长字符序列2) StringBuilder 方法:append , insert .都返回当前 StringBuilder 对象本身的引用StringBuffer 和 StringBuilder API 几乎一样!StringBuffer是java早期提供的(JDK1.0),速度稍慢,线程安全StringBuilder是Java5以后提供的(JDK5.0),速度快,非线程安全23.谈谈集合框架的理解?集合框架包括集合不映射(Collection and Map )List元素有先后次序的集合,元素有in

20、dex位置,元素可以重复,继承自 Collection接 口,实现类:ArrayList, Vector, LinkedListList表示有先后次序的对象集合ArrayList是使用变长数组算法实现的,ArrayList实现自List1) ArrayList 和 Vector 的比较Vector(1.0版本提供的),线程安全的,效率稍低,也是使用变长数组算 法实现的,继承自 List接口ArrayList,线程不安全的,效率高速度快(现在较常用)2) ArrayList 和 LinkedList 的比较LinkedList是采用双向循环链表实现的ListArrayList是采用变长数组算法实

21、现的的List在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都 会被移动;而在 LinkedList的中间插入或删除一个元素的开销是固定的。ArrayList查询速度快,而 LinkedList增删速度快Set元素无续,不能重复添加,是数学意义上的集合,继承自Collection接口实现类:HashSet(是一个只有 Key的 HashMap),使用 Set时要重写hashCode,equals方 法HashMap以键-值对(关键字:值)的形式存储对象,关键字 key是唯一的、不重复的1) key可以是任何对象,Value可以任何对象2) (key: value)成对放

22、置在集合中3) 重复的key算一个,重复添加是替换操作(会覆盖原来的元素)4) HashMap根据key检索查找value值HashMap 新,非线程安全,不检查锁,快Hashtable 旧(JDK1.2版本以前),线程安全,检查锁,慢一点(差的很小)farena培丙牌抵23 .散列表的特点?散列表中存放的对象是不连续的,所以称为“散列表”散列表的优点:查找迅速在ArrayList中查找 Mac,顺序查找,需要查找 5次在HashMap中(底层实现原理是散列表)查找 Mac,经过散列运算,仅需 1次散列表原理ArrayList)812345Tom:2 Jerry:4 Andy:6 John:9

23、 Mac:5 Lee:3技耶,力加e克找数值,即: 加=例*”益案直询5烈HaihMpTom,二史y;-ndQ、932)45 *7null null null ?C null Andy311口j 同Mac ,hashcode()%104”一 一1 : .I Af T ?二二:1+24 .java泛型的作用是什么?泛型是Java5以后提出的语法现象,作用是在编译期检查的类型约束(运行期不检查泛型),泛型可以用来约束类中元素的类型25 .Collection 和 Collections 的区别?Collection 是集合接口,下面有子接口, List,Set集合的工具类为Collections ,同数组的工具类Arrays 相同,其中提供了许多的方法,诸如排序、二分查找、打乱、填充等操作。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1