目录
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
2、Java有没有goto?
3、说说&和&&的区别。
4、在JAVA中如何跳出当前的多重嵌套循环?
5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
6、下面代码有没有错?
7、char型变量中能不能存贮一个中文汉字?为什么?
8、用最有效率的方法算出2乘以8等於几?
9、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
10,静态变量和实例变量的区别?
11、是否可以从一个static方法内部发出对非static方法的调用?
12、Integer与int的区别
13、Math.round(11.5)等於多少?Math.round(-11.5)等於多少?
14、Overload和Override的区别?Overloaded的方法是否可以改变返回值的类型?
15、接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concreteclass)?抽象类中是否可以有静态的main方法?
16、Java中实现多态的机制是什么?
17、abstract class和interface语法上有什么区别?
18、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
19、内部类可以引用它的包含类的成员吗?有没有什么限制?
21、ArrayList和Vector的区别
22、HashMap和Hashtable的区别
23、List和 Map区别?
24、List,Set, Map是否继承自Collection接口?
25、List、Map、Set三个接口,存取元素时,各有什么特点?
26、说出ArrayList,Vector,LinkedList的存储性能和特性
27、去掉一个Vector集合中重复的元素
28、Collection和Collections的区别。
29、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?
30、你所知道的集合类都有哪些?主要方法?
可以包括多个类:
没有,goto作为保留关键字
我的答案 ----- 大错特错!!!
switch能用在long上 1.7以后,可以用在String上 不能用在byte上
正确答案:
short s1 = 1;
s1 = s1+1;
short s2 = 1;
s2 += 1;
我的答案: ------------- 大错特错
第一段代码有错,short s1 = (short) 1; s1 = (short) (s1+1);
第二段代码有错 short s2 = (short) 1,s2+=(short) 1;
我的理解, java 大转小需强转,小转大可以隐式转换。
所以,凡是涉及到1的,都需要强转
正确答案:
第一段代码有错 应该为 s1 = (short) (s1+1) ,第二段代码没有错
第一: 基础太差
short s1 = 1; // 编译器自动判断1为short
short s2 = 32768; // 报错 编译器会将 [-32768,32767]的值,判定为short,超出为int 需要强转
int i1 = 1; // 编译器自动判断为int
int i2 = 111111111111111; // 报错 编译器判断[-2147483648,2147483647]中的值为int,超出为long
long l1 = 1;// 不报错
long l2 = 9223372036854775808; // 报错 超出范围[-9223372036854775808,9223372036854775807]
Short S1 = 1; // 报错 1为int,不能转为Short
Long L1 = 1; // 报错 1为int,不能转为Long
short s3 = s1 + 1; // 报错 1 为int, 不能转为short
long l3 = l1 + 1; // 不报错 1 为int, 可以转为long
/**
* 基本类型初始化时,可以根据整数范围判定类型
* 其他时候,整数默认为int型
*/
第二: (E1 op=E2) ==> (E1=(T)((E1) op (E2)))
s1 = s1+1; 这时候 // s1 是 short , 1 是 int 所以 s1+1 的结果为int (小转大), 所以报错,应该为 s1 = (short) (s1+1);
s1 += 1; Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2)))
所以 s1+=1 ==> s1 = (short)(s1 + 1);
char占两个字节,能保存 65536个UTF-16字符,可以保存中文,但不能保存所有中文汉字。
2<<3;
引用不能变
静态变量,所有对象公用,存在 方法区 1.7 ,元数据区 1.8 中,和class放在一起
实例对象存在对象中,存放在堆中,方法变量存放在栈帧中,
不可以
但是可以调用静态变量的非静态方法
Integer 封装数据类型 可以为null, [-128,127] 缓存, 自动装箱拆箱 Integer a = 1 ==> Integer a = Integer.valueOf(1);
int 基本数据类型 不可以为null,
round向上取整
Math.round(11.5) = 12;
Math.round(-11.5) = -11;
继承和实现
我的回答: ------------- 错了
抽象方法不可以是static,native,final,可以是synchronized
正确答案
抽象方法不可以是static,native,final,synchronized
因为假设有这么一个方法,synchronized 的方法的同步锁对象是 this ,而包含这个抽象方法的接口或抽象类也许有多个子类,那么那个 this 到底是指哪一个子类就无法确定。所以不可以。 // 这个解释不对吧,多态中,子类实现父类,子类必须继承,也可以找到子类。
可以引用,静态内部类只能引用静态成员
20、String s = "Hello";s = s + "world!";这两行代码执行后,原始的String对象中的内容到底变了没有?
"Hello"已经被声明为字符常量了,不会改变"world!”也是字符常量,新增了一个 "Helloworld!"的字符常量
s的引用地址发生了改变。
不是 ,
ArrayList和LinkedList线程安全性实测: 100线程,每个录10W 总计1000W 实际录入 500W不到,少了一半多
用Set去重
Collection是接口,是List的父级
Collections是工具类,封装了很多和集合相关的方法
equals和==的区别
== 判断引用相同
Object的equals就是 ==
String的equals是判断==和值相同