android面试 java_Android面试大全(java篇)

switch支持什么类型

jdk1.6以及之前版本是byte、char、short、int、枚举 五种

jdk1.7时,又增加了String,所以相对于JDK1.7而言就是六种

String StringBuffer StringBuilder说明及区别

字符串是否可改变

String:String中的字符串是固定的,即常量

StringBuffer StringBuilde都可改变字符串的长度等,通过.append()方法进行字符串的拼接

线程安全方面:

StringBuilder:线程非安全的

StringBuffer:线程安全的

执行速度比较

StringBuilder>StringBuffer>String(少量数据其实区别不大)

使用经验:

1.操作少量的数据用 :String

2.单线程操作字符串缓冲区 下操作大量数据 :StringBuilder

3.多线程操作字符串缓冲区 下操作大量数据 :StringBuffer(线程安全)

Java集合继承子类继承关系

Collection

List

LinkedList

ArrayList

Vector

Stack

Map

HashTable

HashMap

WeakHashMap

进程与线程区别

一个程序至少有一个进程,一个进程至少有一个线程

线程是比进程更小的划分单位,多线程程序的并发性高

进程在执行的过程中拥有独立的内存单元,而线程是多个线程共享内存单元,从而提高程序运行效率

两者执行过程有所区别。每个独立的线程有一个程序运行的入口、顺序执行序列以及程序的出口,但是线程是不能独立运行的,必须依附在应用程序中,有应用程序提供多个线程执行控制。

线程是进程的一个实体,是CPU调度和分派的基本单元,是比进程更小的能独立运行的基本单位,线程自己不用有系统资源,只拥有在运行中必不可少的资源,它可与同属一个进程的其他线程共享进程所拥有的 全部资源

一个线程可以创建和撤销另一个线程;统一进程中线程可以多个并发进行

final finally finalize都是干什么用的?有什么区别

final

final 是java中的关键字。如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

final变量的初始化:

①:在定义的时候初始化。

②:可以在初始化块中初始化,不可以在静态初始化块中初始化。

③:静态final变量可以在静态初始化块中初始化,不可以在初始化块中初始化。

④:还可以在类的构造器中初始化,但是静态final变量不可以。

finally

java中异常处理时,提供 finally 块来执行操作。在开发者使用finally的情况下,如果程序抛出一个异常,那么相匹配的 catch 模块会执行,然后程序就会进入 finally 块中,如果程序正常执行(未发生异常),在执行完程序后(try{}部分)同样会进入finally中,即无论程序是否异常,finally始终都会进入(开发者可以在此模块中做相应的操作,do everything what you want......)。有一种特殊情况可能不会进入,当程序还没执行完毕,强制结束程序进程。(这个是整个程序被终止了,和本身程序的执行顺序并没有什么关系)

finalize

方法名,java允许使用 finalize() 方法在垃圾收集器中将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

java的四种引用?

强引用、弱引用、软引用、虚引用

内部类、静态内部类、匿名内部类、局部内部类

==与equals的区别

Java反射机制

Java注解相关

Java泛型

Java枚举

Java操作文件的基本API,RdomAccessFile

访问网络的基本API. Socket

Java异常有几种?什么是运行时异常,有什么特点?

接口与抽象类的区别

什么导致线程阻塞

ArrayMap对比HashMap

HashMap的实现原理

Java排序算法

接口的意义

规范、扩展、回调

抽象类的意义

为其子类提供一个公共的类型,封装子类中重复的内容,定义抽象方法。子类可有又不同的实现方法,但是定义是一致的

内部类的作用

内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立

在单个外围类中,可以让多个内部类以不同的方式实现同一个接口或者继承同一个类

创建内部类对象的时刻并不依赖于外围内对象的创建

内部类没有“is-a”关系,是一个独立的实体

内部类提供了更好的封装,除了该外围类,其他类都不能访问

父类的静态方法能否被子类重写

不能

子类继承父类后,用相同的静态方法和非静态方法,这是非静态方法会覆盖父类中的非静态方法(即方法的重写),父类的该静态方法被隐藏(若对象是父类则调用该隐藏的方法),子类可继承父类的静态与非静态方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值