Java面试题个人总结+答案
- 格式:docx
- 大小:21.56 KB
- 文档页数:16
Java面试题大全(答案版)1、一个".java"源文件中是否可以包括多个类(不是内部类)有什么限制可以,但是只能有一个类用public修饰,并且用public修饰的类名与文件名要一致2、&和&&的区别。
&和&&都可以用作逻辑与;&&还具有短路功能,即如果第一个表达式的结果为false,则不再计算第二个表达式;&还可以用作位运算符,当&操作符两边的表达式不是boolean 类型时,&表示按位与操作。
3、Java有没有gotojava中的保留字,现在没有在java中使用。
4、在JAVA中,如何跳出当前的多重嵌套循环break+变量控制与 return5、switch是否能作用在byte(拜特)上,是否能作用在long上,是否能作用在String上Switch可以作用在int上,而byte可以隐式转换为int 所以能作用在byte上不能作用在long上,也不能作用在String上6、short s1 = 1; s1 = s1 + 1;有什么错 short s1 = 1; s1 += 1;有什么错1在java中为int数据类型,short+int=int,大类型转为小类型,编译时,会报告需要强制转换类型的错误。
s1+=1不会报,因为JVM 会对它特殊处理(自动强转)7、char型变量中能不能存贮一个中文汉字为什么可以,char型变量是用来存储unicode(依妮Q特)编码的,而unicode编码包含了中文,所以是可以保存的8、编程题: 用最有效率的方法算出2乘以8等於几2<<3,表示将2左移3位;一个数左移几位就表示这个数乘以了2的几次方,左移运算,CPU直接支持,所以是最有效率的9、请设计一个一百亿的计算器思路:用两个数组分别保存两个操作数,再新建一个数组保存结果。
10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变引用变量不能变11、"=="和equals方法究竟有什么区别==和equals方法都可以用来比较两个对象是否是同一个对象。
java面试的题目及答案Java面试题目及答案(共计2000字)1. 介绍一下Java的特点及优点。
Java是一种通用、高级、面向对象的编程语言,具有以下特点和优点:- 简单性:Java相对于其他编程语言来说较为简单,容易学习和使用。
- 面向对象:Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的特性。
- 跨平台性:Java程序可以在不同的操作系统上运行,这是由于Java编译器将Java代码编译成字节码,并在Java虚拟机(JVM)上执行。
- 安全性:Java具有强大的安全特性,包括内存管理、异常处理和安全检查等,能够防止内存泄漏和崩溃等问题的发生。
- 多线程支持:Java提供了多线程编程的支持,使得程序可以并发执行,提高了程序的执行效率。
- 开源生态系统:Java拥有庞大的开源生态系统,包括许多优秀的开源框架和工具,方便开发人员快速构建应用程序。
2. 什么是Java虚拟机(JVM)?它的作用是什么?Java虚拟机(JVM)是Java的核心组件之一,它是一个可以执行Java字节码的虚拟机程序。
JVM主要有以下作用:- 平台无关性:JVM解释并执行Java字节码,使得Java程序可以在不同的操作系统上运行,大大提高了程序的可移植性和跨平台性。
- 内存管理:JVM负责Java的内存管理,包括堆、栈和方法区等,使用垃圾回收机制来自动管理内存,防止内存泄漏和崩溃等问题的发生。
- 虚拟化:JVM提供了对Java程序的虚拟化支持,允许使用多线程并发执行Java程序,提高程序的执行效率。
- 安全性:JVM提供了严格的安全检查机制,确保Java程序的安全性,避免恶意代码的执行。
- 动态扩展:JVM支持动态加载和链接Java类和库,使得Java程序能够在运行时根据需要加载和使用外部类和库。
3. 什么是面向对象编程(OOP)?Java是一种面向对象的编程语言吗?面向对象编程(OOP)是一种编程范式,以对象为中心,将数据和行为封装在一起,并通过对象之间的交互来完成任务。
2025年招聘Java开发工程师面试题与参考回答面试问答题(总共10个问题)第一题:请描述一下Java中的反射机制及其在Java编程中的应用场景。
答案:Java的反射机制是指在运行时,程序能够取得任何类或对象的内部信息,并且动态创建对象、调用对象的方法以及获取对象的属性。
以下是反射机制的一些关键点:1.反射机制允许在运行时动态地加载和调用类的方法。
2.反射机制可以获取类的构造方法、字段、方法和注解等信息。
3.反射机制提供了访问和修改类内部状态的能力。
应用场景:1.创建对象:通过反射机制,可以在运行时创建任意类的实例。
2.方法调用:在运行时动态调用任意对象的方法。
3.获取类信息:在运行时获取类的名称、父类、接口等信息。
4.动态代理:在实现动态代理时,通过反射机制动态创建代理对象。
5.脚本语言集成:某些脚本语言可以通过反射机制与Java代码进行交互。
解析:反射机制在Java编程中具有广泛的应用,以下是几个具体的例子:•在框架开发中,如Spring框架,反射机制被用来动态地注册和管理Bean。
•在插件系统中,反射机制允许在运行时动态加载和调用插件。
•在测试框架中,如JUnit,反射机制被用来动态调用测试方法。
•在JDBC编程中,反射机制可以用来动态创建数据库连接和执行SQL语句。
反射机制虽然功能强大,但也存在一些缺点,如性能开销大、代码难以理解等。
因此,在使用反射时,应尽量减少不必要的反射操作。
第二题:请简述Java中的多态性及其实现方式,并举例说明在Java中如何通过多态来简化代码设计。
答案:多态性是面向对象编程中的一个核心概念,它允许同一个接口或父类在不同的情况下表现出不同的行为。
在Java中,多态性主要通过继承和接口实现。
1.继承:当一个子类继承了父类后,子类对象可以调用父类的方法和属性,如果子类对父类的方法进行了重写(即子类提供了与父类方法相同签名但不同实现的方法),那么在调用该方法时,就会根据对象的实际类型来执行对应的方法。
第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高级面试题及答案一、基础理论知识1. 请解释Java中的四种访问修饰符及其作用范围。
答:Java中的四种访问修饰符分别是public、protected、default(无修饰符)和private。
public修饰的类或成员可以被任何其他类访问;protected修饰的成员可以被同一个包内的类以及子类访问;default(无修饰符)的成员只能被同一个包内的类访问;private修饰的成员只能在声明它的类内部访问。
2. 什么是Java的序列化和反序列化?请举例说明。
答:Java序列化是将对象的状态信息转换为字节流的过程,以便于存储或传输。
反序列化则是将字节流恢复为原来的对象。
例如,通过ObjectOutputStream和ObjectInputStream类可以实现对象的序列化和反序列化。
3. 解释Java中的多态性及其优势。
答:多态性是指允许使用子类对象来替代父类对象的能力。
在Java中,这是通过继承和接口实现的。
多态性的优势包括代码的可扩展性和可维护性,以及能够编写更通用的代码。
二、Java集合框架1. 请比较ArrayList和LinkedList的性能差异。
答:ArrayList是基于动态数组的数据结构,适合随机访问;LinkedList是基于双向链表的数据结构,适合频繁的插入和删除操作。
在随机访问大量元素时,ArrayList的性能优于LinkedList;而在插入和删除操作频繁时,LinkedList的性能更优。
2. 什么是HashMap的工作原理,以及如何解决它的线程安全问题?答:HashMap基于哈希表实现,通过键的哈希值来计算存储位置。
当两个不同的键具有相同的哈希值时,会发生哈希冲突,HashMap通过链表或红黑树来解决这个问题。
对于线程安全问题,可以使用ConcurrentHashMap,它通过锁分离技术来提供线程安全的映射。
三、异常处理1. 请解释Java中的异常处理机制。
Java面试题及答案整理Java 最常见的面试题的答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的。
这些答案难免会存在一些错误,仅供大家参考。
如果发现错误还望大家多多包涵,不吝赐教,谢谢~如果不背Java 面试题的答案,肯定面试会挂!这套Java面试题大全,希望对大家有帮助哈~博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的Java1、 java常见2021年最新面试题附答案解析2、 java常见面试题及答案汇总2021年最新版3、 java常见面试题2021年及答案汇总4、 java最新2021年面试题及答案汇总版5、 java最新2021年面试题大汇总附答案6、 java最新2021年面试题附答案解析大汇总7、 java最新2021年面试题高级面试题及附答案解析8、 java最新基础面试题及答案整理9、 java最新面试题2021年常见面试题及答案汇总10、 java最新面试题及答案整理汇总版11、 java最新面试题及答案附答案汇总12、 java最新面试题2021年面试题及答案汇总13、 java最新面试题常见面试题及答案汇总14、 java面试2021秋招面试问题附答案15、 java面试题及答案整理汇总2021年最新版16、 java面试题及答案整理2021年最新汇总版17、 java面试题大全带答案持续更新18、 java面试题大汇总2021年附答案解析19、 java面试题大汇总2021面试题及答案汇总20、 java面试题目大汇总附参考答案21、 java高级面试题及答案2021版22、 java高级面试题及答案企业真面试题23、 java高级面试题及答案最新版24、 java高级面试题合集附答案解析25、 java高级面试题整理及答案26、 java高级面试题中级面试题大汇总1、抽象工厂模式和原型模式之间的区别?抽象工厂模式:通常由工厂方法模式来实现。
经典java面试题及答案详解参加面试前,很多人都希望能提前预知面试题目,最好的方法就是整理一些经典的面试题,java面试的专业性比较强,如果你的基础不够扎实,那么最好找些经典的java面试题及答案分析,提前参透一下吧!java面试题1、说说HashMap和Hashtable的差别答案分析:都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap类没有分类或排序。
他允许一个null键和多个null值。
Hashtable类似于HashMap,不过不允许null键和null值。
他也比HashMap慢,因为他是同步的。
java面试题2、Anonymous Inner Class (匿名内部类)是否能extends(继承)其他类,是否implements(实现)interface(接口)?答案分析:匿名的内部类是没有名字的内部类。
不能extends(继承)其他类,但一个内部类能作为一个接口,由另一个内部类实现。
java面试题3、STRING与STRINGBUFFER的区别是什么?答案分析:STRING的长度是不可变的,STRINGBUFFER的长度是可变的。
如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法。
java面试题4、什么时候用assert答案分析:断言是个包含布尔表达式的语句,在执行这个语句时假定该表达式为true。
如果表达式计算为false,那么系统会报告一个AssertionError,他用于调试目的。
java面试题5、Set里的元素是不能重复的,那么用什么方法来区分重复和否呢?是用==还是equals()?他们有何差别?答案分析:Set里的元素是不能重复的,那么用iterator()方法来区分重复和否。
equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
2024年Java经典面试题及答案问:Java中的泛型是什么?它有什么作用?答:Java中的泛型是一种参数化类型,它允许使用一个占位符来代表各种类型。
它的作用是在编译时检测类型的一致性,避免了类型转换错误,并提高了代码的重用性。
问:Java中的静态方法和实例方法有什么区别?答:静态方法是属于类的方法,可以在不创建实例对象的情况下被调用,它可以直接通过类名来调用。
实例方法是属于具体实例对象的方法,需要先创建实例对象才能调用。
问:Java中的反射是什么?它有什么用途?答:反射是指在运行状态中,动态获取类的信息并操作类的属性和方法。
它的主要用途是在运行时动态创建对象、访问属性和调用方法,以及在编译时无法确定类型的情况下进行操作。
问:Java中的多线程是什么?如何创建多线程?答:多线程是指在一个程序中同时执行多个线程,每个线程可以独立执行不同的任务。
要创建多线程可以通过继承Thread 类或实现Runnable接口来实现。
问:Java中的异常处理是什么?有哪些常见的异常类型?答:异常处理是指在程序执行过程中处理各种错误或异常情况。
常见的异常类型包括NullPointerException、ArrayIndexOutOfBoundsExcpetion、IOException等。
问:Java中的集合框架是什么?它有哪些常见的接口和类?答:集合框架是Java中用于存储和操作对象的数据结构。
常见的接口包括List、Set、Map等,常见的类包括ArrayList、LinkedList、HashSet、HashMap等。
问:Java中的IO流是什么?它有哪些常见的流类型?答:IO流是用于输入和输出操作的流。
常见的流类型包括字节流和字符流,分别对应InputStream/OutputStream和Reader/Writer。
在Java编程中, IO流是非常重要的一个概念。
IO流是用于将数据从一个地方传输到另一个地方的机制,它允许程序通过输入和输出来访问数据。
java面试问题及回答java面试问题及回答一1.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。
与此相对,方法覆盖是说子类重新定义了父类的方法。
方法覆盖必须有相同的方法名,参数列表和返回类型。
覆盖者可能不会限制它所覆盖的方法的访问。
2.Java中,什么是构造函数?什么是构造函数重载?什么是复制构造函数?当新对象被创建的时候,构造函数会被调用。
每一个类都有构造函数。
在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一个默认的构造函数。
Java中构造函数重载和方法重载很相似。
可以为一个类创建多个构造函数。
每一个构造函数必须有它自己唯一的参数列表。
Java不支持像C++中那样的复制构造函数,这个不同点是因为如果你不自己写构造函数的情况下,Java不会创建默认的复制构造函数。
3.Java支持多继承么?不支持,Java不支持多继承。
每个类都只能继承一个类,但是可以实现多个接口。
4.接口和抽象类的区别是什么?Java提供和支持创建抽象类和接口。
它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的。
而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类类如果要实现一个接口,它必须要实现接口声明的所有方法。
但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。
抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。
抽象类的成员函数可以是private,protected或者是public。
接口是绝对抽象的,不可以被实例化。
抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。
java高级工程师面试题及答案一、Java基础知识1. 请简述Java语言的特点和优势。
Java是一种跨平台的编程语言,具有以下特点和优势:- 简单易学:Java采用C/C++风格的语法,使得开发者可以快速上手。
- 面向对象:Java是一种面向对象的语言,通过封装、继承和多态等特性,使得程序更加模块化、可复用和可维护。
- 平台无关性:Java应用程序可以在不同的操作系统平台上运行,只需编译一次即可。
- 高效性能:Java通过垃圾回收机制和即时编译器(Just-In-Time Compiler)来提高性能,同时拥有高度优化的运行时环境。
- 安全性:Java提供了安全的执行环境,通过类加载器、字节码验证和安全管理器等机制,防止恶意代码的执行。
2. 什么是Java的自动装箱和拆箱?自动装箱(Autoboxing)和拆箱(Unboxing)是Java编译器提供的便利功能。
- 自动装箱:将基本数据类型转换为对应的包装类对象,例如将int 类型转换为Integer对象。
- 自动拆箱:将包装类对象转换为基本数据类型,例如将Integer对象转换为int类型。
自动装箱和拆箱使得基本数据类型和包装类之间的转换更加方便,可以在需要包装类的地方直接使用基本数据类型,编译器会自动进行装箱或拆箱操作。
3. 请简述Java中的重载和重写的区别。
- 重载(Overload):指在同一个类中,方法名相同但参数列表不同的多个方法,可以具有不同的返回类型。
重载可以通过参数个数、类型或顺序的不同来实现。
重载的方法可以拥有不同的访问修饰符。
- 重写(Override):指在子类中重新定义父类的方法,方法名、参数列表和返回类型均相同。
重写方法不能拥有比父类更低的访问修饰符,可以拥有与父类方法相同或更宽松的异常抛出声明。
重载和重写都是多态的一种表现形式,通过编译器和虚拟机的不同处理方式来实现。
4. 请解释Java中的final关键字的作用。
本人最近参加了大大小小很多公司的面试,在这里我把自己面试遇到的问题给大家说一下JAVA基础篇1、在java类加载器中,系统类加载器和用户自定义加载器那个先加载?(遇到这个问题时感觉很意外,没有想到会问这样的问题)先加载系统类加载器Java类加载器加载类顺序依次为:JVM类加载器:这个模式会加载JAVA_HOME/lib下的jar 包扩展类加载器:会加载JAVA_HOME/lib/ext下的jar包系统类加载器:这个会去加载指定了classpath参数指定的jar文件用户自定义类加载器:sun提供的ClassLoader是可以被继承的,允许用户自己实现类加载器2、堆和栈分别存放什么?栈:基本数据类型和对象的引用堆:对象和数组3、String、StringBuffer、StringBuilder的区别(1)String是不可变对象,也就是说每次修改String都是新建了一个对象并赋值(2)StringBuffer是字符缓冲区,修改它不会新建对象,可以使用append()方法和delete()方法修改StringBuffer的值(3)StringBuilder可以替代StringBuffer,它是一个单线程使用的类,和StringBuffer比速度快、效率高,但是是非安全的(4)三者都是被final修饰的(这一点面试官的问我的时候一直在说,你确定吗?搞得我有点虚)4、Java的异常和错误有什么区别?(1)ErrorError是JVM的错误,这种错误会严重影响程序的运行,设计者不会设计程序代码去捕捉这种错误,因为即使捕捉到也无法给予适当的处理,比如内存溢出。
(2)ExceptionException包含了一般性的异常,这些异常同在在捕捉到之后便可做妥善的处理,以确保程序继续运行。
Exception有很多种分类,从Exception产生的时机上我们可以把Exception分为① 运行时异常运行时异常是指程序运行过程中可能出现的非正常状态② 非运行时异常非运行时异常是指方法声明时throws的异常5、&和&&的区别&是位运算符,表示按位与运算。
&&是逻辑运算符,表示逻辑与。
在条件判断的时候&必须逐一检查各个条件,&&具有短路功能,只要一个条件为false则不会进行后续的判断。
6、abstract class和interface的区别(1)abstract class是抽象类,声明方法的存在而不去实现它的类叫做抽象类,它用于创建一个体现某些基本行为的类。
抽象类中不能有构造方法、不能有静态方法,抽象类不能被实例化。
抽象类中可以有变量、可以有普通方法、可以有抽象方法,在继承抽象方法后,必须实现它的所有抽象方法。
(2)interface是接口,接口中的变量必须是静态常量(static final),接口中的方法必须都是抽象方法(abstract),不过由于接口中所有变量、方法修饰符都一致,因可以不写。
接口的实现必须实现接口中所有的方法。
7、final、finally、finalize的区别(1)final是用来描述变量、方法、类的关键字,表示变量值不可变、方法不可被重写、类不可被继承(2)finally是异常处理的关键字,表示finally块里面的代码一定会被运行到(3)finalize是Object类中的protected方法,垃圾回收器执行的时候会调用被回收的类的此方法。
8、接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以实现实体类?(1)接口可以继承接口(2)抽象类里可以有普通方法,因此抽象类可以实现接口,只需要实现接口内所有方法就可以了(3)抽象类里可以有普通方法,变量也不需要是常量,因此抽象类可以实现实体类9、一个”.java”源文件中是否可以包含多个类(非内部类)?有什么限制?可以。
必须只有一个类名与文件名相同且该类以public修饰10、java是怎么通过包名.类名来获得该类的实例的?通过Class.forName()方法11、介绍一下集合?①Collection:是最基本的集合接口,一个collection代表一组Object,即collection的元素。
②List:是collection的扩展,作用是收集对象,并以索引方式保留收集对象的顺序。
其元素有放入顺序,元素可重复。
1)ArrayList:利用类似于数组的形式来存储数据,它的随机访问速度极快。
2)LinkedList:内部实现是链表,它适合于在链表中间需要频繁的插入和删除操作。
3)Vector:与ArrayList相似,但是两者不同,Vector主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
4)ArrayList与Vector的区别:ArrayList是非线程安全的,效率高Vector是基于线程安全的,效率低。
③Set:也是collection的扩展,在Set中的元素对象要求不能重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)。
常用实现类有HashSet和TreeSet。
1)HashSet:其核心是HashMap,HashSet中存放的值为HashMap中的key,这也就是HashSet不允许重复的原因。
2)TreeSet:底层由平衡二叉树实现,它会将投入其中的元素自动排序,这就要求投入其中的元素是可排序的,也就是说,存放的必须是同一种数据类型。
其实现自动排序的实质是compareable<T>,即public int compareTo(Object obj){if( equals( obj ) ){return 0;}else{Return 1;}}这个方法称为比较器,可以比较两个对象,如果对象都一致相等,则返回0④Map:没有继承collection接口,提供key到value的映射,也就是说,它是一种把键对象和值对象进行关联的容器。
1)HashMap:key不允许重复,如果后面的key重复,则会覆盖前面的值,key允许为null,但是只能有一个。
2)TreeMap:key如果是一个对象的话,这个对象所在的类一定要实现compareable接口,并且重写compareTo方法。
3)HashMap与HashTable比较:HashMap:非线程安全,高效率,支持nullHashTable:线程安全,低效率,不支持null12、list、set和map的遍历方法比较:List:可以用for循环、for each循环和Iterator迭代。
Set:可以用for each循环和Iterator迭代。
Map:HashMap只能用Iterator迭代。
13、写一个单例设计模式:Public class Apple{Private static Apple apple;Private Apple( ){}Public static Apple getApple( ){If(null == apple){apple = new Apple( );return apple;}else{return apple;}}}14、说说static关键字:Static表示“全局”或“静态”的意思,可以用来修饰成员变量和成员方法,也可以形成静态代码块,还可以用来修饰类,但只能修饰内部类。
①static变量:被static修饰的变量叫静态变量或者类变量;没有被static修饰的变量叫实例变量。
二者的区别是:静态变量:在内存中只有一个拷贝(节省内存),jvm只会为静态分配一次内存,而且在加载类的过程中就完成静态变量的内存分配。
可用类名直接访问(方便),也可以用对象来访问(不推荐)。
静态变量一般用于对象之间需要共享值时。
实例变量:每创建一个实例,就会为实例分配一次内存,实例变量在内存中可以有多个拷贝,互不影响(灵活)。
②静态方法:它可以直接通过“类名.静态方法”来访问,任何的实例亦可以调用。
静态方法中不能用this和super关键字。
不能直接访问所属类的实例变量和实例方法,只能访问所属类的静态变量和成员方法。
③static代码块:static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置也可以随便放,它不在任何的方法体内,jvm在加载类时会执行这些静态代码块,如果有多个,则会按照他们在类中出现的先后顺序一次执行它们,而且每个代码块只会执行一次。
15、Servlet的生命周期:①加载和实例化:在Servlet容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。
②初始化:在Servlet实例化后,容器将调用Servlet的init ()方法初始化这个对象。
③请求处理:Servlet容器将调用Servlet的service()方法对请求进行处理。
④服务终止:当容器检测到一个Servlet的实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法16、jsp九大内置对象范围比较:排序为:Application > Session > Request > Page = Response = out = PageContext = config = exception。
Application:服务器启动到停止这段时间。
Session:Http会话开始到结束这段时间(浏览器打开到关闭)Request:Http请求开始到结束这段时间,即一个jsp页面发出请求到另一个jsp页面之间。
Page:页面执行,当前页面从打开到关闭这段时间,它只能在同一个页面中有效Response:页面执行,包含了客户请求的有关信息,但jsp中很少用到它。
Out:页面执行,向客户端输入内容时常用的对象PageContext:页面执行,取得任何范围的参数,通过它可以获得out、Requset、Response、Session、application等对象。
Config:页面执行,取得服务器的配置信息。
Exception:仅在错误处理页面17、jsp和servlet的区别与联系:①JSP第一次运行的时候会编译成Servlet,驻留在内存中以供调用②JSP是web开发技术,Servlet是服务器端运用的小程序③JSP更多的是进行页面显示,Servlet更多的是处理业务,即JSP是页面,Servlet是实现JSP方法④开发界面是JSP时,可以直接编写:<table>[数据]</table>;而Servlet中则需要这样写:out.println("<table>[数据]</table>");18、final关键字的作用(1)final修饰的基本数据类型的值不可被改变,final修饰的引用类型的引用不可变而引用的值还是可以变的(2)final修饰的方法不可被重写(3)final修饰的类不可被继承(4)final修饰的基本数据类型的形参在方法体内不可以被重新赋值,final修饰的引用类型的形参不可以被赋予一个新的引用数据库方面1、问你怎么同时更新一个表中的两个字段?(假设表名为A,要更新的字段分别为name、age)update A set name = ‘ 姚明’ , age = 35 where id = 10;2、给student添加一个来自classes的外键:(这个很容易被我们自己忽视)alter table student add constraint fk_stu_cls foreign key (cid) references classes (cid);3、数据库三范式:属性唯一、记录唯一、表唯一4、查询结果按tid排序(降序):select * from test order by tid desc;(默认是按升序的)5、oracle的左外连接Select * from dept d left outer join emp e on d.deptno = e.deptnoorder by d.deptno,e.ename;SSH框架1、hibernate和JDBC相比有什么优势?1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。