JAVA面试题2

合集下载

Java及面向对象相关的面试题集及参考解答(第2部分)

Java及面向对象相关的面试题集及参考解答(第2部分)

1.3
模拟面试试题 ............................................................................................................................. 22 1.3.1 1.3.2 1.3.3 单选题 ................................................................................................................................. 22 填空题 ................................................................................................................................. 24 编程题 ................................................................................................................................. 24
模拟面试题参考解答 ................................................................................................................... 5 1.2.1 1.2.2 问答题参考解答 ................................................................................................................... 5 编程题的参考解答 .........................................................................................பைடு நூலகம்................... 12

java上机面试题

java上机面试题

java上机面试题一、题目一:求两个数的和写一个Java程序,实现求两个整数的和。

解答:```javaimport java.util.Scanner;public class SumOfTwoNumbers {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入第一个整数:");int num1 = scanner.nextInt();System.out.print("请输入第二个整数:");int num2 = scanner.nextInt();int sum = num1 + num2;System.out.println("两个整数的和为:" + sum); }}```二、题目二:找出数组中的最大值给定一个整数数组,编写Java程序找出数组中的最大值。

解答:```javapublic class MaxValueInArray {public static void main(String[] args) {int[] array = {5, 8, 3, 2, 9, 1, 7};int max = array[0];for (int i = 1; i < array.length; i++) {if (array[i] > max) {max = array[i];}}System.out.println("数组中的最大值为:" + max);}}```三、题目三:字符串反转编写一个Java程序,实现对一个字符串进行反转。

解答:```javapublic class StringReverse {public static void main(String[] args) {String str = "Hello World";String reversedStr = "";for (int i = str.length() - 1; i >= 0; i--) {reversedStr += str.charAt(i);}System.out.println("反转后的字符串为:" + reversedStr);}}```以上是三个Java上机面试题的答案,分别涉及求两个数的和、找出数组中的最大值以及字符串反转。

java面试题库java面试题目及答案(3篇)

java面试题库java面试题目及答案(3篇)

第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. 类和对象题目:请解释类和对象之间的关系。

答案:类是对象的模板,对象是类的实例。

京东java面试题

京东java面试题

京东java面试题京东Java面试题分析1. 概述JAVA是一种面向对象的程序设计语言,广泛应用于软件开发领域。

而京东作为中国最大的自营电商平台之一,对于招聘软件工程师,常常会设置JAVA面试题,以测试应聘者的编程能力和理解程度。

本文将分析几个常见的京东JAVA面试题,并给出解答和对应的代码实例。

通过学习这些面试题,读者可以加深对JAVA编程的理解,提升面试效果。

2. 面试题一:字符串反转输入一个字符串,将其逆序输出。

解答:可以使用StringBuilder的reverse方法,将字符串进行反转。

具体代码如下:```javaimport java.util.Scanner;public class StringReverse {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();StringBuilder reversedString = new StringBuilder(input);reversedString.reverse();System.out.println(reversedString.toString());}}```3. 面试题二:查找缺失数字给定一个长度为n-1的整数数组,其中的数字都是唯一的,并且范围在1到n之间。

请找出缺失的数字。

解答:可以通过计算数组中元素的累加和与理论累加和之间的差值,来找到缺失的数字。

具体代码如下:```javapublic class FindMissingNumber {public static void main(String[] args) {int[] array = {1, 2, 3, 4, 6, 7, 8, 9};int n = array.length + 1;int sum = (n * (n + 1)) / 2;int missingNumber = sum;for (int num : array) {missingNumber -= num;}System.out.println("Missing number: " + missingNumber);}}```4. 面试题三:数组中的最大差值给定一个整数数组,找出数组中的最大差值。

携程java面试题目(3篇)

携程java面试题目(3篇)

第1篇一、自我介绍1. 请做一个简短的自我介绍,包括你的姓名、毕业院校、专业、工作经历等。

2. 请简要介绍一下你的技术栈和熟悉的项目。

3. 你在求职过程中,最看重的是公司的哪些方面?二、Java基础1. 请解释Java中的final、static、synchronized关键字的作用和区别。

2. 请简述Java中的异常处理机制。

3. 请说明Java中的四种访问控制符的作用和区别。

4. 请描述Java中的集合框架,包括List、Set、Map等常用集合类的特点和应用场景。

5. 请解释Java中的反射机制及其应用场景。

6. 请简述Java中的多线程编程,包括线程创建、同步、通信等。

7. 请说明Java中的四种垃圾回收算法及其特点。

8. 请描述Java中的四种JVM内存区域及其作用。

9. 请解释Java中的类加载器及其作用。

10. 请说明Java中的四种设计模式及其应用场景。

三、项目经验1. 请简要介绍你参与过的项目,包括项目背景、目标、技术栈等。

2. 请描述你在项目中遇到的问题及解决方案。

3. 请举例说明你在项目中如何进行性能优化。

4. 请说明你在项目中如何进行代码优化。

5. 请描述你在项目中如何进行团队协作。

6. 请说明你在项目中如何进行需求分析。

7. 请描述你在项目中如何进行风险管理。

8. 请说明你在项目中如何进行项目进度管理。

9. 请描述你在项目中如何进行项目文档管理。

10. 请说明你在项目中如何进行项目测试。

四、数据库1. 请简述MySQL的存储引擎及其特点。

2. 请说明MySQL的索引类型及其作用。

3. 请描述MySQL的锁机制及其应用场景。

4. 请说明MySQL的视图、存储过程、触发器的应用场景。

5. 请描述MySQL的SQL优化方法。

6. 请说明MySQL的事务处理及其特点。

7. 请描述MySQL的备份与恢复方法。

8. 请说明MySQL的分区表及其应用场景。

9. 请描述MySQL的读写分离及其实现方法。

java模拟面试题目(3篇)

java模拟面试题目(3篇)

第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跳槽面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java的基本特点。

解析:Java具有“一次编写,到处运行”的特点,具有跨平台性;具有简单易学、面向对象、分布式、解释型、健壮性、安全性、体系结构中立、多线程、动态性等特点。

2. 什么是JVM?请简述JVM的作用。

解析:JVM(Java虚拟机)是运行所有Java应用程序的虚拟机。

它的作用是执行Java字节码,为Java程序提供运行环境,保证Java程序跨平台运行。

3. 请简述Java中的四种访问控制符及其作用。

解析:- public:表示公开的访问控制符,可以在任何地方访问。

- private:表示私有的访问控制符,只能在类内部访问。

- protected:表示受保护的访问控制符,可以在类内部和子类中访问。

- default(无修饰符):表示默认的访问控制符,只能在本包内访问。

4. 什么是封装?请举例说明。

解析:封装是将类的属性和行为封装在一起,对外只提供有限的接口。

例如,一个学生类,包含姓名、年龄、性别等属性,以及学习、休息等方法。

5. 什么是继承?请举例说明。

解析:继承是子类继承父类的方法和属性。

例如,一个动物类,包含行走、吃食等方法,一个猫类继承自动物类,则猫类具有行走、吃食等方法。

6. 什么是多态?请举例说明。

解析:多态是指同一个方法在不同对象上有不同的行为。

例如,一个形状类,包含计算面积的方法,一个圆形和正方形类继承自形状类,计算面积的方法在圆形和正方形类中有不同的实现。

7. 什么是接口?请举例说明。

解析:接口是一种规范,定义了类应该具有的方法,但不提供具体实现。

例如,一个Comparable接口,定义了compareTo方法,用于比较两个对象的大小。

8. 什么是泛型?请举例说明。

解析:泛型是一种类型参数化技术,可以在编译时进行类型检查,提高代码的安全性。

例如,一个List<T>泛型集合,可以存储任意类型的元素。

二、Java集合框架1. 请简述Java集合框架中的常用类及其特点。

动力节点—java面试题—基础方面

Java基础方面(二)21、是否可以继承String类答:String类是final类故不可以继承22、try {}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后答:会执行,在return前执行23、用最有效率的方法算出2乘以8等於几答:2 << 324、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对答:不对,有相同的hash code25、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递答:是值传递。

Java编程语言只有值传递参数。

当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。

对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的26、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上答:witch(expr1)中,expr1是一个整数表达式。

因此传递给switch和case语句的参数应该是int、short、ch ar 或者byte。

long,string 都不能作用于swtich27、ArrayList和Vector的区别,HashMap和Hashtable的区别答:就ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半就HashMap与HashTable主要从三方面来说。

一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map 接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value28、char型变量中能不能存贮一个中文汉字?为什么?答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的29、GC是什么?为什么要有GC答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

java三年面试题

java三年面试题一、Java基础1. 什么是Java?Java的特点和优势有哪些?2. 面向对象编程的基本概念是什么?Java如何支持面向对象编程?3. Java中的数据类型有哪些?它们的区别是什么?4. 什么是包?如何定义和使用一个包?5. Java中的访问修饰符有哪些?它们的作用是什么?6. 什么是异常处理?Java中的异常处理机制是如何实现的?7. Java中的集合框架有哪些?它们的特点和用途是什么?8. Java中的线程是什么?如何创建和启动一个线程?9. 什么是Java的反射机制?如何使用反射实现动态加载类和调用方法?10. 什么是Java的IO操作?Java中有哪些IO类和接口?二、Java高级特性1. 什么是Java的多态性?如何实现多态性?2. 什么是Java的内部类?它的作用和使用场景是什么?3. 什么是Java的Lambda表达式?如何使用Lambda表达式简化代码?4. 什么是Java的注解?如何定义和使用一个注解?5. 什么是Java的泛型?如何使用泛型提高代码的可读性和安全性?6. 什么是Java的序列化和反序列化?如何实现对象的序列化和反序列化?7. 什么是Java的设计模式?列举几种常见的设计模式并说明其应用场景。

8. 什么是Java的并发编程?Java中有哪些用于实现并发的工具和类?三、Java Web开发1. 什么是JavaWeb开发?简述JavaWeb开发的三层架构。

2. JavaEE和JavaSE有什么区别?它们的关系是什么?3. 什么是Servlet?如何创建和配置一个Servlet?4. 什么是JSP?如何使用JSP开发动态网页?5. 什么是Java的Web框架?列举几种常见的Java Web框架并说明其特点和用途。

6. 什么是数据库连接池?如何使用Java中的连接池技术?7. 什么是Java的ORM框架?介绍几种常见的Java ORM框架并说明其优缺点。

Java经典面试题大全 带答案

Java经典面试题带答案一、单项选择题1.Java是从()语言改进重新设计。

A.AdaB.C++C.PasacalD.BASIC答案:B2.下列语句哪一个正确()A.Java程序经编译后会产生machine codeB.Java程序经编译后会产生byte codeC.Java程序经编译后会产生DLLD.以上都不正确答案:B3.下列说法正确的有()A.class中的constructor不可省略B.constructor必须与class同名,但方法不能与class同名C.constructor在一个对象被new时执行D.一个class只能定义一个constructor答案:C4.提供Java存取数据库能力的包是()A.java.sqlB.java.awtC.ngD.java.swing答案:A5.下列运算符合法的是()A.&&B.<>C.ifD.:=答案:A6.执行如下程序代码a=0;c=0;do{--c;a=a-1;}while(a>0);后,C的值是()A.0B.1C.-1D.死循环答案:C7.下列哪一种叙述是正确的()A.abstract修饰符可修饰字段、方法和类B.抽象方法的body部分必须用一对大括号{}包住C.声明抽象方法,大括号可有可无D.声明抽象方法不可写出大括号答案:D8.下列语句正确的是()A.形式参数可被视为localvariableB.形式参数可被字段修饰符修饰C.形式参数为方法被调用时,真正被传递的参数D.形式参数不可以是对象答案:A9.下列哪种说法是正确的()A.实例方法可直接调用超类的实例方法B.实例方法可直接调用超类的类方法C.实例方法可直接调用其他类的实例方法D.实例方法可直接调用本类的类方法答案:D二、多项选择题1.Java程序的种类有()A.类(Class)B.AppletC.ApplicationD.Servlet2.下列说法正确的有()A.环境变量可在编译sourcecode时指定B.在编译程序时,所能指定的环境变量不包括class path C.javac一次可同时编译数个Java源文件D.javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD3.下列标识符不合法的有()A.newB.$UsdollarsC.1234D.car.taxi答案:ACD4.下列说法错误的有()A.数组是一种对象B.数组属于一种原生类C.intnumber=[]={31,23,33,43,35,63}D.数组的大小可以任意改变答案:BCD5.不能用来修饰interface的有()A.privateB.publicC.protectedD.static答案:ACD6.下列正确的有()A.call byvalue不会改变实际参数的数值B.call by reference能改变实际参数的参考地址C.call byreference不能改变实际参数的参考地址D.call byreference能改变实际参数的内容答案:ACD7.下列说法错误的有()A.在类方法中可用this来调用本类的类方法B.在类方法中调用本类的类方法时可直接调用C.在类方法中只能调用本类中的类方法D.在类方法中绝对不能调用实例方法答案:ACD8.下列说法错误的有()A.Java面向对象语言容许单独的过程与函数存在B.Java面向对象语言容许单独的方法存在C.Java语言中的方法属于类中的成员(member)D.Java语言中的方法必定隶属于某一类(对象),调用方法与过程或函数相同答案:ABC9.下列说法错误的有()A.能被java.exe成功运行的javaclass文件必须有main()方法B.J2SDK就是Java APIC.Appletviewer.exe可利用jar选项运行.jar文件D.能被Appletviewer成功运行的javaclass文件必须有main()方法答案:BCD三、判断题1.Java程序中的起始类名称必须与存放该类的文件名相同。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.C++或Java中的异常处理机制的简单原理和应用。

当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。

违反语义规则包括2种情况。

一种是JAVA类库内置的语义检查。

例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。

另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw 关键字引发异常。

所有的异常都是ng.Thowable的子类。

2. Java的接口和C++的虚类的相同和不同处。

由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。

与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。

当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。

3. 垃圾回收的优点和原理。

并考虑2种回收机制。

Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。

由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。

垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。

垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

4. 请说出你所知道的线程同步的方法。

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

5. 请讲一讲析构函数和虚函数的用法和作用。

6. Error与Exception有什么区别?Error表示系统级的错误和程序不必处理的异常,Exception表示需要捕捉或者需要程序进行处理的异常。

7. 在java中一个类被声明为final类型,表示了什么意思?表示该类不能被继承,是顶级类。

8. 描述一下你最常用的编程风格。

9. heap和stack有什么区别。

栈是一种线形集合,其添加和删除元素的操作应在同一段完成。

栈按照后进先出的方式进行处理。

堆是栈的一个组成元素10. 如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。

public class BigInt(){int[] ArrOne = new ArrOne[1000];String intString="";public int[] Arr(String s){intString = s;for(int i=0;i<ArrOne.leght;i++){11. 如果要设计一个图形系统,请你设计基本的图形元件(Point,Line,Rectangle,Triangle)的简单实现12,谈谈final, finally, finalize的区别。

final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。

因此一个类不能既被声明为abstract的,又被声明为final的。

将变量或方法声明为final,可以保证它们在使用中不被改变。

被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。

被声明为final的方法也同样只能使用,不能重载。

finally—再异常处理时提供finally 块来执行任何清除操作。

如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入finally 块(如果有的话)。

finalize—方法名。

Java 技术允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。

这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。

它是在Object 类中定义的,因此所有的类都继承了它。

子类覆盖finalize() 方法以整理系统资源或者执行其他清理工作。

finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

13,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?匿名的内部类是没有名字的内部类。

不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。

14,Static Nested Class 和Inner Class的不同,说得越多越好(面试题有的很笼统)。

Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。

Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。

具体可见http:///articles/services/view.asp?id=704&page=1注:静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象第四,&和&&的区别。

&是位运算符。

&&是布尔逻辑运算符。

15,HashMap和Hashtable的区别。

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap 类没有分类或者排序。

它允许一个null 键和多个null 值。

Hashtable 类似于HashMap,但是不允许null 键和null 值。

它也比HashMap 慢,因为它是同步的。

16,Collection 和Collections的区别。

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

Collection是个java.util下的接口,它是各种集合结构的父接口。

17,什么时候用assert。

断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。

如果表达式计算为false,那么系统会报告一个Assertionerror。

它用于调试目的:assert(a > 0); // throws an Assertionerror if a <= 0断言可以有两种形式:assert Expression1 ;assert Expression1 : Expression2 ;Expression1 应该总是产生一个布尔值。

Expression2 可以是得出一个值的任意表达式。

这个值用于生成显示更多调试信息的String 消息。

断言在默认情况下是禁用的。

要在编译时启用断言,需要使用source 1.4 标记:javac -source 1.4 Test.java要在运行时启用断言,可使用-enableassertions 或者-ea 标记。

要在运行时选择禁用断言,可使用-da 或者-disableassertions 标记。

要系统类中启用断言,可使用-esa 或者-dsa 标记。

还可以在包的基础上启用或者禁用断言。

可以在预计正常情况下不会到达的任何位置上放置断言。

断言可以用于验证传递给私有方法的参数。

不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。

不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。

另外,断言不应该以任何方式改变程序的状态。

18,GC是什么? 为什么要有GC? (基础)。

GC是垃圾收集器。

Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。

要请求垃圾收集,可以调用下面的方法之一:System.gc()Runtime.getRuntime().gc()19,String s = new String("xyz");创建了几个String Object?两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

20,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;21,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。

可修改为s1 =(short)(s1 + 1) 。

short s1 = 1; s1 += 1正确。

22,sleep() 和wait() 有什么区别? 搞线程的最爱sleep()方法是使线程停止一段时间的方法。

在sleep 时间间隔期满后,线程不一定立即恢复执行。

这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

23,Java有没有goto?Goto—java中的保留字,现在没有在java中使用。

24,数组有没有length()这个方法? String有没有length()这个方法?数组没有length()这个方法,有length的属性。

String有有length()这个方法。

25,Overload和Override的区别。

Overloaded的方法是否可以改变返回值的类型?方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding 是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

相关文档
最新文档