java android面试题分析总结
本文参考多处,一并感谢!
http://www.blogjava.net/fanyingjie/archive/2007/06/27/126467.aspx
http://baike.baidu.com/view/1788559.htm
http://honda418.iteye.com/blog/315893
http://jeff-tang.blog.163.com/blog/static/141686909201022010522906/
1.short转换相关的
其一,
package com.jue.test; public class TestMain {
public static void main(String args[]){
short s1 = 1;
s1 = s1 + 1;
} }
编译结果
DescriptionResourcePathLocationType
Type mismatch: cannot convert from int to short TestMain.java/TestShort/src/com/jue/testline 6Java Problem
分析:
s1+1会自动转换成int类型,导致s1= s1+1;损失精度。
其二,
package com.jue.test; public class TestMain {
public static void main(String args[]){
short s2 = 2;
s2 += 2;
}
}
编译结果:成功
分析:
反编译之后
package com.jue.test; public class TestMain
{
public static void main(String[] args)
{
short s2 = 2;
s2 = (short)(s2 + 2);
}
}
故猜测:这可能是java编译器的语法糖。
2.RuntimeException与普通异常,error的区别。
Checked Exception:在编译时就能够被Java编译器所检测到的。
UncheckedException:则是编译时,java编译器不能检查到。
RuntimeException | 普通Exception | Error | |
受控异常 | 否 | 是 | 否 |
产生原因 | 开发者的编程错误 | 由于外界环境所限, 本身潜在的一些问题 |
Java运行时的系统错误,资源耗尽,是一种严重的, 程序无法修复的问题 |
例子 | NullPointerException ArrayOutOfIndexException ClassCastException ArithmeticException UnsupportedOperationException |
ClassNotFoundException IOException FileNotFoundException |
VirtualMachineError StackOverflowError OutOfMemoryError |
3.finally的一个面试题
package com.jue.test; import java.util.ArrayList;
import java.util.List; public class TestMain { public static void main(String[] args) {
test();
} private static void test() {
List list = new ArrayList();
try {
System.out.println("return!!");
return;
} catch (Exception e) {
System.out.println("catch Exception !!");
} finally {
System.out.println("finally!!");
}
} }
结果:
return!!
finally!!
分析:即便在try中return;finally总会被执行的意义不变,仍然会执行。
4.final,finalize,finally的区别
final:关键字,表不变
修饰:
- 方法:方法不可Override
- 类:不可被继承
- 基本类型量:常量,值不可变
- 符合类型量:引用不可变,即引用的值不可变
final Object o1 = new Object();
o1 = new Object();
finally:关键字,Java异常处理机制的一部分,在异常发生时,用来提供一个必要的清理的机会。
finalize:Object类的方法(参考自百度百科)
意义:Java技术允许使用finalize()方法在垃圾回收器将对象回收之前,做一些必要的清理操作。
调用前提:这个对象确定没有被引用到。
工作原理:
- 垃圾收集器准备好释放对象占用的空间。
- 首先调用其finalize方法。
- 下一次垃圾收集过程中,真正回收内存。
不确定性:
- finalize的执行时间是不缺定的。
- 一个对象引用另一个对象,并不能保证finalize的方法按照特定的执行顺序。
5.Override,Overload
Override Overload 签名+返回值 相同 方法名相同,签名不同 关系 父子类继承关系 通常是同一类层次中 识别 运行时多态
根据具体的对象,
查询对象的虚方法表,确定调用关系编译时多态
由对象的外观类型(即声明类型)决定修饰符限制 非private
非static
非final无特别 异常关系 子类方法不能抛出被父类方法更多的异常 无特别 可见性关系 子类不能比父类访问权限更窄
(里氏替换原则决定)无特别
6.Collection Collections
Collection:接口,集合类的接口,一个契约,提供了集合基本的大小,添加,清除,遍历方法等。
Collections:工具类,提供了很多静态方法,给集合提供一些查询,比较,排序,交换,线程安全化等方法。
7.Integer 缓存
package com.jue.test; public class TestMain { public static void main(String[] args) {
Integer i1 = 1;
Integer i11 = 1;
System.out.println(i1 == i11); Integer i2 = 200;
Integer i22 = 200;
System.out.println(i2 == i22); } }结果 :
true
false
分析:反编译结果为
package com.jue.test; import java.io.PrintStream; public class TestMain
{
public static void main(String[] args)
{
Integer i1 = Integer.valueOf(1);
Integer i11 = Integer.valueOf(1);
System.out.println(i1 == i11); Integer i2 = Integer.valueOf(200);
Integer i22 = Integer.valueOf(200);
System.out.println(i2 == i22);
}
}
可以看出,对于Integer i = 1;编译器做了额外的处理,即Integer.valueof();
Integer source code
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
可以看出Integer对于一定 范围内的数字从Cache中取得,对于额外的,调用new创建。
IntegerCache源码如下:
private static class IntegerCache {
static final int low = -128;
static final int high;
static final Integer cache[];
static {
// high value may be configured by property
int h = 127;
String integerCacheHighPropValue = sun.misc.VM
.getSavedProperty("java.lang.Integer.IntegerCache.high");
if (integerCacheHighPropValue != null) {
int i = parseInt(integerCacheHighPropValue);
i = Math.max(i, 127);
// Maximum array size is Integer.MAX_VALUE
h = Math.min(i, Integer.MAX_VALUE - (-low));
}
high = h;
cache = new Integer[(high - low) + 1];
int j = low;
for (int k = 0; k < cache.length; k++)
cache[k] = new Integer(j++);
} private IntegerCache() {
}
}故可以知道Integer的大小,默认是从-128到127,对于这个范围内的数组做了缓存的处理。
8.sleep方法和wait方法的区别
wait sleep 所属类 Object Thread 意义 让线程挂起 让线程休眠指定的时间 释放锁 是 否(这个跟锁本来就没有关系) 恢复 1.有参:wait指定时间
2.无参:等待其他线程notify1.根据参数长度自动恢复。
2.异常打断使用限制 wait,notify必须持有当前对象锁的情况下调用 无特别 抛出异常 否 是 静态方法 否 是
java android面试题分析总结的更多相关文章
- 50道Java线程面试题分析及答案
下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程 ...
- 【Todo】Java类面试题分析
Java 面试中的重要话题 多线程,并发及线程基础数据类型转换的基本原则垃圾回收(GC)Java 集合框架数组字符串GOF 设计模式SOLID (单一功能.开闭原则.里氏替换.接口隔离以及依赖反转)设 ...
- Java/Android引用类型及其使用分析
Java/Android中有四种引用类型,分别是: Strong reference - 强引用Soft Reference - 软引用Weak Reference - ...
- Java 面试/笔试题神整理 [Java web and android]
Java 面试/笔试题神整理 一.Java web 相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并 ...
- 使用java理解程序逻辑 试题分析
1.编译Java Applet源程序文件产生的字节码文件的扩展名为() A:.java B..class C:Html D:Exe 正确答案:B 试题分析: 本题考查的是Java程序的开发过程.J ...
- Android源码分析(七)-----如何解决java编译版本问题
一 : 问题描述 Your version is: java version "1.6.0_31" Java(TM) SE Runtime Environment (build 1 ...
- 性能优化之Java(Android)代码优化
最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇——Java(Android)代码优化.主要介绍Java代码中性能优化方式及网络优化, ...
- Android 面试题总结
Android 面试题总结(不断更新) 1.INETNT几种有关Activit的启动方式FLAG_ACTIVITY_BROUGHT_TO_FRONT 将ACTIVITY带到最前面FLAG_ACTIVI ...
- Android面试题整理【转载】
面试宝典(5) http://www.apkbus.com/android-115989-1-1.html 面试的几个回答技巧 http://blog.sina.com.cn/s/blog_ad ...
随机推荐
- SQL查询重复记录、删除重复记录方法
查找所有重复标题的记录:SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1 ...
- c++,operator=
operator=为什么值得注意? 从语法上讲,下面的程序可以编译通过,我在另一篇笔记示例里面也这样用了. class A1 { public: int operator=(int a)//参数是in ...
- Xcode的Hello World(简单易懂)
http://www.cocoachina.com/industry/20131121/7392.html http://objccn.io/issue-6-3/
- 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版
原文 [译]在Asp.Net中操作PDF - iTextSharp - 利用列进行排版 在使用iTextSharp通过ASP.Net生成PDF的系列文章中,前面的文章已经讲述了iTextSharp所涵 ...
- 只启动一个zookeeper配置 server1只需要配置一个
[root@wx03 conf]# cat zoo.cfg # The number of milliseconds of each tick tickTime=2000 # The number o ...
- Android事件模型之interceptTouchEvnet ,onTouchEvent关系正解
首先,看Android的官方文档正解 onInterceptTouchEvent()与onTouchEvent()的机制: 1. down事件首先会传递到onInterceptTouchEvent() ...
- ASP.NET利用byte检测上传图片安全
) { //这里只测试上传第一张图片file[0] HttpPostedFile file0 = Request.Files[]; //转换成byte,读取图片MIME类型 Stream stream ...
- Properties文件及与之相关的System.getProperties操作(转)
如何使用Java读写系统属性? 读: 简述properties文件的结构和基本用法结构:扩展名为properties的文件,内容为key.value的映射,例如"a=2" 示例用到 ...
- JS实现图片翻书效果
picture.html <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http- ...
- 在Ubuntu下编译Assimp库
在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...