Java程序员面试宝典3

1. 字符串

  • “==”判断符号左右两个变量是否指向同一内存地址,equals判断两个object是否一样,(所有成员的值相同)
  • 对于String a =”abc”; String b = “abc”; abc放在常量池中,a,b在内存中只有一份副本,所有a==b; 若是 String c = new (“abc”); String d = new (“abc”); 那么 c==b为false,因为创建了两个对象。
  • 常量池:在程序执行时,常量池会存储在Method Area中,而不是堆中,另外,对于””空字符串常量,会创建一个长度为0,内容为空的字符串放在Constant Pool中,而且常量池在运行期是可以动态扩展。
  • String使用private final char value[]来实现字符串的存储,String对象创建之后,不能修改此对象中存储的字符串内容。“”会在编译时期创建一个String对象,new在运行期创建,所以 String new(“123”);相当于创建了两个String对象。运行期间调用String类的intern方法可以向String Pool中动态添加对象。
    String a = new String(“123”);
    a = a.intern();
    String b = “123”;
    System.out.println(a==b); //为true,

记住,常量池中的变量在编译时候初始化,new对象在运行期创建。

  • 字符串和字符数组变化:
    Char ch[] = str.toCharArray();
    String s2 = new String(c); .//char数组直接作为参数传递给string构造函数

  • String不能改变,StringBuffer可以; StringBuffer.append()在编译器就能确定字符串值的情况下,使用String +效率比append高。

    • String s = “a”+”b” ;String s =”a”; s+=”b”;后者开辟了两个内存段,避免使用+=来构造字符串;
    • StringBuffer的capacity默认为16,内部实现时char数组,每当字符串长度大于char数组长度时,JVM会构造更大的新数组,将原先的数组内容复制到新数组。在声明时,最好指定合适的capacity.
      引用变量 = new 对象
  • 正则表达式:
    String a = s.replaceAll(“[^0-9]”,””); //取所有数字出来。
    String []result = str.split(“\D”);按数字分割

2.数组

  • 数组声明时候不能指定行数和列数,在创建数组对象的时候才能指定,char a[][] = new Char[3][4]; 或者Int a[][] ={{1,2,3},{2,3,4}};
    二维数组的列数可以不同;例如:
    Int a[][] new int[2][];
    a[0] = new int[3];
    a[1] = new int [4];
  • BigInteger
    属于java.math.BigInteger,每次调用时需要import这个类,构造方法:
    BigInteger(String val); BigInteger(String val,int radix); 指定基数;
    提供了一些add(),devide()等模拟int型数学操作。

  • java.util.Queue接口用来支持队列的常见操作,使用offer()加入元素,poll()获取并移除元素,可以通过返回值来判断是否成功。使用或者方法来去队列首元素而不删除,,加入元素也可以使用Collection.add()方法,但是这个方法检索并移除队列的头,如果队列为空,返回null,

    • 加入元素:
      offer()
      Collection.add(),在容器的容量限制时,只能抛出异常表示插入失败;
    • 取队列头,不删除:
      peek()
      element() 如果队列为空,element会抛出一个异常
    • 取队列头,并删除:
      poll()
      remove(),如果队列为空,抛出异常。

LinkedList类实现了Queue接口,可以当成Queue来使用。

3.泛型

  • 泛型:本质上是类型参数化,也就是说,所操作的数据类型被指定为一个参数,有泛型类,泛型接口、泛型方法。
  • 对泛型结构进行遍历时,其Iterator也需要采用泛型参数。
  • Java将对象放入集合中,集合不会记住此对象的类型,当再次从集合中取出此对象时,该对象的编译类型变成了Object类型,运行时会发生ClassCastException,将类型作为参数一起传递,告诉编译器记住这个对象的类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值