整理二

191、

答案:BDFG

在try语句一旦遇到异常就直接抛出执行catch语句和finally,不会继续执行try的,try-catch语句嵌套的话,会一层层往外抛出,catch都会执行。

192、!!常错整理:

基本类型:short、byte、char、int、long、float、double、boolean

其他为引用类型:String、枚举、包装类别

equals:不能用于基本类型比较,只比较引用类型对象的值

==:基本类型比较值,引用类型对象比较地址(有new xxx的就是新的地址了)

4:equals比较引用类型的值,所以等;6:==比较引用类型的地址,所以不等
==引用类型比较地址,所以s1,s2等,s3是另一个地址

193、JVM 内存可简单分为三个区:

1、堆区(heap):用于存放所有对象,是线程共享的(注:数组也属于对象)

2、栈区(stack):用于存放基本数据类型的数据和对象的引用,是线程私有的(分为:虚拟机栈和本地方法栈)

3、方法区(method):用于存放类信息、常量、静态变量、编译后的字节码等,是线程共享的(也被称为非堆,即 None-Heap)

Java 的垃圾回收器(GC)主要针对堆区

194、

196、Java程序的种类有:

(a)内嵌于Web文件中,由浏览器来观看的_Applet

(b)可独立运行的 Application

(c)服务器端的 Servlets、

197、Queue有3种:

(1)LinkedBlockingQueue:一个基于节点链接的可选是否有界的阻塞队列,不允许null值。是一个线程安全的阻塞队列,实现了先进先出等特性。

(2)PriorityQueue:是一个无界队列,不允许null值。不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。入队和出队的时间复杂度是O(log(n))。非线程安全。

(3)ConcurrentLinkedQueue:是一个基于链接节点的无界线程安全队列,该队列的元素遵循FIFO原则。

即LinkedBlockingQueue不一定有界,不允许null,线程安全,FIFO

PriorityQueue非线程安全,无界,不允许null,非FIFO。

ConcurrentLinkedQueue:无界、非线程安全、FIFO


198、1. 只看尖括号里边的!!明确点和范围两个概念

2. 如果尖括号里的是一个类,那么尖括号里的就是一个点,比如List,List,List

3. 如果尖括号里面带有问号,那么代表一个范围, 代表小于等于A的范围,代表大于等于A的范围,代表全部范围

4. 尖括号里的所有点之间互相赋值都是错,除非是俩相同的点;

5. 尖括号小范围赋值给大范围,对,大范围赋值给小范围,错。

如果某点包含在某个范围里,那么可以赋值,否则,不能赋值。范围不能赋值给点。

6. List和List 是相等的,都代表最大范围

7.补充:List既是点也是范围,当表示范围时,表示最大范围

199、

ceil:向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11;

floor:向下取整,Math.floor(11.6)的结果是11,Math.floor(-11.4)的结果-12;

round:将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果是12,Math.round(-11.5)的结果为-11.

200、符号的优先级排序是:'>','<','&&','||'。

201、构造函数必须与类同名,而且不能有返回类型。而方法是可以与类同名的,但是必须声明返回数据类型。

202、

类的加载顺序

(1) 父类静态对象和静态代码块

(2) 子类静态对象和静态代码块

(3) 父类非静态对象和非静态代码块

(4) 父类构造函数

(5) 子类 非静态对象和非静态代码块

(6) 子类构造函数

其中:类中静态块按照声明顺序执行,并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的)

答案:blockAblockBblockA

按照声明顺序,第3行 执行了构造函数,输出了blockA,又执行了第9行,输出了blockB,按顺序,执行了第13行,输出了blockA

203、object调用getName()方法:包名+类名

test.SuperTest

204、

205、

206、servlet周期:加载--实例化--初始化--处理请求--销毁

init()  --> 初始化;service()  -->  处理请求;destory () --> 销毁(停止)


207、Java的跨平台特性是因为JVM的存在, 它可以执行.class字节码文件,而不是.java源代码。

JAVA的跨平台特性表述为“一次编译,到处运行”,JAVA程序运行在JVM上,而JVM对上屏蔽了底层操作系统差异。

208、

Iterator接口是Collection接口的父接口。

209、


final修饰的不可改变数值类型和值,只有两个final的相加,最后才会不会自动转为int,而是还是Byte

210、

Object a[] ✔

211、对比抽象类和接口:

构造方法:抽象类可以有构造方法,但不能实例化对象,接口没有构造方法

普通成员变量:抽象类中可以有,接口中没有(一定是public static final 常量)

接口中的方法可以被default和static修饰,但是!!!被修饰的方法必须有方法体,而接口中的abstract方法则不能有方法体;

单继承,多接口

212、str += 'a'   和 str +="a"都是对的,但是如果a前面加一个空格,那么只能用双引号了。代表字符串

213、对hashmap:不能保证其中元素的顺序,允许key和value为null,使用键值对的方式存储。

214、count = count++ 原理是 temp = count; count = count+1 ; count = temp;   因此count始终是0 这仅限于java 与c是不一样的

结果:0

215、

216、Ant: 没有正式的约定如一个一般项目的目录结构,你必须明确的告诉 Ant 哪里去找源代码。Ant构建文件默认命名为build.xml。Ant 没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目标附上一个任务序列。

Maven:Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。Maven默认构建文件为pom.xml。maven有“生命周期”的概念,当你输入一个命令后,maven会执行一系列的有序的步骤,直到到达你指定的生命周期。

217、java 基本数据类型的默认值:

218、new URL()时必须捕获检查异常,但这个异常是由于字符串格式和URL不符导致的,与网址是否存在无关。URL的toString方法返回字符串,无论网址是否存在。

219、抽象类和接口都不能被实例化,抽象类有构造方法,但是是用来初始化的而不是实例化。

220、float 型: 占 4 字节,7 位有效数字

double 型:占 8 字节,15~16 位有效数字

所以比较2个float类型的值是否相等?

(1)一般都是在允许的某个范围内认为某个个浮点数相等,如有两个浮点数a、b,允许的误差范围为 1e-6,则 abs(a-b) <= 1e-6,即可认为 a 和 b 相等。

```

float a=10.55f;

float b=10.55f;

if(Math.abs(a-b)<=1e-6){

      System.out.println("相等");

}else{

System.out.println("不相等");

}

```

(2)扩大再取整:比如 a=5.23、b=5.23,直接比较 a==b 有可能为 false,但是 a 和 b 都扩大一百倍,然后强制转换为 int 类型,再用 == 比较就可以了。

```

float a=5.23;

float b=5.23;

if((int)a*100)==(int)(b*100)){  相等;}

else{   不等}

```

float类型和“0”比较:

```

float x=0.000f;

float ep=0.000001;

if((x<=ep)&&(x>=-ep)){

输出是0;}

```

221、equals和==比较总结:

两者类型不同,直接false

==:比较基本类型:比较值;比较对象引用时(如String):比较地址

equals:比较引用时,比较值的内容


222、应用层:HTTP POP3  FTP  DNS

运输层:UDP、TCP

网络层:ARP、ICMP


223、TCP:POP3  HTTP  FTP  Telnet  SMTP

UDP:SNMP、DNS


224、线性结构:有序数据元素的集合(如线性表、栈、队列、双队列、数组、串)

非线性结构:一个结点元素可能有多个直接前驱和多个直接后继(如二维数组、多维数组、广义表、树,二叉树等)

225、定义有StringBuffer s1=new StringBuffer(10);s1.append(“1234”)

则s1.length()为  4

s1.capacity()为  10

226、程序执行到catch抛出异常,返回return,会先执行finally的操作再return,但不会再执行finally结束后的语句了。


227、

it.remove();  

不能用list.remove(obj),原因:

228、静态变量只能在类主体中定义,不能在方法中定义。

编译错误

229、对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包不可见。

对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。

230、java的“一次编写,到处运行”的跨平台性是独有的特点~

231、1、同一用户回话不同页面之间数据共享方法

(1)通过Cookie。

(2)通过隐含的表单把数据提交到下一个页面。

(3)通过ServletContext对象。

(4)通过application对象。

(5)通过文件系统或者数据库。

2、不同用户回话不同页面之间数据共享方法

(1)通过ServletContext对象。

(2)通过application对象。

(3)通过文件系统或者数据库。


232、decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

233、字符流是字节流根据字节流所要求的编码集解析获得的,可以理解为字符流=字节流+编码集,所以和字符流有关的类都拥有操作编码集(unicode)的能力

字节流:

InputStream/OutputStream

|-- FileInputStream (基本文件流) 

|-- BufferedInputStream 

|-- DataInputStream 

|-- ObjectInputStream

字符流

Reader

|-- InputStreamReader (byte->char 桥梁)

|-- BufferedReader (常用)

Writer

|-- OutputStreamWriter (char->byte 桥梁)

|-- BufferedWriter

|-- PrintWriter (常用


234、final:修饰属性,属性值不可变;修饰方法,方法不可重载,但可继承。

235、java和JavaScript并没有什么子集关系。

236、Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充,Swing在不同的操作系统中显示相同的风格。

AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。

237、执行顺序优先级:静态块>main()>构造块>构造方法

238、抽象类不能实例化。抽象类能申明为对象。java中,接口和抽象类,都可以声明为对象。

抽象类中可以有普通成员变量,接口中没有普通成员变量。

抽象类和接口中都可以包含静态成员常量。


239、json:轻量级数据交换格式,是js对象的字符串表示法

1、JsonObject:JSON对象,各种构造函数和getXX()、put(),常传入map String和bean构造JSON对象

(1)传入s:String s="{'name':'abc','age':21};  JSONObject strJson=new JSONObject(s);

(2)传入map: map.put("age",21);    JSONObject strJson=new JSONObject(map);

(3)传入Bean类型:建一个Student对象, JSONObject strJson=new JSONObject(student);

2、JSONArray:JSON数组

(1)1.1 传字符串:JSONArray   strJson=new JSONArray(s);

1.2 传Collection类型:JSONArray   strJson=new JSONArray(list);

1.3  传Array类型1:int[]  list    JSONArray   strJson=new JSONArray(list);

1.4 put()创建:直接将int double String 等put()

栗子:

var json={{"name":"xj","age":18},{"name":"xt","age":20}}


240、在java 中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.。

String[]  s ;   char c[]  ;     Object b[];

String a[]=new String[50];

int[][] num={{1,2}{2,3}};


241、servlet在多线程下其本身并不是线程安全的。

如果在类中定义成员变量,而在service中根据不同的线程对该成员变量进行更改,那么在并发的时候就会引起错误。最好是在方法中,定义局部变量,而不是类变量或者对象的成员变量。由于方法中的局部变量是在栈中,彼此各自都拥有独立的运行空间而不会互相干扰,因此才做到线程安全。


242、

243、volatile保证可见性,不保证原子性。针对多线程情况下出现的。当线程读取它修饰的变量时,都会强迫从主存中重新读取。


244、局部变量可以与成员变量重名,这时可用“this”来指向成员变量

245、String对String  类型进行改变的时候其实都等同于生成了一个新的  String  对象,然后将指针指向新的  String  对象,而不是StringBuffer;

StringBuffer每次结果都会对  StringBuffer  对象本身进行操作,而不是生成新的对象,再改变对象引用。 


246、一般用(System.in)创建InputStream对象,表示从标准输入中获取数据;

用(System.out)创建OutputStream对象,表示输出到标准输出设备中。


247、Java的跨平台是靠JVM实现的。

Java中:包(package)由一组类(class)和接口(interface)组成


248、   声明为static和transient类型的成员数据不能被串行化。因为static代表类的状态, transient代表对象的临时数据。


249、静态初始化块:

无法直接调用静态初始化块

在创建第一个实例前或引用任何静态成员之前,将自动调用静态初始化块来初始化。

静态初始化块既没有访问修饰符,也没有参数


250、Java程序的种类:Applet、Application、Servlet

251、一个完整的URL地址由协议,主机名,端口文件四部分组成。

252、Ant和Maven都是基于Java的构建(build)工具。理论上来说,有些类似于(Unix)C中的make ,但没有make的缺陷。Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。 

Ant特点 :没有一个约定的目录结构 ,必须明确让ant做什么,什么时候做,然后编译,打包 �没有生命周期,必须定义目标及其实现的任务序列 �没有集成依赖管理 

Maven特点 :拥有约定,知道你的代码在哪里,放到哪里去 �拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程 �只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情 �拥有依赖管理,仓库管理


253、Java中的数据类型分类:

基本数据类型8种(原生类、内置类型、原始类型)、引用数据类型(数组、类、接口)


254、Web程序中,当前用户上下文信息应该保存在session对象

当前用户 , application能被同一个应用程序的所有用户访问,所以当前用户的信息就不宜保存在application中

session会话对象,一个会话只可能是一个用户的,生命周期默认30分钟,也可以自行定义,当前会话结束(如关闭浏览器),当前session被销毁。所以当前用户的信息应该保存在session中】


255、ServerSocket(int port) 是服务端绑定port端口,调accept()监听等待客户端连接,它返回一个连接队列中的一个socket。

Socket(InetAddress address , int port)是创建客户端连接主机的socket流,其中InetAddress是用来记录主机的类,port指定端口。


256、原子性:事务是一组不可分割的操作单元,这组单元要么同时成功要么同时失败(由DBMS的事务管理子系统来实现);

一致性:事务前后的数据完整性要保持一致(由DBMS的完整性子系统执行测试任务);

隔离性:多个用户的事务之间不要相互影响,要相互隔离(由DBMS的并发控制子系统实现);

持久性:一个事务一旦提交,那么它对数据库产生的影响就是永久的不可逆的,如果后面再回滚或者出异常,都不会影响已提交的事务(由DBMS的恢复管理子系统实现的)


257、抛InterruptedException的代表方法有:

java.lang.Object 类的 wait 方法

java.lang.Thread 类的 sleep 方法

java.lang.Thread 类的 join 方法


258、注意true,false,null, friendly,sizeof不是java的关键字,但是你不能把它们作为java标识符用。是显式常量符。

259、Panel 和 Applet 的默认布局管理器是 FlowLayout


260、关于servlet service:

doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的;

service()是在javax.servlet.Servlet接口中定义的,根据请求类型,判断是post还是get方法提交的链接,决定是调用doGet()还是doPost()方法;


261、这个关键字常见的坑:

true、false、null都不是关键字

goto、const、是保留的关键字


262、下列声明错误的是?

A、final修饰的类为终态类,不能被继承,而 抽象类是必须被继承的才有其意义的,因此,final是不能用来修饰抽象类的。

B、 final修饰的方法为终态方法,不能被重写。而继承抽象类,必须重写其方法。

即 final不能修饰抽象类或抽象方法

C、抽象方法是仅声明,并不做实现的方法。


263、一个类,先继承,后实现

public class A extends B implements C

凡是先实现后继承的,都会编译报错。


264、已知如下的命令执行 java MyTest a b c

对于java命令,类名后面跟着的就是main函数的参数,多个参数则用空格隔开。 main方法的形参是一个string数组所以对于java mytest a b c传入的参数算是一个string数组。 即args[0]=a args[1]=b args[2]=c


265、若有定义语句: int a=10 ; double b=3.14 ; 则表达式 'A'+a+b 值的类型是(double)

因为基本类型会自动转换:int/char/byte-->int-->long-->float-->double


266、以下哪项不属于java类加载过程?B

类的加载过程:加载,验证,准备,解析,初始化

A.生成java.lang.Class对象  ===>属于加载,生成Class对象作为方法区这个类的各种数据的访问入口

B.int类型对象成员变量赋予默认值  ===>既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。所以不属于java类加载过程。

C.执行static块代码   ====>这个会调用。可以用反射试验。

D.类方法解析    ====>解析过程


267、能编译通过并正确运行。

输出:hello

因为Test类的hello方法是静态的,所以是属于类的,当实例化该类的时候,静态会被优先加载而且只加载一次,所以不受实例化new Test();影响,只要是使用到了Test类,都会加载静态hello方法!


268、stream结尾都是字节流,reader和writer结尾都是字符流 

两者的区别就是读写的时候一个是按字节读写,一个是按字符。

269、java中true ,false , null非关键字也非保留字,是显式常量值不能作为保留字

const和goto是java的保留字

java中所有的关键字都是小写的,

还有要注意true,false,null, friendly,sizeof不是java的关键字,但是你不能把它们作为java标识符用

implements,instanceof是关键字


270、A是抢占

272、Java.awt.*只能导入awt这个包中的所有类,awt中的包中的类不会导入

导包只可以导到当前层,不可以再导入包里面的包中的类

273、两种用于多态的机制:

(1)通过子类对父类方法的覆盖实现多态

(2)利用重载来实现多态.即在同一个类中定义多个同名的不同方法来实现多态。

多态分为方法多态和引用多态。

多态指同一个实体同时具有多种形式。

概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。


274、可以被继承的类:

Number类、Tthread类、ClassLoader类

275、

会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。

HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。当一个客户在多个页面间切换时,服务器会保存该用户的信息。

有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。

1).隐藏表单域:,非常适合步需要大量数据存储的会话应用。

2).URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。

3).Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP

响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至在客户端计算机重启后它仍可以保留其值。

4).Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话


276、

intValue():把Integer对象类型 ==>  int基础类型

parseInt():String ==> int基础类型

Valueof():String ==> Integer对象类型(JDK支持自动装箱拆箱)<==> int


277、

最终输出:CBB

有继承关系的类的执行顺序:

1、父类静态对象、父类静态代码块(按出现顺序)

2、子类静态对象、子类静态代码块(按出现顺序)

3、父类非静态对象、父类非静态代码块

4、父类构造函数

5、子类非静态对象、子类非静态代码块

6、子类构造函数


在此题中,父类子类无静态对象、静态代码块

(1执行到A中的非静态代码块C c=new C();  调用了 C的构造函数,输出C


278、URL u =new URL("http://www.123.com");。如果www.123.com不存在,则返回______。

http://www.123.com


279、子类可以继承父类的私有方法和数据域,只是不能直接调用。


280、forward转发,redirect重定向

forward:服务器请求资源,服务器直接访问目标地址的URL,把该URL的内容读取过来,再将内容发送给浏览器。浏览器不知道内容的来源,地址栏不变。转发页面和转发到的页面课共享request的数据。一般用于用户登录时,由角色转发到相应模块。效率较高。

redirect:服务器根据逻辑发送一个状态码,让浏览器重新去请求地址。地址栏显示新地址。不能共享数据。用于用户注销登陆时返回主页面和跳转到其他网站等。效率较低。


281、修饰类的限定范围修饰语:

```

                     同一个类           同一个包           子类              全局范围内

public               y                         y                      y                         y

default             y                          y                      y                         n

protected          y                         y                      n                         n

private              y                         n                     n                           n

```

java外部类:public default

java成员内部类:public protected     private

java局部内部类:都可以修饰

你可能感兴趣的:(整理二)