1.对象在内存中的状态有几种?
有三种:
可达状态:如果一个对象在创建之后,有一个或者多个引用指向该对象,那么这个对象就是处于可达状态。
可恢复状态:程序中,如果一个对象没有任何引用指向它,那么该对象就处于可恢复状态,处于可恢复状态下的对象,垃圾回收在准备回收垃圾时,
调用finalize方法,在finalize方法中,系统有可能重新让一个或者多喝引用指向该对象,那么这个对象由可恢复状态变为可达状态。
不可恢复状态:垃圾回收器被触发调用fianlize方法时,处于内存中的可恢复状态的对象没有重新获取引用,那么该对象就处于不可恢复状态
2.java的面对对象特征有哪些?请简要说明.
封装:隐藏对象的属性和实现细节,只对外提供公共的访问方式
继承:从现有类的基础上派生出新的类,新的类拥有原有类的特征和行为,并且可以拓展,已有类成为父类,新的类称为子类.子类继承父类.
多态:同一种事物的不同展现形式.
3.String是最基本的数据类型吗?最基本的数据类型有哪些?
String不是最基本的数据类型,String是引用数据类型.
最基本的数据类型有: byte short int long float double char boolean
是否可以继承String类?
不可以被继承,因为String类是被final修饰,final修饰的类不可以被继承,实现细节不允许变化.
4.String和StringBuffer,StringBuilder的区别?
有两方面的区别:
执行速度:StringBuilder > StringBuffer > String
线程安全: StringBuffer是线程安全.StringBuiler是线程不安全,String因为字符串不可变,所以也是线程安全.
5.String str= new String(“abc”) 创建了几个对象?
创建了两个对象 String str 定义了一个对象,并没有创建. new String() 在堆中创建了一个,"abc"创建一个对象在常量池.
6.float = 3.4 是否正确?为什么?
不正确 . 精度不准确.在java中有小数点的默认值是doble类型.正确写法是: float f = 3.4f;或者 float f = (float)3.4.
7.数组有没有length方法,String 有没有length方法?
数组中没有length()方法.有length属性 . String中有length()方法
8.构造器是否可以被重写?
不可以被重写.因为构造器名和类名相同.每个类的类名不同,所以不能被重写,但是可以被重载.
9.两个对象值相同(x.equals(y )=true) ,但却有不同的hashcode,这句话对不对,为什么?
这句话不多. .equals先判断对象的hashcode,在判断对象的值. 所以有相同的hashcode.但是hashcode相同对象之不一定相等.
10.GC是什么?为什么有GC?
GC是垃圾收集器. 内存是有限的,当一个程序较大的时候,造成内存不足.GC可以自动回收无用的对象,可以避免内存泄漏和释放资源.
11.接口是否可以继承接口?抽象类是否可以实现接口,抽象类是否可以继承普通类?**
接口可以继承接口,抽象类可以实现接口,抽象类可以继承普通类.
一个java源文件是否包含多个类(不是内部类)?有什么限制?
可以有多个类.但是只能有一个public类,并且public的类名必须和文件名一致.
12.日期和时间
如何获取年月日,小时分秒?
方法一: 通过Calendar类获取 Calendar now = Calendar.getInstance(); now.getTime()
方法二: Date d = new Date();
如何取得从1970年1月1日0时0分0秒到现在的毫秒数?</font>
Calendar.getInstance().getTimeInMillis().
System.currentTimeMillis();
如何取得某月的最后一天?
public static int getLastDay(int yaer ,int mouth){
Calendar c = Calendar.getInstance();
设置年份
c.set(Calendar.YEAR,year);
设置月份:
c.set(Calendar.MOUTH_OF_YEAR,mouth);
int lastday = c.getActualMaxinum(Calendar.MOUTH_OF_YEAR);
SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd);
sdf.format(c.getTime());
13.比较一下java和javaSciprt
java是面对对象的设计语言,适用于web应用程序开发,JS是用于拓展浏览器的功能.
java是强语言类型,js是弱语言.
java运行之前需要编译,js不需要编译.
14.Error和Exception有什么区别?
Error:表示系统级别的错误和程序不必处理的异常.
Exception:表示需要捕捉或者程序处理的异常.
15.列一些你常见的运行时异常?**
nullPointerException 空指针异常
ArraryIndexOutOfBoundsException 数组下标越界
IndexOutOfBoundsException 索引越界
IOException 输入输出越界
CalssNotFoundException 指定类不存在
16.请说出线程同步以及线程调度相关的方法?
wait:是对象处于等待状态,并且释放所持有对象的锁.
sleep:使一个运行的线程处于休眠状态
notify:唤醒一个处于等待状态的线程
notifyAll:唤醒所有处于等待状态的线程.
17.编写多线程程序有几种实现方式?
继承Thread
实现runnable借口
18.什么是线程池?
我们只要将我们需要执行的任务交给线程池,线程池就会帮我们分配或者创建线程来执行,不用我们手动管理线程.
19.java中如何实现序列化,有什么意义?
让类实现Serializable接口
序列化是一种处理对象流机制,将对象的内容进行流化,用于读写和传输网络之间,解决在读写操作是出现的问题,
20.简述JDBC操作数据库的步骤?
1. 加载驱动
2. 获取连接
3. 获取预编译对象
4. 执行语句
5. 获取结果集
6. 关闭流获取连接
21.java中如何支持正则表达式操作的?
借助Pattern类表示正则表达式对象.
22.什么是UML?
统一建模语言
23.try{}里有一个retur语句,那么紧跟在这个try后的finally{}里面的代码会不会被执行?
会被执行
24.接口和抽象类的区别?
接口没有方法的实现 抽象类可以有默认的方法实现
子类使用extends关键字来继承抽象类 接口:子类使用implements实现接口
抽象类中有main方法可以运行 接口没有
25.静态变量和实例变量的区别?
静态变量需要用static定义,实例变量不需要
静态变量属于类所有,也称作类变量,可以直接调用. 实例变量需要实例化以后才能使用