JAVA细节

1.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。

对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,处理成 s1 = (short) (s1 +1);

补充:byte,short,char都可以隐含转换为int

2.用最有效率的方法算出2乘以8等於几?

2 << 3,

因为将一个数左移n位,就相当于乘以了2的n次方

3.实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

4.round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

5.

作用域    当前类 同一package 子孙类 其他package

public    √     √          √       √

protected  √     √          √      ×

friendly   √     √          ×      ×

private    √     ×          ×      × 

6.接口 抽象类区别

一、区别

interface:特殊的抽象类,只有方法没有具体实现  方法只能是public或者不写默认为public ;

变量全为final——不可修改。

abstract class:非抽象方法可以有具体实现,abstract抽象方法没有变量和方法实现。

如果一个抽象类所有的方法都是抽象的就可以将此类用接口来定义。

二、优点

interface:主要针对于功能、动作。体现了开闭原则:对修改关闭,对扩展开放;

abstract class:将拥有共同属性 特征的类继承此类,父类中添加新方法时子类将全部拥有而不用逐一去新增。

当子类拥有父类中的特性是便可以去extends,体现了代码的复用性。继承——灵活性;实现——严谨性;

7.StringBuffer与StringBuilder的区别

-因为StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在防范里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么最好用StringBuffer。

8.ArrayList如何实现插入的数据按自定义的方式有序存放,重写comparable方法,按照自己要求的排序

9. 分层的好处:实现了软件之间的解耦;便于进行分工;便于维护;提高软件组件的重用;便于替换某种产品,比如持久层用的是hibernate,需要更换产品用toplink,就不用该其他业务代码,直接把配置一改;便于产品功能的扩展;便于适用用户需求的不断变化

10.序列化把对象的状态数据用某种格式写入到硬盘

11.clone()方法时,通常都有一行代码,是什么?

clone 有缺省行为,super.clone();因为首先要把父类中的成员复制到位,然后才是复制自己的成员

12、同步和异步有何异同,在什么情况下分别使用他们?举例说明。

如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

lock手动释放锁,sychronized自动释放

13.单例

第一种:饱汉模式

public class SingleTon {

private SingleTon(){

}

//实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间

private final static SingleTon instance = new SingleTon();

public static SingleTon getInstance(){

return instance;

}

}

种:用枚举

public enum SingleTon{

ONE;

}


  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值