String类
1 == 和 equals 的区别
== | equals |
进行数值比较,比较的是两个字符串对象的内存地址数值 | 进行字符传内容比较 |
2 String类中两种对象实例化的区别
直接赋值 | 构造方法 |
只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用 | 会开辟两块堆内存空间,其中一块成为垃圾空间,不会自动保存在对象池中,可以使用intern()方法手工入池 |
3 String、StringBuffer、StringBuilder的区别
String | StringBuffer | StringBuilder |
内容不能修改 | 内容能修改 | |
| 采用同步处理,属于线程安全操作 | 采用异步处理,属于线程不安全操作 |
4 String类方法
字符数组->字符串 | 字符串->字符数组 | String->StringBuffer | StringBuffer->String |
charAt() | toCharArray() | StringBuffer的构造方法 | toString() |
String类构造方法 |
| append() |
|
字符串比较 | 字符串查找 | 字符串替换 | 字符串拆分 | 字符串截取 | 其他方法 |
equals()(区分大小写) | contains() | replaceAll() | split() | substring() | trim() (去掉字符串左右空格) |
equalsIgnoreCase()(不区分大小写) | indexOf()/lastIndexOf() | replaceFirst() |
|
| toUpperCase()/toLowerCase() (转大小写) |
compareTo() | startsWith()/endsWith() |
|
|
| intern() (入池) |
|
|
|
|
| concat() (连接字符串) |
|
|
|
|
| length() |
|
|
|
|
| isEmpty() (字符串判空) |
5 判断一个字符串是否由数字组成
public static boolean isNumber(String str){
char[] data = str.toCharArray();
for(int i=0; i<data.length; i++){
if(data[i] < '0' || data[i] > '9'){
return false;
}
}
return true;
}
public static void main(String[] args){
String str = "abc1234";
System.out.println(isNumber(Str) ? "字符串由数字组成" : "字符串中含非数字元素");
}
6 字符串首字母大写
public static String firstUpper(String str17){
if("".equals(str17) || str17 == null){
return str17;
}
if(str17.length()>1) {
return str17.substring(0, 1).toUpperCase() + str17.substring(1);
}
return str17.toUpperCase();
}
public static void main(String[] args){
System.out.println(firstUpper("shuxue"));
System.out.println(firstUpper(""));
System.out.println(firstUpper("a"));
}
Object类
Object类接收所有类的对象
1 Object类的方法
无参构造 | 取得对象信息 | 对象比较 |
Object() | toString() | equals() |
Java中所有数据类型只要遇见String并且执行+,所有对象默认使用toString()方法变成字符串
2 Object可接收所有引用数据类型,包括类、数组、接口
//接收数组
Object obj = new int[]{1,2,3};
int data = (int[])obj;
//接收接口
IMessage msg = new MessageImpl(); //向上转型
Object obj = msg; //打印出接口地址
包装类
包装类处理基本数据类型
1 分类
对象型包装类(Object的直接子类) | 数值型包装类(Number的直接子类)— 存在数值转换异常 |
Boolean(boolean)、Character(char) | Byte(byte)、Short(short)、Long(long)、Double(double)、Float(float)、Integer(int) |
2 手工装/拆箱
装箱 | 拆箱 |
基本数据类型->包装类对象 | 将包装类中包装的基本数据类型值取出 |
包装类提供的构造方法 | Number类提供的intValue()方法 |
3 字符串与基本类型互相转换
字符串->int | 字符串->double | 字符串->boolean | 基本数据类型->字符串 |
Integer.parseInt() | Double.parseDouble() | Boolean.parseBoolean() | String.valueOf() / ""+数据类型 |
4 定义int类型的包装类
class IntDemo {
private int num ;
public IntDemo(int num) {
this.num = num ;
}
public int intValue() {
return this.num ;
}
}
5 Integer var = ?在-127~128之间赋值,可以用==比较,除此之外用equals比较