面试题

  1. String s = new String("Hello");

如上语句创建了几个对象
答:两个

第一个:字面量String

第二个:new String
new String()时会再创建一个字符串对象,并引用hello字符

  1. String s = new String("hello");
  2. String s1 = "hello";
  3. System.out.println("s:" + s);
  4. System.out.println("s1:" + s1);
  5. System.out.println(s == s1);//比较的时地址是否相同
  6. System.out.println(s.equals(s1));//比较内容是否相同

API方法

trim()

  1. public class TrimDemo {
  2. public static void main(String[] args) {
  3. String s = " hello word ";
  4. System.out.println(s);//返回 hello word
  5. System.out.println(s.trim());//返回hello word
  6. }
  7. }

toUpperCase & ToLowerCase

  1. public class ToUpperCaseDemo {
  2. public static void main(String[] args) {
  3. String s = "我爱Java!";
  4. System.out.println(s.toUpperCase());//输出大写
  5. System.out.println(s.toLowerCase());//输出小写
  6. }
  7. }

startsWith & endsWith

  1. public class StartsWithDemo {
  2. public static void main(String[] args) {
  3. String s = "thinking in java";
  4. System.out.println(s.startsWith("think"));//判断是否时以think开头的
  5. System.out.println(s.endsWith("java"));//是否是以.png结尾的
  6. }
  7. }

CharAt

  1. public class CharAtDemo {
  2. public static void main(String[] args) {
  3. String s = "thinking in java";
  4. System.out.println(s.charAt(9));
  5. }
  6. }

IndexOf

  1. public class IndexOfDemo {
  2. public static void main(String[] args) {
  3. String str = "thinking in java";
  4. System.out.println(str.indexOf(str.charAt(9)));
  5. System.out.println(str.indexOf("in"));//默认寻找第一次字符出现的位置
  6. System.out.println(str.lastIndexOf("i"));//寻找最后一次出现字符的位置
  7. }
  8. }

StringBuilder类

由于String是不可变对象,每次修改内容都会创建新的对象,因此String不适合做频繁修改操作,为了解决这个问题,Java提供了StringBuilder类。
StringBuilder是专门用于修改字符串的一个API,内部维护一个可变的char 数组,所做修改都是在这个数组上进行的,修改速度、性能优秀并且提供了修改字符串常见的方法:增、删、改、插等

Stringbuilder的常用方法:

  1. append():追加内容
  2. replace():替换部分内容
  3. delete():删除部分内容
  4. insert():插入内容

补充:

  1. 获取数组长度是length属性,获取字符串长度是length()方法
  2. 字符内容若做查看,那建议String。———实际应用中一般都是查看

字符串内容需要频繁修改,,那建议StringBuilder。

包装类

  • Java定义了8个包装类,目的是为了解决基本类型不能直接参与面向对象开发的问题,使用基本类型可以通过包装类对象的形式存在
  • 包括Integer、Character、Byte、Short、Long、Float、Double、Boolean。
    • 其中Character
  1. Integer i1 = new Integer(5);
  2. Integer i2 = new Integer.valueOf(5);//这两种比较起来,建议写法

补码

  • 计算机中处理有符号数(正负数)的一种编码方式,Java中的补码最小类型是int,32位数
  • 以4位2进制为例讲解补码的编码规则:
    • 计算的时候如果超出4位数则高位自动溢出舍弃,保持4位数不变
    • 将4位2进制数分一半作为负数使用
    • 最高位称为符号位,高位为1是负数,高位为0是正数
  • 规律数———-最大值、最小值、-1
    • -1
      • 32个1
      • 负值:用-1减去0位置对应的权值
    • 互补对称现象
      • -n = n + 1 ——————-取反加一