面试题
String s = new String("Hello");
如上语句创建了几个对象
答:两个
第一个:字面量String
第二个:new String
new String()时会再创建一个字符串对象,并引用hello字符
String s = new String("hello");
String s1 = "hello";
System.out.println("s:" + s);
System.out.println("s1:" + s1);
System.out.println(s == s1);//比较的时地址是否相同
System.out.println(s.equals(s1));//比较内容是否相同
API方法
trim()
public class TrimDemo {
public static void main(String[] args) {
String s = " hello word ";
System.out.println(s);//返回 hello word
System.out.println(s.trim());//返回hello word
}
}
toUpperCase & ToLowerCase
public class ToUpperCaseDemo {
public static void main(String[] args) {
String s = "我爱Java!";
System.out.println(s.toUpperCase());//输出大写
System.out.println(s.toLowerCase());//输出小写
}
}
startsWith & endsWith
public class StartsWithDemo {
public static void main(String[] args) {
String s = "thinking in java";
System.out.println(s.startsWith("think"));//判断是否时以think开头的
System.out.println(s.endsWith("java"));//是否是以.png结尾的
}
}
CharAt
public class CharAtDemo {
public static void main(String[] args) {
String s = "thinking in java";
System.out.println(s.charAt(9));
}
}
IndexOf
public class IndexOfDemo {
public static void main(String[] args) {
String str = "thinking in java";
System.out.println(str.indexOf(str.charAt(9)));
System.out.println(str.indexOf("in"));//默认寻找第一次字符出现的位置
System.out.println(str.lastIndexOf("i"));//寻找最后一次出现字符的位置
}
}
StringBuilder类
由于String是不可变对象,每次修改内容都会创建新的对象,因此String不适合做频繁修改操作,为了解决这个问题,Java提供了StringBuilder类。
StringBuilder是专门用于修改字符串的一个API,内部维护一个可变的char 数组,所做修改都是在这个数组上进行的,修改速度、性能优秀并且提供了修改字符串常见的方法:增、删、改、插等
Stringbuilder的常用方法:
- append():追加内容
- replace():替换部分内容
- delete():删除部分内容
- insert():插入内容
补充:
- 获取数组长度是length属性,获取字符串长度是length()方法
- 字符内容若做查看,那建议String。———实际应用中一般都是查看
字符串内容需要频繁修改,,那建议StringBuilder。
包装类
- Java定义了8个包装类,目的是为了解决基本类型不能直接参与面向对象开发的问题,使用基本类型可以通过包装类对象的形式存在
- 包括Integer、Character、Byte、Short、Long、Float、Double、Boolean。
- 其中Character
Integer i1 = new Integer(5);
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 ——————-取反加一
- -1