Java基础面试宝典
- 格式:pdf
- 大小:281.91 KB
- 文档页数:29
第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。
答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。
- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。
- 安全性:Java提供了强大的安全机制,如沙箱安全模型。
- 体系结构中立:Java不依赖于特定的硬件或操作系统。
- 高效:Java的运行速度接近C/C++。
- 多线程:Java内置多线程支持,便于实现并发处理。
- 动态性:Java在运行时可以进行扩展和修改。
2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。
答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。
- 管理内存,包括堆、栈、方法区等。
- 提供垃圾回收机制。
- 管理线程和同步。
3. Java内存模型题目:请简述Java内存模型的组成。
答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。
- 栈(Stack):存储局部变量和方法调用。
- 方法区(Method Area):存储类信息、常量、静态变量等。
- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。
- 程序计数器(Program Counter Register):存储线程的当前指令地址。
4. Java关键字题目:请列举并解释Java中的几个关键字。
答案:- `public`:表示访问权限为公开。
- `private`:表示访问权限为私有。
- `protected`:表示访问权限为受保护。
- `static`:表示属于类本身,而非对象实例。
- `final`:表示常量或方法不能被修改。
- `synchronized`:表示线程同步。
- `transient`:表示数据在序列化时不会被持久化。
二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。
答案:类是对象的模板,对象是类的实例。
第1篇一、Java基础知识1. 请简述Java语言的特点。
2. 什么是Java虚拟机(JVM)?它有什么作用?3. 什么是Java的内存模型?请解释Java内存模型中的几个关键概念:堆、栈、方法区、程序计数器、本地方法栈。
4. 什么是Java中的反射机制?请举例说明反射在Java中的应用。
5. 什么是Java中的泛型?请解释泛型的原理和作用。
6. 请简述Java中的四种访问控制符:public、protected、default、private。
7. 什么是Java中的继承和多态?请举例说明继承和多态在实际开发中的应用。
8. 什么是Java中的封装?请举例说明封装在实际开发中的应用。
9. 什么是Java中的接口和抽象类?它们之间有什么区别?10. 什么是Java中的异常处理?请解释try-catch-finally语句的执行顺序。
二、Java集合框架1. 请列举Java集合框架中的常用集合类及其特点。
2. 请简述ArrayList、LinkedList、HashMap、HashSet的区别。
3. 什么是Java中的泛型集合?请举例说明泛型集合的应用。
4. 什么是Java中的迭代器(Iterator)和枚举器(Enum)?请比较它们的区别。
5. 什么是Java中的List、Set、Map的遍历方法?6. 请解释Java中的ArrayList和LinkedList的内部实现原理。
7. 什么是Java中的HashMap的扩容机制?8. 什么是Java中的HashSet的内部实现原理?9. 请解释Java中的线程安全集合类,如CopyOnWriteArrayList、ConcurrentHashMap。
三、Java多线程与并发1. 什么是Java中的线程?请解释线程的创建、调度和同步。
2. 请简述Java中的线程状态,如新建、就绪、运行、阻塞、等待、超时等待、终止。
3. 什么是Java中的同步机制?请解释synchronized关键字的作用。
Java⾯试宝典(2020版)⼀、Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发⼯具包,提供了 java 的开发环境和运⾏环境。
JRE:Java Runtime Environment 的简称,java 运⾏环境,为 java 的运⾏提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的⼯具。
简单来说:如果你需要运⾏ java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。
2. == 和 equals 的区别是什么?== 解读对于基本类型和引⽤类型 == 的作⽤效果是不同的,如下所⽰:基本类型:⽐较的是值是否相同;引⽤类型:⽐较的是引⽤是否相同;代码⽰例:1 String x = "string";2 String y = "string";3 String z = new String("string");4 System.out.println(x==y); // true5 System.out.println(x==z); // false6 System.out.println(x.equals(y)); // true7 System.out.println(x.equals(z)); // true代码解读:因为 x 和 y 指向的是同⼀个引⽤,所以 == 也是 true,⽽ new String()⽅法则重写开辟了内存空间,所以 == 结果为 false,⽽equals ⽐较的⼀直是值,所以结果都为 true。
equals 解读equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals ⽅法,把它变成了值⽐较。
java面试题大全-基础方面Java基础方面:1、作用域public,private,protected,以及不写时的区别答:区别如下:作用域当前类同一package 子孙类其他packagepublic √√√√protected √√√×friendly √√××private √×××不写时默认为friendly2、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)答:匿名的内部类是没有名字的内部类。
不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现3、Static Nested Class 和 Inner Class的不同答:Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。
Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。
注:静态内部类(Inner Class)意味着1创建一个static 内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象4、&和&&的区别答:&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)5、Collection 和 Collections的区别答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作6、什么时候用assert答:assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。
在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。
Java程序员面试题集(1-50)一、Java基础部分1、面向对象的特征有哪些方面?答:面向对象的特征主要冇以下儿个方面:1)抽彖:抽象是将一类对彖的共同特征总结出来构造类的过程,包括数据抽象和行为抽彖两方而。
抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
2)继承:继承是从已有类得到继承信息创建新类的过程。
提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派纶类)。
继承讣变化中的软件系统有了一定的延续性,同时继承也是封装程序小可变因索的重要手段(如果不能理解请阅读阎広博丄的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。
3)封装:通常认为封装是把数据和操作数据的方法绑定起來,对数据的访问只能通过已定义的接口。
面向对象的木质就是将现实世界描绘成一系列完全自治、封闭的对象。
我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。
可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全口动洗衣机的差别,明显全口动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为儿个按键就搞定了所有的事情)。
4)多态性:多态性是指允许不同了类型的对象对同一消息作出不同的响应。
简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。
多态性分为编译时的多态性和运行时的多态性。
如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为: 当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但--切对A系统來说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,其至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。
方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。
JAVA程序员面试宝典1. 面向对象的特征有哪些方面1.1 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。
抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。
抽象包括两个方面: 一是过程抽象; 二是数据抽象。
1.2 继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。
对象的一个新类可以从现有的类中派生,这个过程称为类继承。
新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。
派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
1.3 封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。
面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
1.4 多态性:多态性是指允许不同类的对象对同一消息作出响应。
多态性包括参数化多态性和包含多态性。
多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
2、String是最基本的数据类型吗?基本数据类型包括byte、int、char、long、float、double、boolean和short。
ng.String类是final类型的,因此不可以继承这个类、不能修改这个类。
为了提高效率节省空间,我们应该用StringBuffer类3. int 和Integer 有什么区别Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。
int是java的原始数据类型,I nteger是java为int提供的封装类。
Java为每个原始类型提供了封装类。
原始类型封装类boolean -- Boolean char--Character byte--Byte short--Short int--Integer l ong--Long float--Float double--Double引用类型和原始类型的行为完全不同,并且它们具有不同的语义。
Java面试宝典(基础篇)一.java 基础1.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?重写和重载的区别?答: Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。
与此相对,方法覆盖是说子类重新定义了父类的方法。
方法覆盖必须有相同的方法名,参数列表和返回类型。
覆盖者可能不会限制它所覆盖的方法的访问。
重载(Overloading)(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。
多个同名函数同时存在,具有不同的参数个数/类型。
重载Overloading是一个类中多态性的一种表现。
(2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。
无法以返回型别作为重载函数的区分标准。
重写(Overriding)(1)父类与子类之间的多态性,对父类的函数进行重新定义。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。
在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。
但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
方法重写又称方法覆盖。
(2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
(3)子类函数的访问修饰权限不能少于父类的;2.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?答: 当新对象被创建的时候,构造函数会被调用。
每一个类都有构造函数。
在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。
java面试宝典完整版(所有面试问题及答案)java面试宝典最新完整版(全部面试问题及答案)一. Java基础部分......................................................... (2)1、一个.java源文件中是否可以包括多个类(不是内部类)?有什么限制? (2)2、Java有没有goto?...................................................... (2)3、说说和的区分。
....................................................... . (2)4、在JAVA中如何跳出当前的多重嵌套循环? (2)5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? (2)6、short s1 =1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? (2)7、char型变量中能不能存贮一个中文汉字?为什么? (2)8、用最有效率的方法算出2乘以8等於几?29、请设计一个一百亿的计算器......................................................... .. (2)10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?211、==和equals方法到底有什么区分?........................................................ (2)12、静态变量和实例变量的区分?........................................................ . (2)13、是否可以从一个static方法内部发出对非static方法的调用? (2)14、Integer与int的区分......................................................... . (2)15、Math.round(11.5)等於多少?Math.round(-11.5)等於多少? (2)16、下面的代码有什么不妥之处?........................................................ (2)17、请说出作用域public,private,protected,以及不写时的区分 (2)18、Overload和Override的区分。
第一篇Java基础面试题1.说下面向对象四大特性封装性、继承性、多态性、抽象性。
2.Java语言有些特点简单性:Java没有像C++那样的指针,运算符重载,类的多继承。
并且实现了垃圾的自动回收,简化了程序开发者对于内存管理的工作。
面像对象:对象是指封装数据和操作方法的程序实体。
Java提供了简单的类机制以及动态接口。
表现形式是封装继承多态。
分布式:它有一套很齐全的通信及相关功能的程序库,可以处理TCP/IP协议也可以处理其他的协议。
健壮性:用Java编写的程序能在多种情况下稳定运行。
Java在运行和编译的时候都会对可能出现的错误进行检查验证。
通过集成异常处理机制,在编译时提示可能出现的但是未被处理的异常,以防止系统的崩溃。
可移植性:Java是与平台无关的,Java类库中也实现了与平台无关的接口,这样类库也是可以移植的。
多线程机制:Java具有多线程机制,使得程序能够并行执行,同步机制也保证了数据的共享,线程也有优先级别,有利于使用线程级别控制不同的任务。
3.什么是Java程序的主类?应用程序和小程序的主类有何不同?一个程序中可以有多个类,但只能有一个主类。
在Java应用程序中,这个类是指包含main ()方法的类。
而在Java小程序中,这个主类是一个继承子系统类JApplet或Applet的子类。
应用程序的主类不一定要求是public类但小程序的主类必须是public类。
主类是Java程序执行的入口点。
简单说应用程序是从主线程启动(也就是 main() 方法)。
applet 小程序没有 main() 方法,主要是嵌在浏览器页面上运行(调用init()或者run()来启动),嵌入浏览器这点跟 flash 的小游戏类似。
4.访问修饰符public,private,protected,以及不写(默认)时的区别?类的成员不写访问修饰时默认为default。
默认对于同一个包中的其他类相当于公开(publi c),对于不是同一个包中的其他类相当于私有(private)。
JAVA软件⼯程师⾯试宝典易初电⼦软件⼯程师⼊职试卷(JA V A语⾔)姓名:成绩:以下试卷重点考察员⼯的JA V A语⾔、数据库常识。
要求时间为1个半⼩时。
对于JA V A 语⾔不熟悉的应聘者,可以申请调换成C试卷。
第⼀部分:请从理论上或逻辑的⾓度在后⾯的空格中填⼊后续字母或数字;1、1, 1, 2, 3, 5 ,____2、3968, 63, 8, 3 ,____请从右边的图形中选择⼀个正确的(a,b,c,d)填⼊左边的空⽩处3、4、第⼆部分:每⼀组题后都有⼀个或若⼲个结论,你得假设这些题的说法是对的。
如果你认为根据这些说法所得出的结论是真实和符合逻辑的,就在打钩。
例如“例⼀:A,我⽐约翰⾼,约翰⽐乔⾼。
所以,我⽐乔⾼。
(是)1、这条街上的商店⼏乎都没有霓虹灯,但这些商店都有遮蓬。
所以,有些商店有遮蓬或霓虹灯。
有些商店既有遮蓬⼜有霓虹灯。
2、⼟⾖⽐西红柿便宜,我的钱不够买两磅⼟⾖。
所以,我的钱不够买⼀磅西红柿。
我的钱可能够,也可能不够买⼀磅西红柿。
3、韦利.美斯是个和斯坦.茂斯尔⼀样强的棒球击⼿。
斯坦茂斯尔是个⽐⼤多数⼈都要强的棒球击⼿。
所以,韦利.美斯应是这些选⼿中最出⾊的。
斯坦.茂斯尔应是这些选⼿中最出⾊的,尤其是在国内⽐赛更是如此。
韦利.美斯是个⽐⼤多数⼈都要强的棒球击⼿。
4、格林威尔在史密斯城的东北,纽约在史密斯城的东北,所以,纽约⽐史密斯城更靠近格林威尔。
史密斯城在纽约的西南。
纽约离史密斯城不远。
5、你正在开车⾏驶,如果你突然停车,那么跟在后⾯的⼀辆卡车将撞上你的车。
如果你不这么做,你将撞倒⼀个过马路的妇⼥,所以,⾏⼈不应在马路上⾏⾛。
那辆卡车车速太快。
你要么被后⾯那辆卡车撞上,要么撞倒那个妇⼥。
第三部分:1、⾯向对象的特征有哪些⽅⾯2、int 和 Integer 有什么区别3、说出Servlet的⽣命周期4、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。
1 Java基本程序语言篇1.1在JA V A中,如何跳出当前的多重嵌套循环?1. 用break; return 方法。
1.2一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?1. 可以。
但最多只能有一个public类型的,且该类名必须与文件名相同。
1.3java中会存在内存泄漏吗,请简单描述。
1. 会。
如:int i,i2; return (i-i2); //when i为足够大的正数,i2为足够大的负数。
结果会造成溢位,导致错误。
1.4垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?1.对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。
通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。
通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。
当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。
2.可以。
程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。
1.5简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
1. 区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型2. b.逻辑操作不会产生短路1.6用最有效率的方法算出2乘以8等於几?2 << 31.7char型变量中能不能存贮一个中文汉字?为什么?答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的1.8float型float f=3.4是否正确?答:不正确。
精度不准确,应该用强制类型转换,如下所示:float f=(float)3.41.9&和&&的区别。
1. &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
1.10GC是什么? 为什么要有GC?1. GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
1.11什么时候用assert。
1. assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。
在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。
一般来说,assertion用于保证程序最基本、关键的正确性。
assertion检查通常在开发和测试时开启。
为了提高性能,在软件发布后,assertion检查通常是关闭的。
1.12short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?1. short s1 = 1; s1 = s1 + 1; s1+1运算结果是int型,需要强制转换类型2. short s1 = 1; s1 += 1;(可以正确编译)1.13Java有没有goto?1. java中的保留字,现在没有在java中使用。
1.14数组有没有length()这个方法? String有没有length()这个方法?1. 数组没有length()这个方法,有length的属性。
String有有length()这个方法。
1.15swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?1. switch(expr1)中,expr1是一个整数表达式。
因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。
long,string 都不能作用于swtich。
1.16垃圾回收的优点和原理。
并考虑2种回收机制。
1. Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。
由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。
垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。
垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
1.17描述一下JVM加载class文件的原理机制?1. JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。
它负责在运行时查找和装入类文件的类。
1.18描述一下你最常用的编程风格。
1. 注意编码规则,符合编码要求。
2. 变量,类等起名要有意义。
3. 经常格式化代码,注意格式。
4. 代码中加入测试方法或测试类,尽量提早发现错误。
5. 代码中要加入注释,为别人和自己将来理解代码带来方便。
1.19说一说标识符的命名规则,以及java的编程规范。
1. Java标识符的命名规则:i. 标识符由字母、数字、下划线“_”、美元符号“$”或者人民币符号“¥”组成,并且首字母不能是数字。
ii. 不能把关键字和保留字作为标识符。
iii. 标识符没有长度限制。
iv. 标识符对大小写敏感。
2. Java编程规范:i. 类名和接口名:首字母大写,其余字母小写。
如SamDocii. 方法名和变量名:首字母小写,其余的字母大写。
如bothEyesOfDoll。
iii. 包名:字母全部小写。
如,com.abc.dollapp。
iv. 常量名:采用大写形式,单词之间以下划线“_”隔开。
如DEFAULT_COLOR_DOL。
1.20使用switch语句的时候需要注意什么事项?1. 在switch(exp)语句中,exp表达式的类型必须是与int类型兼容的基本类型,即能自动转换为int的类型。
包括byte、short、char和int类型。
其他类型不能作为exp表达式的类型。
2. 在case value字句中,value表达式必须满足以下条件:i. value类型必须是与int类型兼容的基本类型,包括byte、short、char和int类型。
ii. value必须是常量。
iii. 每个case子句的value表达式的值必须不同。
3. 在switch语句中最多只能有一个default子句。
default子句是可选的,并且可以位于switch语句中的任何位置。
4. 如果switch表达式与某个case表达式匹配,或者与default情况匹配,就从case子句或default子句开始执行。
假如遇到了break语句,就退出整个switch语句,否则依次执行switch语句中后续的case子句,不再检查case表达式的值。
1.21比较break、continue和return语句的区别。
1. break语句可嵌在switch、for、while或者do循环语句中,它的作用是使用程序执行到break时就跳出包含它的语句,然后紧接着执行该语句之后的其他语句。
2. coutinue语句可嵌在for、while、或者do语句中,它的作用是使程序执行到continue时就忽略其下面的语句,而跳到条件处判断。
3. Return语句退出本方法,跳到上层调用方法。
1.22垃圾回收的优点和特点。
1. 垃圾回收具有以下优点:i.把程序从复杂的内存跟踪、监测和释放等的工作中解放出来,减轻程序员进行内存管理的负担。
ii.防止系统内存被非法释放,从而使系统更加健壮和稳定。
2. 垃圾回收具有以下特点:i.只有当对象不再被程序中的任何引用变量引用时,它的内存才可能被释放。
ii.程序无法迫使垃圾回收器立即执行垃圾回收操作。
iii. 当垃圾回收器将要回收无用对象的内存时,先调用该对象的finalize()方法,该方法有可能使对象复活,导致垃圾回收器取消回收该对象的内存。
1.23堆和栈有什么区别。
1. 栈是一种线形集合,其添加和删除元素的操作应在同一段完成。
栈按照后进先出的方式进行处理。
堆是栈的一个组成元素。
2. 堆内存是用来存放由new创建的对象和数组,而栈内存是用来放一些基本的数据类型和对象的引用。
3. 当一段代码块定义一个变量时,JA V A就在栈中为这个变量分配相应的内存空间,当超过变量作用域后JA V A会自动释放掉为该变量分配的内存,而在堆中分配的内存需要由JA V A的虚拟机的自动垃圾回收器来管理,只有当内存不够时,垃圾回收器才来回收没有用的对象所占用的内存。
1.24写clone()方法时,通常都有一行代码,是什么?1. Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。
2 面向对象基础篇2.1描述Singleton模式?答:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式实现方式如下: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton{private final static Singleton s = new Singleton();public static Singleton getSingleton(){return s;}Private Singleton(){}}2.2面向对象的软件开发有哪些优点?1. 把软件系统看成是各种对象的集合,这更接近人的思维。
2. 软件需求的变动往往是功能的变动,而功能的执行者--对象一般不会有太大的变化。
这使得按照对象设计出来的系统结构比较稳定。
3. 对象包括属性和方法,对象把属性和方法的具体实现方式一起封装起来,这使得方法与之相关的属性不再分离,提高每个子系统的相对独立性,从而提高了软件的可维护性。
4. 支持封装、继承、多态和抽象,提高了软件的可重用性、可维护性和可扩展性。