一些平时自己看看的Java基础,算是防止自己忘记,加深巩固一下.顺便有小伙伴有需要也能看看.
1.访问修饰符public private protected 以及默认时的区别?
修饰符 | 当前类 | 同 包 | 子 类 | 其他包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
2.String是最基本的数据类型吗?
不是,而是引用类型,Java中的基本数据类型有且只有8个:byte short int long float double char boolean;
3.float f = 3.4;是否正确?
不正确,将作为double的3.4赋值给float属于下转型,会造成经度损失; float f = (float)3.4, float f = 3.4f;
4.short s1 = 1; s1 = s1+1;有错吗? short s1 = 1; s1 += 1;有错吗?
错误,1是int类型, s1+1结果也是int, 需要强制转换类型才能赋值给short型;
正确,+=会隐含强制转换类型s1 = (short)(s1+1);
5.int和Integer有什么区别?
int是基本数据类型
Integer是int的包装类,java5开始引入了自动拆箱/装箱机制,每个基本类型都有一个对应包装类;
6.new Integer(120)与Integer.valueOf(120)有什么区别?
new Integer(120)每次都会new一个对象;
Integer.valueOf(120)会使用缓存池中的对象,多次调用取的是同一个对象的引用;
7.&和&&的区别?
& 按位与 逻辑与(没有短路功能)
&&逻辑与(有短路功能)
8.Math.round(11.5)等于多少? Math.round(-11.5)等于多少?
四舍五入
前者12 后者-11
9.switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch支持int和枚举类型,可以用char byte short int类型,jdk7中支持String类型,但是不支持long
10.一个".java"源文件中是否包含多个类(不是内部类)? 有什么限制?
可以,但一个源文件中最多只能有一个公开类(public class)而且文件名必须和公开类的类名完全一致
11.用最有效的方法计算2乘以8
2<<3;
12.数组有没有length()方法?String有没有length()方法?
数组没有length()方法 但是有length属性
String有length()方法;
13.在Java中,如何跳出当前的多重嵌套循环?
使用标号;
ok:
for(int i = 0;i<10;i++){
for(int j = 0;j<10;j++){
system.out.println(i)
if(j==5){
break ok;
}
}
}
14.构造器(constructor)是否可以被重写(override)?
不能 但是可以被重载
15.两个对象值相同x.equals(y) == true,但却有可能有不同的hashcode,对不对?
错误,equals则必然hashcode相等
16.是否可以继承String类?
final 不能被继承
17.当一个对象被当做参数传递到一个方法后,此方法可以改变这个对象的属性,并可以返回变化后的结果,这里是值传递还是引用传递?
值传递,Java没有引用传递,方法得到的是所有参数值的一个拷贝,不能修改传递给它的任何参数变量的内容
18.String,StingBuilder,StringBuffer的区别?
String:只读字符串,内容不能被改变
StringBuilder:字符串对象可以直接进行修改,线程不安全
StringBuffer:字符串对象可以直接进行修改,线程安全
19.重载和重写的区别,重载的方法能否根据返回类型进行区分?
重载:在一个类中,方法名字相同,而参数不同
重写:子类对父类方法进行重写,返回值和参数都不能改变
返回值类型作为函数运行之后的一个状态,他是保持方法的调用者与被调用者进行通信的关键,并不能作为某个方法的标识,所以通过返回类型并不能区分重载的方法,应该根据所要区分的方法的方法名是否相同并且方法中所带的参数去区分。
20.抽象类和接口有什么异同?
接口的设计目的是对类的行为进行一种'有'的约束,强制要求不同的类具有相同的行为,但也仅仅约束了行为的有无,对这个行为怎么实现不做限制;
抽象类的目的是代码的复用
当不同的类具有相同的行为,并且其中一部分行为实现方式一致,就可以让这些类都派生出一个抽象类,从而不需要让所有子类都来实现这个行为,从而达到代码复用的目的
而不同的行为就各自单独去实现,因此抽象类不允许实例化出来;