红酒营销型网站建设,WordPress网络功能,濮阳新闻联播,wordpress gallery插件1.异常处理
都是Throwable的子类#xff1a; ①.Exception#xff08;异常#xff09;:是程序本身可以处理的异常。 ②.Error#xff08;错误#xff09;: 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时#xff0c;一般不需…1.异常处理
都是Throwable的子类 ①.Exception异常:是程序本身可以处理的异常。 ②.Error错误: 是程序无法处理的错误。这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时一般不需要程序处理。 ③.检查异常编译器要求必须处置的异常 除了ErrorRuntimeException及其子类以外其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它也就是说当程序中可能出现这类异常要么用try-catch语句捕获它要么用throws子句声明抛出它否则编译不会通过。 ④.非检查异常(编译器不要求处置的异常): 包括运行时异常RuntimeException与其子类和错误Error。
2.接口中的变量默认是public static final 的方法默认是public abstract 的
3.被final关键字修饰的类不能被继承但抽象类存在的意义在于被其它类继承然后实现其内部方法的这样final和抽象类之间就产生了矛盾。
4.重载的实现是编译器根据函数的不同的参数表对同名函数的名称做修饰那么对于编译器而言这些同名函数就成了不同的函数。但重写则是子类方法对父类的方法的延申即子类不仅继承了父类的方法还向父类的方法中添加了属于自己的内容改变了父类方法原本的内容而final代表了一种不可变这明显与重写形成了冲突。因此被final修饰的类可以被重载但不能被重写。
5.正则匹配 \d 匹配一个数字字符。等价于 [0-9]。 \D 匹配一个非数字字符。等价于 [^0-9]。 \f 匹配一个换页符。等价于 \x0c 和 \cL。 \n 匹配一个换行符。等价于 \x0a 和 \cJ。 \r 匹配一个回车符。等价于 \x0d 和 \cM。 \s 匹配任何空白字符包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。 \t 匹配一个制表符。等价于 \x09 和 \cI。 \v 匹配一个垂直制表符。等价于 \x0b 和 \cK。 \w 匹配字母、数字、下划线。等价于’[A-Za-z0-9_]。 \W 匹配非字母、数字、下划线。等价于 ‘[^A-Za-z0-9_]’。
6.方法重写 参数列表必须完全与被重写方法的相同 返回类型必须完全与被重写方法的返回类型相同 访问权限不能比父类中被重写的方法的访问权限更低。例如如果父类的一个方法被声明为public那么在子类中重写该方法就不能声明为protected。 父类的成员方法只能被它的子类重写。 声明为final的方法不能被重写。 声明为static的方法不能被重写但是能够被再次声明。 子类和父类在同一个包中那么子类可以重写父类所有方法除了声明为private和final的方法。 子类和父类不在同一个包中那么子类只能够重写父类的声明为public和protected的非final方法。 重写的方法能够抛出任何非强制异常无论被重写的方法是否抛出异常。但是重写的方法不能抛出新的强制性异常或者比被重写方法声明的更广泛的强制性异常反之则可以。 构造方法不能被重写。 如果不能继承一个方法则不能重写这个方法。
7.方法重载 被重载的方法必须改变参数列表(参数个数或类型或顺序不一样) 被重载的方法可以改变返回类型 被重载的方法可以改变访问修饰符 被重载的方法可以声明新的或更广的检查异常 方法能够在同一个类中或者在一个子类中被重载。 无法以返回值类型作为重载函数的区分标准。
8.内存模型 程序计数器是一块较小的内存空间它的作用可以看做是当前线程所执行的字节码的信号指示器偏移地址Java编译过程中产生的字节码有点类似编译原理的指令程序计数器的内存空间存储的是当前执行的字节码的偏移地址每一个线程都有一个独立的程序计数器程序计数器的内存空间是线程私有的因为当执行语句时改变的是程序计数器的内存空间因此它不会发生内存溢出 并且程序计数器是jvm虚拟机规范中唯一一个没有规定 OutOfMemoryError 异常 的区域 链接https://www.nowcoder.com/questionTerminal/e44c1da74e0049f4a9d98260b964da3d java虚拟机栈线程私有生命周期和线程一致。描述的是 Java 方法执行的内存模型每个方法在执行时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束就对应着一个栈帧从虚拟机栈中入栈到出栈的过程。 没有类信息类信息是在方法区中 java堆对于绝大多数应用来说这块区域是 JVM 所管理的内存中最大的一块。线程共享主要是存放对象实例和数组 方法区属于共享内存区域存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
9.匿名内部类的创建格式为 new 父类构造器参数列表|实现接口{ //匿名内部类的类体实现 } 使用匿名内部类时必须继承一个类或实现一个接口 匿名内部类由于没有名字因此不能定义构造函数 匿名内部类中不能含有静态成员变量和静态方法
10.不是局部变量在该方法被执行/调用时创建而是应该为在该变量被声明并赋值时创建可以理解为“当代码执行到该变量被赋值的代码时才被创建” 栈会为每个方法在运行的时候分配一块独立的栈帧内存区域栈帧又包含“局部变量表”、“操作数栈”、“动态链接”以及“方法出口”四个部分。
11.Servlet与CGI 的比较 和CGI程序一样Servlet可以响应用户的指令(提交一个FORM等等)也可以象CGI程序一样收集用户表单的信息并给予动态反馈(简单的注册信息录入和检查错误)。 然而Servlet的机制并不仅仅是这样简单的与用户表单进行交互。传统技术中动态的网页建立和显示都是通过CGI来实现的但是有了Servlet,您可以大胆的放弃所有CGI(perl?php?甚至asp!)利用Servlet代替CGI,进行程序编写。
对比一当用户浏览器发出一个Http/CGI的请求或者说调用一个CGI程序的时候服务器端就要新启用一个进程(而且是每次都要调用)调用CGI程序越多(特别是访问量高的时候)就要消耗系统越多的处理时间只剩下越来越少的系统资源对于用户来说只能是漫长的等待服务器端的返回页面了这对于电子商务激烈发展的今天来说不能不说是一种技术上的遗憾。而Servlet充分发挥了服务器端的资源并高效的利用。每次调用Servlet时并不是新启用一个进程而是在一个Web服务器的进程敏感词享和分离线程而线程最大的好处在于可以共享一个数据源使系统资源被有效利用。
对比二传统的CGI程序不具备平台无关性特征系统环境发生变化CGI程序就要瘫痪而Servlet具备Java的平台无关性在系统开发过程中保持了系统的可扩展性、高效性。 对比三传统技术中一般大都为二层的系统架构即Web服务器数据库服务器导致网站访问量大的时候无法克服CGI程序与数据库建立连接时速度慢的瓶颈从而死机、数据库死锁现象频繁发生。而我们的Servlet有连接池的概念它可以利用多线程的优点在系统缓存中事先建立好若干与数据库的连接到时候若想和数据库打交道可以随时跟系统要一个连接即可反应速度可想而知。
12.Before:Before 通知用于方法执行前增强 AfterReturning After Returning 通知方法正常执行返回后增强 AfterThrowingAfter Throwing 通知方法执行通过抛出异常退出时 AfterAfter (Finally) 通知方法执行退出时执行增强不管是正常返回还是抛出异常退出相当于try{}catch{}finally{}中的finally的语句。 AroundAround 通知最强大的通知环绕在目标方法前后执行。它有机会在方法运行之前和之后进行工作并确定该方法何时、如何以及是否真正开始运行
13.bean的作用域由scope注解来修改该注解有五个不同的取值分别是singleton、prototype、request、session、global-session。 singleton在每一个Spring容器中一个Bean定义只有一个对象实例默认为singleton prototype允许Bean的定义可以被实例化任意次每次调用都创建一个一个实例 request在一次HTTP请求中每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文例如SpringMVC中才有效 session在一个HTTP Session中每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文例如SpringMVC中才有效 global-session在一个全局HTTP Session中每个Bean定义对应一个实例。该作用域仅在基于Web的Spring上下文例如SpringMVC中才有效
14.JDBC Statement 的继承关系 15.bean的注入有3种方式1.属性注入、2.构造器注入、3.接口注入。bean的创建方式1.构造器创建、2.实例工厂创建、3.静态工厂创建。
16.数据库的三级模式结构分为概念模式外模式内模式 概念模式也称为逻辑模式 是数据库中全体数据的逻辑结构和特征的描述是所有用户的公共数据视图。 是数据库模式结构的中间层 一个数据库只有一个概念模式 外模式也称为子模式 对应于用户级 一个数据库可以有多个外模式 内模式也称为存储模式 对应于物理级 是数据物理结构和存储方式的描述是数据在数据库内部的表示方式 一个数据库只有一个内模式
两级映像为了能够在以上三个抽象层次之间的联系和转换在三级模式之间设计了两层映像 两层映像保证了数据库中的数据能够具有较高的逻辑独立性和物理独立性。
外模式/模式映像 外模式/模式映像保证了当模式改变时外模式不用变逻辑独立性 模式/内模式映像 模式/内模式映像保证了当内模式改变时模式不用变物理独立性
17.范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求满足不同程度要求的为不同范式。 目前关系数据库有六种范式 第一范式 1NF 、第二范式 2NF 、第三范式 3NF 、 Boyce-Codd 范式 BCNF 、第四范式 4NF 和第五范式 5NF 。 满足最低要求的范式是第一范式 1NF 。在第一范式的基础上进一步满足更多要求的称为第二范式 2NF 其余范式以次类推。 一般说来数据库只需满足第三范式 3NF 就行了。 第一范式主属性主键不为空且不重复字段不可再分存在非主属性对主属性的部分依赖。 第二范式如果关系模式是第一范式每个非主属性都没有对主键的部分依赖。 第三范式如果关系模式是第二范式没有非主属性对主键的传递依赖和部分依赖。 BCNF 范式所有属性都不传递依赖于关系的任何候选键。
18.在对byte型的变量进行相加时会先自动转换为int型进行计算所以计算结果也是int型的int型赋值给byte需要强制转换
19.我相信仔细看的话每一本Java书都有讲过。“假设利用 return 语句从 try 语句块中退出。在方法返回前finally子句的内容将被执行。如果 finally 子句中也有一个 return 语句这个返回值将会覆盖原始的返回值。”
20.在类内部可以用户可以使用关键字this.构造方法名()调用参数决定调用的是本类对应的构造方法 在子类中用户可以通过关键字super.父类构造方法名()调用参数决定调用的是父类对应的构造方法。 反射机制对于任意一个类都能够知道这个类的所有属性和方法包括类的构造方法。
21.创建线程的方法1从Java.lang.Thread类派生一个新的线程类重写它的run()方法2 实现Runnable接口重写Runnable接口中的run()方法。
22.链接《深入理解Java虚拟机》P228对于任意一个类都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性每一个类加载器都拥有一个独立的类名称空间。这句话可以表达得更通俗一些比较两个类是否“相等”只有在这两个类是由同一个类加载器加载的前提下才有意义否则即使这两个类来源于同一个Class文件被同一个虚拟机加载只要加载它们的类加载器不同那么这两个类必定不相等。接口类是一种特殊类因此对于同一接口不同的类装载器装载所获得的类是不相同的。
23.对象创建方法中哪些会调用构造方法 new语句创建对象 java反射机制使用java.lang.Class或java.lang.reflect.Constructor的newInstance()方法
24.下列哪个对访问修饰符作用范围由大到小排列是正确的
publicprotecteddefaultprivate25.Java编程语言支持的八种原始数据类型是 bytebyte数据类型是8位带符号的二进制补码整数。最小值为-128最大值为127含。的byte数据类型可以是在大型保存存储器有用 阵列其中存储器的节省实际上重要的。它们也可以用于int限制其位置的地方以澄清您的代码变量范围有限的事实可以作为文档的一种形式。 shortshort数据类型是一个16位带符号的二进制补码整数。最小值为-32,768最大值为32,767含。与一样byte也适用相同的准则在实际short需要节省内存的情况下可以使用a来以大阵列保存内存。 int默认情况下int数据类型是32位带符号的二进制补码整数其最小值为-231最大值为231 -1。在Java SE 8和更高版本中可以使用int数据类型表示无符号的32位整数其最小值为0最大值为2 32 -1。使用Integer类可将int数据类型用作无符号整数。有关更多信息请参见“数字类”部分。像静态方法compareUnsigneddivideUnsigned等已被添加到 Integer类以支持算术运算的无符号整数。 longlong数据类型是64位二进制补码整数。带符号的long的最小值为-263最大值为263 -1。在Java SE 8和更高版本中可以使用long数据类型表示无符号的64位长其最小值为0最大值为2 64 -1。当您需要的值范围比所提供的宽时请使用此数据类型int。该 Long班还包含方法如compareUnsigneddivideUnsigned等长以支持算术运算的无符号。 floatfloat数据类型是单精度32位IEEE 754浮点。其值的范围超出了本文的讨论范围但在Java语言规范的“ 浮点类型格式和值”部分中进行了指定。与针对byte和的建议一样如果您需要将内存保存在大的浮点数数组中short请使用float而不是double。永远不要将这种数据类型用于精确值例如货币。为此您将需要使用 java.math.BigDecimal类。 数字和字符串覆盖BigDecimal以及Java平台提供的其他有用的类。 doubledouble数据类型是双精度64位IEEE 754浮点数。其值的范围超出了本文的讨论范围但在Java语言规范的“ 浮点类型格式和值”部分中进行了指定。对于十进制值此数据类型通常是默认选择。如上所述永远不要将这种数据类型用于精确值例如货币。 布尔值boolean数据类型只有两个可能的值true和false。将此数据类型用于跟踪真/假条件的简单标志。这种数据类型代表一小部分信息但是其“大小”并不是精确定义的。 charchar数据类型是单个16位Unicode字符。它的最小值为’\u0000’或0最大值为’\uffff’或65,535包括端值。
26.父类静态代码块-子类静态代码块-父类非静态代码块-父类构造函数-子类非静态代码块-子类构造函数 27.java 加载数据库驱动的方式 1.DriverManager.registerDriver(new …); 2.Class.forName(“com…”); //静态代码块 3.System.setProperty(“jdbc.drivers”,“com…”); //DriverManager的静态代码块static{loadInitialDrivers();}
27.首先结论 1int与Integer、new Integer()进行比较时结果永远为true 2Integer与new Integer()进行比较时结果永远为false 3Integer与Integer进行比较时看范围在大于等于-128小于等于127的范围内为true在此范围外为false。 下面是解析过程 1.Integer与int比较时Integer会有拆箱的过程我们可以看看拆箱的代码 直接返回的就是value因此int与Integer以及new Integer()进行 比较时结果都是true。 2.Integer an时如果n大于等于-128小于等于127时会直接从IntegerCache中取不在这个范围内会new一个对象所以Integer与new Integer进行 比较时结果都是false。 3.Integer与Integer比较需要看范围如果在-128~127(包含-128不包含127)范围内因为都是从IntegerCache中取值所以相等若不在这个范围内则都要去new一个对象所以结果为false。
jdk 8后新增了default修饰符。接口中被default修饰的方法可以不是必须要实现的。
29.private是私有变量只能用于当前类中题目中的main方法也位于当前类所以可以正确输出
30.线程五种状态