第一套
-
下面哪个Set类是按元素排好序的?
LinkedHashSet:按添加顺序排列
TreeSet:自然排序(即按元素排好序)
HashSet:按元素hash值存储 -
abstract相关知识点
- 抽象类不能被实例化(因为抽象方法未实现)
- 抽象类可以被继承
- 子类可以抽象也可以非抽象
- 并不是只能被继承
- 可以被抽象类和非抽象类继承
补充:
如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
- 下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:
byte[] src,dst;
答案:dst=new String(src,"GBK").getBytes("UTF-8")
错选:dst=String.encode(String.decode(src,"GBK")),"UTF-8" )
错误原因:string类没有decode和encode方法
-
下列描述错误的是:
错误选项:抽象类自身可以定义成员而接口不可以
错因:接口可以定义成员但要求必须是常量
错误选项:一个类可以有多个父类和多个基接口
错因:java为单继承,多实现。可以实现多个接口。 -
以下哪种JAVA的变量表达式使得变量a和变量b具有相同的内存引用地址( )
String a = "hello"; String b = "hello";
Integer a; Integer b = a;
A对 指向常量池里的"hello"。
B对 题中没说声明的a是局部变量。
错误选项:
int a = 1; Integer b = new Integer(1);
int a = 1; Integer b = 1;
C错 int a =1;并不指向堆中,它只有值,没有引用地址,Integer b =new Integer(1);指向堆中地址为1的位置。
D错 原因同C
- 在java中重写方法应遵循规则的包括()
方法的重写(override)两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限:
访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
第二套
- 在jdk1.5之后,下列 java 程序输出结果为______。
复制代码
int i=0;
Integer j = new Integer(0);
System.out.println(i==j);
System.out.println(j.equals(i));
正确答案:true,true
这道题想要考察什么?:考察自动拆装箱
- 基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;
- 两个Integer类型进行“==”比较,如果其值在-128至127,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关。
- 两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true
- 基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行上述中的比较。
- 注意:基本型不能调用equals(),会导致编译出错
-
知识点:
request.getAttribute()方法返回request范围内存在的对象
request.getParameter()方法是获取http提交过来的数据。
getAttribute是返回对象,getParameter返回字符串。 -
知识点:
以Stream结尾的都是字节流
以reader和writer结尾的都是字符流
如果在读写文件需要对内容按行处理则选择字符流
与文件内容无关则选择字节流 -
下面关于volatile的功能说法正确的是哪个
原子性
有序性
可见性
持久性
正确答案: B C
synchronized保证三大性,原子性,有序性,可见性
volatile保证有序性,可见性,不能保证原子性(线程不安全)
volatile 修饰符
volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
第三套
- 在运行时,由java解释器自动引入,而不用import语句引入的包是()。
java.lang
java.lang包是java语言包,是自动导入的。
java.util包是java的工具包,需要手动导入。
java.sql包,JDBC接口类,需要手动导入。
java.io;各种输入输入流,需要手动导入。
- 如果一个list初始化为{5,3,1},执行以下代码后,其结果为()?
nums.add(6);
nums.add(0,4);
nums.remove(1);
正确答案: [4, 3, 1, 6]
过程:
{5,3,1} nums.add(6);
{5,3,1,6} nums.add(0,4);//在下标为0的数增加一个4
{4,5,3,1,6} nums.remove(1);//5被删掉
最终结果:{4,3,1,6}
- 知识点
抽象方法不能有方法体:
举例:
public abstract void anotherMethod(){}
尽管{}内没有内容,但仍然属于0方法体,所以不属于抽象方法
- 有时为了避免某些未识别的异常抛给更高的上层应用,在某些接口实现中我们通常需要捕获编译运行期所有的异常, catch 下述哪个类的实例才能达到目的:()
正确答案: Exception
其他错误选项:
Error:系统错误,catch无法处理
RuntimeException:不需要程序员处理(属于运行期异常的组长)
Throwable:只需要对exception进行处理
error和expection均为子类
- 在jdk 1.7中,以下说法正确的是( )。
正确:Java中所有的非抽象方法都必须在类内定义
(因此在JDK1.7中,接口只能定义抽象方法,既Java中所有的非抽象方法都必须在类内定义。)
错误:
Java中主方法可以不在类内定义,其他方法都必须定义在类内
Java中主方法必须定义在类内,其他方法可以不必定义在类内
Java中所有方法都不必在类内定义
- 已知String a=“a”,String b=“b”,String c=a+b,String d=new String(“ab”) 以下操作结果为true的是
选项:
(a+b).equals©
a+b= =c
c= =d
c.equals(d)
正确答案: A(有争议) D
= = 和 equals():
“= =” 用于比较基本数据类型时比较的是值,用于比较引用类型时比较的是引用指向的地址。
Object 中的equals() 与 “==” 的作用相同,但String类重写了equals()方法,比较的是对象中的内容。
&spm=1001.2101.3001.11974&articleId=123145738&d=1&t=3&u=4afc97738f2c43349ba67b937bc7aef5)
1203


&spm=1001.2101.3001.11976&articleId=123145738&d=1&t=3&u=73bc5a819d464797a7f3eb7eca730de5)

被折叠的 条评论
为什么被折叠?



