![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java程序员面试笔试宝典知识点笔记
文章平均质量分 79
君子为猿
这个作者很懒,什么都没留下…
展开
-
JSP内置对象总结
内置对象(隐含对象),是指在不声明和不创建的情况下就可以被使用的一些成员变量。JSP一共提供了9个内置对象。request(请求对象) :客户端请求,此请求包含来自GET/POST请求的参数。客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应,因此request对象时用来获取请求参数的重要途经。它是HttpServltRequest类的实例response(响应对象) :用来表示服务端对客户端的响应,将Web服务器处理后的结果返回给客户端。但在JSP中很少直接使原创 2020-06-25 00:38:52 · 567 阅读 · 0 评论 -
转发(forward)与重定向(redirect)的区别
Servlet 主要有两种实现跳转的方式: forward 方式 与 redirect 方式。forward 是服务器内部的重定向,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,而客户端并不知道,因此在客户端浏览器的地址栏中不回显示转向后的地址,还是原来的地址。由于在整个定向的过程中用的是同一个Request,因此forward会将Request的信息带到被定向的JSP或Servlet中使用。redirect 是客户端的重定向,是完全的跳转,即客户端浏览器会获取到跳转后的地址,然后重原创 2020-06-25 00:10:27 · 478 阅读 · 0 评论 -
异常处理的知识总结
一:throw和throws的区别:throw 代表一个具体动作,表示抛出一个异常,若执行了throw一定是抛出了某种异常;throws 代表一种状态,用来声明一个方法可能抛出的所有异常信息,方法可能有异常抛出,但不一定会发生异常。throw 用在方法实现中,由方法体内的语句处理;throws 用在方法声明中,表示如果抛出异常,则由该方法的调用者来进行异常处理。throw 只能用于抛出一种异常;throws 可以抛出多个异常throw 需要用户自己捕获相关的异常,而后在对其进行相关包装,最原创 2020-06-15 19:06:00 · 160 阅读 · 0 评论 -
run()方法和start()方法的区别
系统通过调用线程类的start()方法来启动一个线程,此时该线程处于就绪状态,而非线程状态,也就意味着这个线程可以被JVM来调度执行。在调度过程中,JVM通过调用线程类的run()方法来完成实际的操作,当run()方法结束后,此线程就会终止。如果直接调用线程类的run()方法,这会被当做一个普通的函数调用,程序中仍然只有主线程这一个线程。start方法能异步地调用run()方法,但是直接调用run()方法却是同步地,因此无法达到多线程的目的。演示代码:class ThreadDemo extends原创 2020-06-15 16:01:03 · 383 阅读 · 0 评论 -
HTTP中GET和POST方法有什么不同
采用GET方法向服务器上传数据时,一般将数据添加到URL后面,并且二者用 “ ?”连接,各个变量之间用 “ & ”连接。由于对URL的长度存在限制,因此采用这种方法能上传的数据量非常小,通常在1024左右采用POST方法传递数据时通过HTTP请求的附件进行的,传送的数据量更大一些,一般默认为不受限制的GET方法上传的数据是添加在URL中,因此上传的数据被彻底 “ 暴露 ”出来,本身存在安全隐患,尤其是当用户需要向服务器提交一些敏感信息时POST方法向服务器提交的内容在URL中..原创 2020-06-03 00:16:29 · 192 阅读 · 0 评论 -
IoC、DI的分析
控制反转(Inverse of Control,IoC),是一种降低对象之间耦合关系的设计思想。一般而言,在分层体系结构中,都是上层调用下层的接口,上层依赖于下层的执行,即调用者依赖于被调用者。而通过IoC方式,使得上层不再依赖于下层的接口,即通过采用一定的机制来选择不同的下层实现,完成控制反转,使得由调用者来决定被调用者。IoC通过(DI)注入一个实例化的对象来达到解耦和的目的。使用这种方法后,对象不会显式调用而是根据需求通过IoC容器(例如Spring)来提供。采用IoC机制能够提高系统的可扩展性原创 2020-05-11 14:55:37 · 155 阅读 · 0 评论 -
cookie和session有什么区别?
cookie是在HTTP下,服务器或脚本可以维护客户工作站上信息的一种方式。它是由web服务器保存在用户浏览器上的小文件,可以包含有关用户的信息(如身份正识别号码、密码等信息)。session是指用来在客户端与服务端之间保持状态的解决方案以及存储结构。区别:cookie机制采用的是在客户端保持状态的方案,即数据存放在客户的浏览器上;而session机制采用的是服务端保持状态的方案,即数据放在服务端上。cookie安全性不够。由于cookie信息存放在客户端,其他人可以很容易地得到存放在本地的coo原创 2020-05-11 13:39:44 · 93 阅读 · 0 评论 -
Java Collections框架
Java Collections框架主要提供了List(列表)、Queue(队列)、Set(集合)、Stack(栈)和Map(映射表,用于存放键值对)等数据结构。其中,List、Queue、Set、Stack都继承自Collection接口。Collection是整个集合框架的基础,它里面存储一组对象,表示不同类型的Collections,它的作用只是提供维护一组对象的基本接口而已。下面分别介...原创 2020-04-30 01:09:05 · 145 阅读 · 0 评论 -
方法的参数传递机制以及不可变类
形参是基本数据类型传递数据值实参是引用数据类型传递地址值特殊的类型:String、包装类等对象不可变性import java.util.Arrays;public class Demo { public static void main(String[] args) { int i=1; String str="hello"; /...原创 2020-04-28 00:08:28 · 341 阅读 · 0 评论 -
对volatile的理解与思考
volatile的翻译过来的意思是:易变的、 无定性的;被volatile修饰的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。因为使用Java编程的过程中,有时为了提高程序的运行效率,编译器会自动对其进行优化,把经常被访问的变量缓存起来,程序在读取这个变量是有可能会直接从缓存(例如寄存器)中读取这个值,而不是去内存中读取。这样做的一个好处是提高了程序的运行效率,...原创 2020-04-27 23:58:59 · 199 阅读 · 0 评论 -
重载(Overload)和覆盖(重写Override)的区别
重载和覆盖是Java多态性的不同表现方式。重载是在一个类中多态性的一种表现,是指在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型。在使用重载时,需要注意以下几点:重载是通过不同的方法参数来区分的,例如不同的参数个数、不同的参数类型或不同的参数顺序。不能通过方法的访问权限、返回值类型和抛出的异常类型来进行重载。对于继承来说,如果基类(父类)方法的访问权限为...原创 2020-04-27 18:40:09 · 2932 阅读 · 0 评论 -
Java如何实现类似于C语言中函数指针的功能
在C语言中,有一个非常重要的概念—函数指针,其最重要的功能是实现回调函数。什么是回调函数?所谓回调函数,就是指函数先在某处注册,而它将在稍后某个需要的时候被调用。在Window系统中,开发人员想让系统动态链接库(Dynamic Link Library,DLL)调用自己编写的一个方法,于是利用DLL当中回调函数的接口来编写程序,通过传递一个函数的指针来调用,这个过程就称为回调。回调函数一般用...原创 2020-04-19 00:16:27 · 702 阅读 · 0 评论 -
什么是反射机制?
反射机制(reflection)是Java语言中一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许对其内部的成员进行操作。由于反射机制能够实现在运行时对类进行转载,因此能够增加程序得灵活性,但是不恰当地使用反射机制,也会严重影响系统地性能。具体而言,反射机制提供的功能主要有:得到一个对象所属的类;获取一个类的所有成员变量和方法;在运行时创建对象;在运行时调用对象的方法;其实...原创 2020-04-18 18:18:47 · 1388 阅读 · 0 评论 -
Java中的clone方法有什么作用
由于指针不仅会给开发人员带来使用上的不便,而且也是造成程序不稳定的根源,为了消除C/C++语言的这些缺点,Java语言取消了指针的概念,但这只是在Java语言中没有明确提供指针的概念与用法,而实质上每个new语言返回的都是一个指针的引用,只不过在大部分情况下开发人员不需要关心如何去操作这个指针而已。由于Java取消了指针的概念,因此开发人员在编程中往往忽略了对象和引用的区别,示例如下:impo...原创 2020-04-18 16:10:20 · 917 阅读 · 0 评论 -
为什么Java中有些接口没用任何方法?
由于Java不支持多继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念。接口是抽象方法定义的集合(接口也可以定义一些常量值),是一种特殊的抽象类。接口是中只包含方法的定义,没有方法的实现。Java8开始,接口可以默认方法与静态方法。接口中所有的方法都是抽象的。接口中成员的作用域修饰符都是public,接口中的常量值默认使用public static final修饰...原创 2020-04-13 18:05:38 · 397 阅读 · 0 评论 -
什么是构造函数
构造函数是一种特殊的函数,用来在对象实例化时初始化对象的成员对象。构造函数的特点:构造函数必须与类的名字相同,并且不能有返回值(返回值也不能为void)。每个类可以有多个构造函数。当开发人员没有提供构造函数时,编译器在把源代码编译成字节码的过程中会提供一个没有参数默认的构造函数,但该构造函数不会执行任何代码。如果开发人员提供了构造函数,那么编译器就不会在创建默认的构造函数了。构造函数可以...原创 2020-04-12 23:59:41 · 9998 阅读 · 0 评论 -
一个Java文件中是否可以定义多个类?
一个Java文件中可以定义多个类,但是最多只能有一个外部类(书中写的是一个类,但是内部类和外部类可以同时存在public)被public修饰,并且这个类的类名与文件名必须相同,若这个文件中没有public的类,则文件名随便是一个类的名字即可。...原创 2020-04-12 22:08:42 · 3029 阅读 · 0 评论 -
Java语言中,变量的类型及作用域
变量的类型:成员变量、静态变量、局部变量;成员变量:类的成员变量的作用范围与类的实例化对象的作用范围相同,当类被实例化时,成员变量就会在内存中分配空间并初始化,知直到这个被实例化对象的生命周期结束时,成员变量的生命周期才结束。成员变量有默认值。静态变量:被static修饰的成员变量被称为静态变量或全局变量,与成员变量不同的是,静态变量不依赖于特定的实例,而是被所有实例所共享。也就是说,只要...原创 2020-04-12 21:54:22 · 566 阅读 · 0 评论 -
Java程序初始化的顺序是怎样的?
在Java语言中,当初始化对象时,对象所在类的所有成员变量首先要进行初始化,只有当所有类成员完成初始化后,才会调用对象所在类的构造函数创建对象一、Java程序的初始化一般遵循3个原则(优先级依次递减):静态对象(变量)优先于非静态对象(变量)初始化,其中静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次。父类优先于子类进行初始化。按照成员变量的定义顺序进行初始化。即使变量...原创 2020-04-12 16:50:39 · 952 阅读 · 0 评论 -
main方法是否还有其他可用的定义格式?
1.由于public与static没有前后顺序关系,因此下面的定义也是合理的。static public void main(String[] args)2.也可以把main()方法定义为final。public static final void main(String[] args)3.也可以用synchronized来修饰main()方法.static public synchro...原创 2020-04-11 22:58:24 · 264 阅读 · 0 评论 -
关于Java与C/C++有什么异同的思考
一、同Java与C++都是面向对象语言,都使用了面向对象思想(三大特性:封装、继承、多态),由于面向对象有很多非常好的特性(继承、组合等),因此二者都有很好的可重用性。二、异Java为解析型语言,而C/C++为编译型语言。Java的执行速度比C/C++慢,但是Java能跨平台执行,而C/C++不能。Java为面向对象语言,不存在全局变量或全局函数。C++兼具面向面向对象和面向过程编程的特...原创 2020-04-11 22:15:27 · 252 阅读 · 0 评论 -
Java语言有哪些优点?基础复习与思考指正
1、**Java为纯面向对象语言。**它能直接反应现实生活中的对象,因此通过它,开发人员编写程序更为容易。(Java是面向对象语言,但是不是纯面向对象语言,不同的人有不同的说法。本人也认为Java并不是纯面向对象语言。意见参考如下:https://www.cnblogs.com/java-friend/p/11551240.html)2、**平台无关性。**Java语言可以“一次编译,到处执行”...原创 2020-04-11 16:52:13 · 219 阅读 · 0 评论