今天的面试真算开眼界了 !有点奇葩,也有点收货!
一问:java中,main函数可以重载么?
答:重载:在类中,可以对一同名而含有不同参数个数和参数类型的方法 是可以定义的!(自己的理解)也就是说,在一个类里(范围,这点很重要),同名方法可以有不同的声明方式,包括参数类型不同和参数个数不同!同时,方法的返回类型可以不同!(这点要记住)言归正传,java中,main函数可以重载,但是,main函数是java application 程序的一个入口,其格式已被虚拟机固定化!就是说,改变了main函数的格局(即重载),虚拟机是识别不出来的,也就没有可能执行main方法的代码!
拓展:关于main方法!重写可以么?其参数 String[] agrs是什么意思? String args[] 和String [] args有区别么?
期待有识之士解惑答疑哦!不一一阐述了!
二问:java中,什么是序列化,为什么要序列化,何时序列化?
答:1,简单的说(自己的理解),序列化就是将java对象做持久化的一种操作!这样做的特点是将对象的内容长久保存。2,因为java程序是在java虚拟机中运行的,而java调用的对象也是如初。当java程序员需要一个跨空间(即不同电脑)来获得该对象时就需要用到序列化了!将对象序列化成流,方便传输,同时通过反序列化,获得对象内容。
3, 进行对象序列化与反序列化的两个流 ObjectInputStream : 用于反序列化对象的流 ObjectOutputStream : 用于序列化对象的流
//部分代码省略,实例如下!
public class TestPerson {
public static void main(String[] args)throws Exception {
Person p = new Person();
p.setAge(25);
p.setName("yzhsh");
p.setSex(1);
ArrayList<String> infos
= new ArrayList<String>();
infos.add("一些其他信息");
infos.add("另外一些其他信息");
p.setOtherInfo(infos);
/*
* 将Person实例p序列化后写入文件
*/
FileOutputStream fos
= new FileOutputStream("person.obj");
/*
* ObjectOutputStream(OutputStream out)
* 那么OOS就会将给定的对象序列化(将对象转化为对应的
* 字节)后,通过给定的字节输出流写出
* 这里我们传入文件字节输出流,这样就将对象转换为
* 字节后写入文件了
*/
ObjectOutputStream oos
= new ObjectOutputStream(fos);
/*
* writeObject(Object o)
* 将给定的对象转换为字节后写出
*/
oos.writeObject(p);
oos.close();
/*
* 将对象从文件中读取回来
*
*/
FileInputStream fis
= new FileInputStream("person.obj");
/*
* ObjectInputStream(InputStream in)
* 从给定的流中读取字节,并进行反序列话对象
*/
ObjectInputStream ois
= new ObjectInputStream(fis);
/*
* Object readObject()
* 用于反序列化对象的方法
*/
Person p1 = (Person)ois.readObject();
System.out.println(p1.getName());
System.out.println(p1.getAge());
System.out.println(p1.getSex());
System.out.println(p1.getOtherInfo());
/*
* 反序列化回来的对象与原对象内容相同,
* 但不是同一个对象
*/
System.out.println(p.equals(p1));//true
System.out.println(p == p1);//false
ois.close();
}
}
三问:在双层嵌套for循环里,然后跳出循环?跳出当前循环的方式有哪些?(答完接着问)break在哪些地方用到?
答:这是break的另一种用法,即标签+break;就是用不同的标签可以控制多重循环时,跳出的点。网上可以收到,自己用的少,一下子卡住了没打出来(其实就是不知道,呵呵)。第二问,是很容易的。跳出当前循环的方式有 break,return。
第三问,break的用法就答出两个,循环和switch.....case语句,其实想来很简单,break无非就是终止java语句的,顺序语句,条件语句,循环语句,java就这三个,break使用于其中两个!