java基础笔试题

详细说说hashmap?

hashmap是一个散列表,存储内容是key-value映射, 整型的(Integer)key和字符串类型(String)的value

Hashmap实现了Map接口,根据键的hashcode值存储数据,最多允许一个键为null, 

hashmap是线程不安全的。

hashmap是无序的,即插入数据的顺序不会有序

一个.java的源文件是否可以包含多个类(不是内部类)?
 可以有多个类,只能有一个public类,并且public的类名必须和文件名一致
java中&和&&的区别

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符的两边的表达式的
结构都为true时,整个运算结果才为true,否则只要有一方为false,则表达式为false
&&具有短路功能,如果一个表达式为false,则不会进行第二个表达式 ,例如
if(str != null && str.equals(''))表达式,当str为null时,后面的表达式不会执行,如果将&&改成&,则出现空指针异常
&可以作为位运算符,当&操作符的两边的表达式不是boolean类型时,&表示按位与操作,例如
0x31 & 0x0f 的结果是 0x01   获取改整数的最低4个bit位。

java中如何跳出当前的多重循环?
在java中,要想跳出多重循环,可以在外面的循环语句前加一个标号,然后在里循环的代码体中使用带有标号的break语句,即可跳出外层循环。
for(int i=0;i<10;i++) {
    for(int j=0;j<10 j++)
        system.out.println("i="+i+"j"+j);
        if (j==5) break ok;
}
通常不使用这种方法,让外层的循环表达式的结果可以收到里层循环体代码的控制,例如在二维数组中查找出某个数
```
int arr[][]={{1,2,3},{4,5,6,7},{9}};
boolean found=false;
for(int i=0; i a=new StringBuffer("");
a.append("broken");
将final修饰的变量内容改变了。


==和equals方法究竟有什么区别?


解答:==操作符用来比较两个变量的值是否相等
equals方法:用于比较两个独立的对象的内容是否相等。
如下代码:
String a = new String("foo");
String b = new String("foo");
因为a 和b是两个不同的对象,即a和b中存储的数值是不相同的。所以a==b   返回false
因为两个对象中的内容是一样的,所以a.equals(b) 返回true
equals方法继承与object类,字符串的比较基本上都使用equals方法比较


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


静态变量需要加static关键字,而实例变量不加
静态变量不属于某个实例对象,而是属于类,也称类变量 通过类.类变量
实例变量必须创建对象后才可以通过这个对象来使用。


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


不可以,因为非static方法要与对象关联在一起,必须创建该对象后,才可以在该对象上使用,
而static方法调用非static方法,可能这个非static方法的对象实例还没有创建。


Integer和int的区别?


解答:int是java中原始数据类型,int的默认值是0
integer是java为int提供的封装类,Integer默认值是null

说一说java多态?

多态就是同一个接口,使用不同的实例而执行不同的操作

在使用多态方法时,首先检查父类中是否有该方法,如果没有则编译出错,如果有,再去调用子类的同名方法

多态存在的三个必要条件:   

继承,

重写,

父类调佣指向子类对象   Parent p = new Child();

比如接口为打印机。黑色打印机需要调用打印机接口,打印出黑色内容

彩色打印机需要调用打印机接口,打印出彩色内容。

反射

什么是反射机制?

在运行状态中,对任意一个类,能知道这个类的所有属性和方法。

对于任意一个对象,能调用它的任意一个方法和属性。

这种动态获取信息的方法成为Java的反射机制

Java获取反射的三种方法

通过new对象实现反射机制

通过路径实现反射机制

通过类名实现反射机制

public class Student{
    private int id;
}

String

String 不可变但不代表引用不可以变

String 类是final类,不可以被继承

String和StringBuffer,StringBuilder的区别是什么?

String的对象是不可变,使用private final char value[] 修饰

StringBuilder和StringBuffer 对象是可变的,使用数组保存字符串

String中对象是不可变的,也可以理解为常量,线程安全

StringBuilder并没有对方法加同步锁,所有线程不安全

StringBuffer对方法加了同步锁或调用加了同步锁,因此线程安全

多线程操作字符串使用StringBuffer

单线程操作字符串使用StringBuilder

操作少量数据使用String

你可能感兴趣的:(java,java)