java回归基础复习干货总结八

基础八

  1. 抽象类和接口都不能被实例化

  2. jdk1.8后swich支持的类型:
    基本类型有:byte , short , int , char
    包装类型有:Byte , Short ,Integer , Character , String ,enum
    
  3. 对象空间在回收之前执行该对象的finalize方法,而不是在回收之后

  4. int和Integer有什么区别?
    java提供两种不同的类型:引用类型和原始类型。
    int是java的原始数据类型,Integer是java为int提供的封装类。
    
  5. 编写一个程序:用最有效的方法算出2乘以8的结果
    办法是位运算:2<<3
    左移符号,此处可以理解为2乘以2的三次方(2^3)
    0010左移三位得到0010000,换算为10进制为1
    
  6. 数组有没有length()这个方法?String有没有length()这个方法?

数组没有length()这个方法,但是有length的属性,即可以对应数组得到.length的值。
String有length()这个方法
  1. 是否可以继承String类?

    String类是final类,故不可以继承
    
  2. String和StringBuffer的区别?

    Java平台提供了两个类:String和StringBuffer,它们可以存储和操作字符串。
    String类提供的是数值不可改变的字符串。而这个StringBuffer类提供的字符串可以进行修改。
    
  3. String,StringBuffer,StringBuilder的区别?

    String的长度是不可变的,StringBuffer的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容需要修改时,就使用StringBuffer,之后需要使用String时,可以使用StringBuffer的toString()方法;线程安全
    StringBuilder是从JDK5开始,为了StringBuffer该类补充了一个单线线程使用的等价类,通常应该优先使用StringBuilder类,
    
  4. java中会出现内存泄露吗?简单描述一下

    会,存在无用但可以使用的对象,这些对象不能被GC回收,导致耗费内存资源
    
  5. 描述一下什么是GC?为什么要有GC?

    GC是垃圾收集,(Gabage Collection),内存处理是容易出现问题的地方,GC可以自动检测对象是否超过该对象的作用域从而达到自动回收的目的。
    垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。
    
  6. 数据类型之间的转化?

    1.如何将数值型字符转换为数字?
    调用数值类型相应包装中的方法parse**()方法,例如parseInt()就是把String类型转化为Int类型,String a= "123";int b = Integer.pareseInt(a);之后输出的结果就是123了。
    
    如何将数字转换为字符?
    将数字与空字符串相加即可获得其所对应的字符串;另外对于基本类型数字还可以调用String类中的ValueOf(···)方法返回相应的字符串,对于其包装类型数字则可以调用其toString()方法获得相应的字符串。
    
    如何取小数点前两位并四舍五入?
    使用round()方法可以保留小数点后两位。
    
  7. Java中的异常处理机制的简单原理和应用?

    当Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。违反语义规则的两种情况,一种是Java类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发Null PointerException。另一种情况就是Java允许程序员扩展这种语义检查,可以由编写人员自定义异常。(所有的异常都是Java.lan.throwable
    
  8. error和exception的区别?

    error表示系统级错误和程序不必处理的异常。内存溢出,不可能指望程序能处理这样的情况,
    exception表示需要捕获或者需要程序进行处理的异常,也就是说,它表示如果程序运行正常,从不会发生的情况。
    
  9. List、Set、Map是否继承自Collection接口?

    List,Set 是, Map 不是
    
  10. 集合类哪些?主要办法?

    最常用的集合类List和Map,List的具体实现还包括了ArrayList和Vector。都是可变大小的列表,比较适合构建,存储和操作任何类型对象的元素列表。List适用于按数值索引访问元素的情形。map提供了一个更通用的元素存储方法。Map集合类用与存储元素对(称作“键”和“值”)
    
  11. 说出ArrayList,Vetor,LinkedList的存储性能和特性?

    ArrayList和Vector都是使用数组方式存储数据,此数组元素大于实际存储的数据以便增加和插入数据慢,Vector由于使用了synchronized方法,所以性能比ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
    
  12. Collection和Collections的区别?

    Collection是java.util下的接口,它是各种集合的父接口,继承于它的接口主要是Set和List;Collections是个java.util下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
    
  13. List、Map、Set三个接口,存取元素时,各有什么特点?

    List以特定次序来持有元素,可有重复元素。Set无法拥有重复的,用equals()方法来区别重复与否。覆盖equals()方法用来判断对象的内容相同,而“==”判断地址是否相等,用来决定引用值是否指向同一个对象。
    
  14. sleep()和wait()有什么区别?

    sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间。给执行机会给其他的线程,但是监控状态依然保持,到时候会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法。此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法后本线程才进入对象锁定池准备获得对象锁进入运行状态。
    
  15. 简述一下工厂模式?

    工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某个类的实例。
    开发人员可以调用基类中的方法而不必考虑到底返回的是哪个子类的实例。
    
  16. Java跨平台是如何实现的?

    Java是利用JVM实现跨平台的
    Java源程序(*.java)经过Java编译器编译成Java字节码(*.class),执行Java字节码。Java字节码经过JVM解释为具体平台的具体指令,并执行。
    不同平台有不同的JVM,主流平台都提供了JVM,所以Java字节码可以在主流平台上解释执行,在此意义上Java是跨平台的,所以Java的字节码是跨平台的。
    
  17. 类、方法、变量、包、常量的命名要符合哪些规范?

    1)类的命名规范;首字母需要大写,如果由多个单词合成一个类名,要求每个单词的首字母也要大写,比如:HelloWorld
    2)方法命名规范:首字母小写,中间的每个单词的首字母都要小写,例如:getName
    3)变量的命名规范:变量的命名规范和方法一样,首字母小写,中间的每个单词的首字母都要大写,例如:name
    4)包的命名规范:Java包的名字都是由小写单词组成。
    5)常量的命名规范:基本数据类型的常量名为全大写,如果是由多个单词构成,可以用下划线隔开,例如:WEEK_OF_MONTH
    
  18. 描述一下static关键字的作用?

    所有的人都知道static关键字这两个基本的用法,静态变量和静态方法,也就是被static所修饰的变量/方法都属于类的静态资源,类实例所共享。
    除了静态变量和静态方法之外,static也用于静态块,多用于初始化操作。
    此外static也多用于修饰内部类,此时称之为静态内部类,最后一种用法就是静态导包,即import static.import static 是在JDK1.5之后引入的新特性,可以用来指定导入某个类中的静态资源,并且不需要使用类名,可以直接使用资源名,
    
  19. a=a+b与a+=b有什么区别?

    +=操作符会进行隐式自动类型转换,此处a+=b隐式的将加操作的结果类型强制转换为持有结果的类型,而a=a+b则不会自动进行类型转换。
    byte a = 127;
    byte b = 127;
    b = a + b;//这句会报编译错误,cannot convert from int to byte
    b += a;
    
    
    
  20. SOF(堆栈溢出StackOverFlow)

    StackOverFlowError的定义:当应用程序递归太深而发生堆栈溢出时,抛出该错误,一般栈认为1-2m,一旦出现死循环或者是大量的递归调用,在不断的压栈过程中,造成栈容量超过1m而导致溢出。
    栈溢出的原因:递归调用,大量循环或者死循环,全局变量是否过多,数组,list,map数据过大。
    
  21. 简述线程,程序,进程的基本概念。以及他们之间的关系是什么?

    线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。
    程序是含有指令和数据的文件,被存储在磁盘或其它的数据存储设备中,也就是说程序是静态的代码
    进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值