30
2020
04

HashMap初始容量10000即new HashMap(10000),当往里put 10000个元素时,需要resize几次(初始化的那次不算)?

0次解释:比10000大,且最接近的2的n次方数是16384,默认负载因子是0.75,16384*0.75 = 12288>10000,因而不需要扩容。
30
2020
04

String get(String string, T t) { return string; } 此方法:

编译正确解释:尖括号里的每个元素都指代一种未知类型,在定义处只具备执行Object方法的能力,在编译期间,所有的泛型信息都会被擦除,编译后,get()的两个参数是Object,返回值也是Object。
30
2020
04

String a = null; switch(a)匹配case中的哪一项?

直接抛出异常解释:在Java编程语言的设计者的判断中,这比静默跳过整个开关语句要合理,因为使用null作为开关标签的话,编写的代码将永远不会执行。
30
2020
04

某个类有两个重载方法:void g(double d) 和 void g(Integer i),那么g(1)的会调用哪个方法?

前者解释:1)精确匹配->2)基本数据类型(自动转换成更大范围)->3)封装类(自动拆箱与装箱)->4)子类向上转型依次匹配->5)可变参数匹配,本题是进行到第二步匹配上了。
30
2020
04

某个类有两个重载方法:void f(String s) 和 void f(Integer i),那么f(null)的会调用哪个方法?

 编译出错解释:1)精确匹配->2)基本数据类型(自动转换成更大范围)->3)封装类(自动拆箱与装箱)->4)子类向上转型依次匹配->5)可变参数匹配。子类向上转型,两者的父类都是object类(null默认类型是object),因而会同时匹配上两者,编译器会报Ambiguous method call. Both错误
30
2020
04

>>和>>>的区别是?

正整数一定没有区别解释:>>>表示不带符号向右移动二进制数,移动后前面统统补0;两个箭头表示带符号移动,正整数的符号位是0,因而两者没有区别
30
2020
04

System.out.println(0.0 / 0.0); 的结果是什么?

NaN解释:java源码,Double包装类下,public static final double NaN = 0.0d / 0.0;NAN表示非数字,它与任何值都不相等,甚至不等于它自己。
30
2020
04

System.out.println(1.0 / 0); 的结果是什么?

Infinity解释:在整型运算中,除数是不能为0的,否则直接运行异常。但是在浮点数运算中,引入了无限这个概念。可以看一下源码Double的定义, public static final double POSITIVE_INFINITY = 1.0 / 0.0;
30
2020
04

double c = 0.8; double d = 0.7; double e = 0.6; 那么c-d与d-e是否相等?

false解释:类似十进制里面的分数1/3,就是无限循环数,无法精确表示出来,同理浮点数里有些数值也没法精确表示出来。System.out.println(0.8-0.7);//输出0.10000000000000009System.out.println(0.7-0.6);//输出0.09999999999999998
30
2020
04

float a = 0.125f; double b = 0.125d; System.out.println((a - b) == 0.0); 代码的输出结果是什么?

true解释:首先浮点数是由符号位、指数位、有效数字三个部分组成,而0.125f、0.125d均可以精确的表示出来,不存在精度丢失,因而a-b==0.0。
31
2020
03

final, finally, finalize的区别。

 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。        finally是异常处理语句结构的一部分,表示总是执行。        finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。但是JVM不保证此方法总被调用
31
2020
03

try {}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?

 我们知道finally{}中的语句是一定会执行的,那么这个可能正常脱口而出就是return之前,return之后可能就出了这个方法了,鬼知道跑哪里去了,但更准确的应该是在return中间执行,请看下面程序代码的运行结果:public classTest {    public static void main(String[]args) {       System.out.println(newTest().test())
31
2020
03

下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

对于如下代码:String s1 = "a";String s2 = s1 + "b";String s3 = "a" + "b";System.out.println(s2 == "ab");System.out.println(s3 == "ab");第一条语句打印的结果为false,第二条语句打印的结果为true,这说明javac编译可以对字符串常量直接相加的表达式进行优
31
2020
03

String和StringBuffer的区别

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串可以进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
31
2020
03

String s = new String("xyz");创建了几个StringObject?是否可以继承String类?

 两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。NewString每写一遍,就创建一个新的对象,它使用常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,那么这里就不会创建”xyz”了,直接从缓冲区拿,这时创建了一个StringObject;但如果以前没有用过"xyz",那么此时就会创建一个对象并放入缓冲区,这种情况它创建两个对象。至于String类是否继承
31
2020
03

你所知道的集合类都有哪些?主要方法?

最常用的集合类是 List 和 Map。 List的具体实现包括 ArrayList和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List适用于按数值索引访问元素的情形。        Map 提供了一个更通用的元素存储方法。 Map集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。        它们都有增删改查的
31
2020
03

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?

Set里的元素是不能重复的,元素重复与否是使用equals()方法进行判断的。        ==和equal区别也是考烂了的题,这里说一下:        ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。        equals方法是用于比较两个独立对象的内
31
2020
03

Collection和Collections的区别。

 Collection是集合类的上级接口,继承他的接口主要有Set和List.        Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
31
2020
03

去掉一个Vector集合中重复的元素

Vector newVector = new Vector();For (int i=0;i<vector.size();i++){Object obj = vector.get(i);       if(!newVector.contains(obj);             newVector.add(obj);}还有一种简单的方式,利用了Set不允许重复元素:HashSet
31
2020
03

说出ArrayList,Vector,LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差。而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,索引就变慢了,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。     
31
2020
03

List、Map、Set三个接口,存取元素时,各有什么特点?

(这样的题比较考水平,两个方面的水平:一是要真正明白这些内容,二是要有较强的总结和表述能力。)        首先,List与Set具有相似性,它们都是单列元素的集合,所以,它们有一个共同的父接口,叫Collection。Set里面不允许有重复的元素,即不能有两个相等(注意,不是仅仅是相同)的对象,即假设Set集合中有了一个A对象,现在我要向Set集合再存入一个B对象,但B对象与A对象equals相等,则B对象存储不进去,所以,Set集合的add方法有一个
31
2020
03

List,Set, Map是否继承自Collection接口?

  List,Set是,Map不是
31
2020
03

List和 Map区别?

一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。
31
2020
03

HashMap和Hashtable的区别

   HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。        HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue
31
2020
03

ArrayList和Vector的区别

这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是与HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素。         ArrayList与Vector的区别主要包括两个方面:.(1)同步性: 
31
2020
03

String s = "Hello";s = s + "world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

 没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。      &
31
2020
03

内部类可以引用它的包含类的成员吗?有没有什么限制?

 完全可以。如果不是静态内部类,那没有什么限制!        如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员,例如,下面的代码:class Outer{static int x;static class Inner    {        voidtest()        {&
31
2020
03

abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

   abstract的method不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!        native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。例如,FileOutputSteam类要硬件打交道,底层的实现用的是操作系统相关的api实现;例如,在windows用c语言实现的,所以,查看jdk的源代码,
31
2020
03

abstractclass和interface语法上有什么区别?

1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。5. 抽象类中可以包含静态方法,接口中不能包含静态方法6. 抽象类和接口中都可以包
31
2020
03

Java中实现多态的机制是什么?

靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
31
2020
03

接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?

 接口可以继承接口。抽象类可以实现(implements)接口,抽象类可以继承具体类。抽象类中可以有静态的main方法。        备注:只要明白了接口和抽象类的本质和作用,这些问题都很好回答,你想想,如果你是java语言的设计者,你是否会提供这样的支持,如果不提供的话,有什么理由吗?如果你没有道理不提供,那答案就是肯定的了。        只要记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有a
31
2020
03

Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?

Overload是重载的意思,Override是覆盖的意思,也就是重写。        重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。        重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向
31
2020
03

Math.round(11.5)等於多少?Math.round(-11.5)等於多少?

 Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应。        例如,ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,Math.ceil(11.6)的结果为11,Math.ceil(-11.6)的结果是-12;最难掌握的是round方
31
2020
03

Integer与int的区别

 int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。        例如:要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符
31
2020
03

是否可以从一个static方法内部发出对非static方法的调用?

   不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。
31
2020
03

静态变量和实例变量的区别?

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。        在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。&nbs
31
2020
03

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句: finalStringBuffer a=new StringBuffer("immutable");执行如下语句将报告编译期错误:a=new StringBuffer("");但是,执行如下语句则可以通过编译:a.append(" broken!");有人在定义方法的参数时,可能想采用如下形式来阻止方法内部
31
2020
03

用最有效率的方法算出2乘以8等於几?

  2<< 3,(左移三位)因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2<< 3。
31
2020
03

char型变量中能不能存贮一个中文汉字?为什么?

char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
31
2020
03

switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

 在switch(e)中,e只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。switch语句能否作用在String上说错了,Java1.7之后已经支持这种写法了!
31
2020
03

在JAVA中如何跳出当前的多重嵌套循环?

 在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环。例如:for(int i=0;i<10;i++){   for(intj=0;j<10;j++){       System.out.println(“i=” + i + “,j=” + j);       if(j == 5) bre
31
2020
03

说说&和&&的区别。

  &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。        &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str!= null&& !str.equals(s))表达式,当str为null时,后面的表达式不会执行
31
2020
03

Java有没有goto?

  java中的保留字,现在没有在java中使用。
31
2020
03

一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。
30
2020
03

g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择

CMS收集器:是基于标记清除算法实现的,一般就是初始标记,并发标记,重新标记,并发清除,目的是实现最短的响应回收时间。保证系统的响应时间,减少垃圾收集时的停顿时间G1收集器:他的过程是初始标记、并发标记、最终标记、筛选回收,基于标记整理算法实现,以吞吐量优先,保证保证吞吐量的。
30
2020
03

你们线上应用的 JVM 参数有哪些。

-serverXms6000M-Xmx6000M-Xmn500M-XX:PermSize=500M-XX:MaxPermSize=500M-XX:SurvivorRatio=65536-XX:MaxTenuringThreshold=0-Xnoclassgc-XX:+DisableExplicitGC-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:+UseCMSCompactAtFullCollection-XX:CMSFullGCsBeforeCompac
30
2020
03

抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。2、抽象类要被子类继承,接口要被类实现。3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。6、抽象方法只
26
2020
03

jsp静态包含和动态包含的区别

   1、<%@include file="xxx.jsp"%>为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换的时期,而<jsp:include page="xxx.jsp">是jsp中的动作指令,其文件的包含是发生在编译时期,也就是将java文件编译为class文件的时期         2、使用静态包含只会产生一个class文件,而使用动
26
2020
03

Java 中,throw 和 throws 有什么区别

 throw 用于抛出 java.lang.Throwable 类的一个实例化对象,意思是说你可以通过关键字 throw 抛出一个Exception,如: throw new IllegalArgumentException(“XXXXXXXXX″)        而throws 的作用是作为方法声明和签名的一部分,方法被抛出相应的异常以便调用者能处理。Java 中,任何未处理的受检查异常强制在 throws 子句中声明。
26
2020
03

heap和stack的区别

 java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。        堆是与栈作用不同的内存,一般用于存放不在当前方法栈中的那些数据,例如,使用new创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。
26
2020
03

字节流与字符流区别

要把一段二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一段二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作,用一种抽象的方式进行描述,这个抽象描述方式起名为IO流,对应的抽象类为OutputStream和InputStream,不同的实现类就代表不同的输入和输出设备,它们都是针对字节进行操作的。       计算机中的一切最终都是二进制的字节形式存在。对于经常用到的中文字符,首先要得到其对应的字节,然后将字节写入到输出流。
26
2020
03

a.hashCode() 有什么用?与 a.equals(b) 有什么关系?

 hashCode() 方法对应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它与 equals() 方法关系特别紧密。根据 Java 规范,两个使用 equal() 方法来判断相等的对象,必须具有相同的 hash code。
26
2020
03

我们能将 int 强制转换为 byte 类型的变量吗?如果该值大于 byte 类型的范围,将会出现什么现象

是的,我们可以做强制转换,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果强制转化,int 类型的高 24 位将会被丢弃,byte 类型的范围是从 -128 到 127。
26
2020
03

Java 中堆和栈有什么区别?

  JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享。        栈:在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。
26
2020
03

error和exception区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
26
2020
03

运行时异常与一般异常有何不同?

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
26
2020
03

final, finally, finalize的不同

 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。        finally是异常处理语句结构的一部分,表示总是执行。        finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。但是JVM不保证此方法总被调用
26
2020
03

String和StringBuffer的不同

 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串可以进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
26
2020
03

String s = new String("xyz");创建了几个StringObject?是否可以继承String类?

 两个或一个都有可能,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。NewString每写一遍,就创建一个新的对象,它使用常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,那么这里就不会创建”xyz”了,直接从缓冲区拿,这时创建了一个StringObject;但如果以前没有用过"xyz",那么此时就会创建一个对象并放入缓冲区,这种情况它创建两个对象。至于String类是否继承
26
2020
03

List和 Map区别?

 一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List中存储的数据是有顺序,并且允许重复;Map中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。
26
2020
03

short s1= 1; s1 = (s1+1是int类型,而等号左边的是short类型,所以需要强转)1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?(没有错)

   对于short s1= 1; s1 = s1 + 1;由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。        对于short s1= 1; s1 += 1;由于 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
11
2020
03

抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。

1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。2、抽象类要被子类继承,接口要被类实现。3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。6、抽象方法只
11
2020
03

String能被继承吗?为什么?

不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。前者默认调用的是String.valueOf来返回String实例对象,至于调用哪个则取决于你的赋值,比如String num=1,调用的是public static String valueOf(int i) {return Integer.toString(i);}后者则是调用
19
2020
02

嵌套静态类与顶级类有什么区别?

一个公共的顶级类的源文件名称与类名相同,而嵌套静态类没有这个要求。一个嵌套类位于顶级类内部,需要使用顶级类的名称来引用嵌套静态类,如HashMap.Entry 是一个嵌套静态类,HashMap 是一个顶级类,Entry 是一个嵌套静态类。
19
2020
02

什么时候使用享元模式?

享元模式通过共享对象来避免创建太多的对象。为了使用享元模式,你需要确保你的对象是不可变的,这样你才能安全的共享。JDK 中 String 池、Integer 池以及 Long 池都是很好的使用了享元模式的例子。
19
2020
02

给我一个符合开闭原则的设计模式的例子?

开闭原则要求你的代码对扩展开放,对修改关闭。这个意思就是说,如果你想增加一个新的功能,你可以很容易的在不改变已测试过的代码的前提下增加新的代码。有好几个设计模式是基于开闭原则的,如策略模式,如果你需要一个新的策略,只需要实现接口,增加配置,不需要改变核心逻辑。一个正在工作的例子是Collections.sort() 方法,这就是基于策略模式,遵循开闭原则的,你不需为新的对象修改 sort() 方法,你需要做的仅仅是实现你自己的 Comparator 接口。
19
2020
02

OOP 中的 组合、聚合和关联有什么区别?

如果两个对象彼此有关系,就说他们是彼此相关联的。组合和聚合是面向对象中的两种形式的关联。组合是一种比聚合更强力的关联。组合中,一个对象是另一个的拥有者,而聚合则是指一个对象使用另一个对象。如果对象 A 是由对象 B组合的,则 A 不存在的话,B 一定不存在,但是如果 A 对象聚合了一个对象 B,则即使 A 不存在了,B 也可以单独存在。
19
2020
02

Java 中,嵌套公共静态类与顶级类有什么不同?

类的内部可以有多个嵌套公共静态类,但是一个 Java 源文件只能有一个顶级公共类,并且顶级公共类的名称与源文件名称必须一致。
19
2020
02

继承和组合之间有什么不同?

虽然两种都可以实现代码复用,但是组合比继承共灵活,因为组合允许你在运行时选择不同的实现。用组合实现的代码也比继承测试起来更加简单。
19
2020
02

什么时候使用组合模式?

组合模式使用树结构来展示部分与整体继承关系。它允许客户端采用统一的形式来对待单个对象和对象容器。当你想要展示对象这种部分与整体的继承关系时采用组合模式。
19
2020
02

什么时候使用访问者模式?

访问者模式用于解决在类的继承层次上增加操作,但是不直接与之关联。这种模式采用双派发的形式来增加中间层。
30
2020
01

Java 的优势

 - 语法简单    - 跨平台    - 当开发规模膨胀到一定程度,Java在规范、协作和性能调优上还是占有很大优势,在大型应用,尤其是企业应用上,Java的地位仍然难以撼动
09
2020
01

java 创建对象的几种方式

java 创建对象的几种方式:1.采用new2.通过反射3.采用clone4.通过序列化机制前2者都需要显式地调用构造方法。造成耦合性最高的恰好是第一种,因此你发现无论什么框架,只要涉及到解耦必先减少new的使用。
09
2020
01

&和&&的区别

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

17
2019
12

java面试题:String 是最基本的数据类型吗?

不是。

Java 中的基本数据类型只有 8 个 :byte、short、int、long、float、double、char、boolean;

16
2019
12

访问修饰符 public,private,protected,以及不写(默认)时的区别?

修饰符 当前类 同 包 子 类 其他包类的成员不写访问修饰时默认为 default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java 中,外部类的修饰符只能是 public 或默认,类的成员(包括内部类)的修饰符可以是以上四种。
15
2019
12

面向对象的特征有哪些方面

面向对象的特征主要有以下几个方面:抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java 与模式》或《设计模式精解》中关于桥梁模式的部分)。封装:通常认为封装是
21
2019
11

说一下表达式语言(EL)的隐式对象及其作用

EL的隐式对象包括:pageContext、initParam(访问上下文参数)、param(访问请求参数)、paramValues、header(访问请求头)、headerValues、cookie(访问cookie)、applicationScope(访问application作用域)、sessionScope(访问session作用域)、requestScope(访问request作用域)、pageScope(访问page作用域)。

17
2019
11

java使用标签库有什么好处?如何自定义JSP标签?

使用标签库的好处包括以下几个方面: 

- 分离JSP页面的内容和逻辑,简化了Web开发; 

- 开发者可以创建自定义标签来封装业务逻辑和显示逻辑; 

- 标签具有很好的可移植性、可维护性和可重用性; 

- 避免了对Scriptlet(小脚本)的使用(很多公司的项目开发都不允许在JSP中书写小脚本)

16
2019
11

说一下表达式语言(EL)的隐式对象及其作用

EL的隐式对象包括:pageContext、initParam(访问上下文参数)、param(访问请求参数)、paramValues、header(访问请求头)、headerValues、cookie(访问cookie)、applicationScope(访问application作用域)、sessionScope(访问session作用域)、requestScope(访问request作用域)、pageScope(访问page作用域)。

15
2019
11

你的项目中使用过哪些JSTL标签?

项目中主要使用了JSTL的核心标签库,包括<c:if>、<c:choose>、<c: when>、<c: otherwise>、<c:forEach>等,主要用于构造循环和分支结构以控制显示逻辑。

10
2019
11

web.xml文件中可以配置哪些内容?

web.xml用于配置Web应用的相关信息,如:监听器(listener)、过滤器(filter)、 Servlet、相关参数、会话超时时间、安全验证方式、错误页面等,下面是一些开发中常见的配置:

08
2019
11

java监听器有哪些作用和用法?

Java Web开发中的监听器(listener)就是application、session、request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件,如下所示: 

07
2019
11

过滤器有哪些作用和用法?

Java Web开发中的过滤器(filter)是从Servlet 2.3规范开始增加的功能,并在Servlet 2.4规范中得到增强。对Web应用来说,过滤器是一个驻留在服务器端的Web组件,它可以截取客户端和服务器之间的请求与响应信息,并对这些信息进行过滤。

05
2019
11

实现会话跟踪的技术有哪些?

由于HTTP协议本身是无状态的,服务器为了区分不同的用户,就需要对用户会话进行跟踪,简单的说就是为用户进行登记,为用户分配唯一的ID,下一次用户在请求中包含此ID,服务器据此判断到底是哪一个用户。 

04
2019
11

如何实现JSP或Servlet的单线程模式

对于JSP页面,可以通过page指令进行设置。

03
2019
11

讲解JSP中的四种作用域

JSP中的四种作用域包括page、request、session和application。

01
2019
11

JSP和Servlet是什么关系?

Servlet是一个特殊的Java程序,它运行于服务器的JVM中,能够依靠服务器的支持向浏览器提供显示内容。JSP本质上是Servlet的一种简易形式,JSP会被服务器处理成一个类似于Servlet的Java程序,可以简化页面内容的生成。

31
2019
10

常用的Web服务器有哪些?

Unix和Linux平台下使用最广泛的免费HTTP服务器是:Apache服务器,而Windows平台的服务器通常使用IIS作为Web服务器。

30
2019
10

java中get和post请求的区别?

①get请求用来从服务器上获得资源,而post是用来向服务器提交数据; 

29
2019
10

java中JSP有哪些内置对象?作用分别是什么?

JSP有9个内置对象:

28
2019
10

java转发(forward)和重定向(redirect)的区别?

答:forward是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

28
2019
10

Servlet接口中有哪些方法?

Servlet接口定义了5个方法,其中前三个方法与Servlet生命周期相关: 

25
2019
10

阐述Servlet和CGI的区别?

Servlet与CGI的区别在于Servlet处于服务器进程中。

25
2019
10

什么是基于Java的Spring注解配置? 给一些注解的例子.

基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件。 

25
2019
10

Spring框架的事务管理有哪些优点?

它为不同的事务API 如 JTA,JDBC,Hibernate,JPA 和JDO,提供一个不变的编程模式。

24
2019
10

在 Spring中如何注入一个java集合?

Spring提供以下几种集合的配置元素:

24
2019
10

解释不同方式的自动装配

有五种自动装配的方式,用来指导Spring容器用自动装配方式进行依赖注入。

23
2019
10

解释Spring框架中bean的生命周期。

解释Spring框架中bean的生命周期。

23
2019
10

解释Spring支持的几种bean的作用域?

Spring框架支持以下五种bean的作用域:

22
2019
10

Spring beans介绍

Spring beans 是那些形成Spring应用的主干的java对象。

22
2019
10

什么是Spring的依赖注入?有哪些方法进行依赖注入。

依赖注入:是IOC的一个方面,是个通常的概念,它有多种解释。

22
2019
10

ApplicationContext通常的实现是什么?

FileSystemXmlApplicationContext :此容器从一个XML文件中加载beans的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数。

21
2019
10

java中使用Spring框架的好处是什么?

使用Spring框架的好处是什么?

19
2019
10

Java小程序:输出int数中的最大值

Java小程序:输出int数中的最大值。

18
2019
10

Java 9 对 CompletableFuture 做了改进:支持 delays 和 timeouts

Java 9 对 CompletableFuture 做了改进:支持 delays 和 timeouts。

18
2019
10

Java 9 对 CompletableFuture 做了改进:增强了对子类化的支持

java9对CompletableFuture做了许多改进使得  可以被更简单的继承。

17
2019
10

Java 9 对 CompletableFuture 做了改进:新的工厂方法

Java 9 改进的 CompletableFuture API新的工厂方法。

12
2019
10

Java8生成流:Stream接口的静态工厂方法之of方法

Stream接口的静态工厂方法主要通过重载的of方法。

10
2019
10

Java单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。