Java笔试题记录
1、Spring自动装配是什么?自动装配模式是什么?
所谓的自动装配,就是将Bean注入到其他Bean的Property中。其定义可以理解为:无须在Spring配置文件中描述JavaBean之间的依赖关系(如配置<property>、<constructor-arg>)。IOC容器会自动建立Javabean之间的关联关系。在Spring框架中共有5种自动装配模式。
- no:这是Spring框架的默认设置,在该设置下自动装配是关闭的,开发者需要自行在bean定义中用标签明确的设置依赖关系。缺省情况下,自动配置是通过“ref”属性手动设定。
- byName:该选项可以根据bean名称设置依赖关系。当向一个bean中自动装配一个属性时,容器将根据bean的名称自动在在配置文件中查询一个匹配的bean。如果找到一个bean的名称和其他bean属性的名称是一样的话,就装配这个属性,如果没找到的话就报错。
- byType:该选项可以根据bean类型设置依赖关系。当向一个bean中自动装配一个属性时,容器将根据bean的类型自动在在配置文件中查询一个匹配的bean。如果找到一个bean的数据类型是用其它bean属性的数据类型的话,就装配这个属性,如果没找到的话就报错。
- constructor:造器的自动装配和byType模式类似,但是仅仅适用于与有构造器相同参数的bean,如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。
- autodetect:该模式自动探测使用构造器自动装配或者byType自动装配。首先,首先会尝试找合适的带参数的构造器,如果找到的话就是用构造器自动装配,如果在bean内部没有找到相应的构造器或者是无参构造器,容器就会自动选择byTpe的自动装配方式。
2、String s=new String(xyz)创建多少个String Object对象,为什么?
分两种情况,
1)如果String常量池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String(“xyz”),此时为一个Obeject对象;
2.如果String常量池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String(“xyz”),此时为二个Obeject对象;
3、怎么判断null和空?
==判断null,equals()和isEmpty()判断空
4、重载和重写有什么区别?
重载就是同一个类中多个同名方法根据不同的传参来执行不同的逻辑处理。
重写就是子类对父类方法的重新改造,外部样子不能改变,内部逻辑可以改变 。
5、体现多态的是什么?
继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)
6、接口能被什么修饰符修饰?
public, abstract, default, static and strictfp
7、==与equals的区别?
== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型比较的是值,引用数据类型比较的是内存地址)。
equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:
情况 1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
情况 2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来比较两个对象的内容是否相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。
8、Thread类里面的方法?
详情见我另外一篇文章:Thread的方法
9、字符流有哪些?
以Reader、Writer结尾的都是字符流
10、((NULL)null).sayHelloworld();可以运行吗
java中任何类型对null进行强转都是合法的(null即万物,万物即null),只不过强转后是一个空的对象即是无效对象
static方法的调用是和类名绑定的(ClassName.MethodName),不借助对象进行访问,所以这里直接.就可以了,
如果去掉static修饰符之后,使用null调用编译都不会通过!
11、 字符串拼接
str1指向常量池中的字符串;str2是通过StringBuilder类new出的对象,指向堆。故为false