1. String字符串

String s = "abcdefg";
String s1 = new String("abcdefg");
String s2 = new String("abcdefg");

String是一个类,s叫做String类的对象

s1是通过new创建出来的String类的对象,创建对象是要调用构造器的

s指向的"abcdefg"和s1指向的"abcdefg"不在同一区域内

System.out.println(s==s1);   //输出false
System.out.println(s1==s2);  //输出false

双等号比较的是虚地址

虚地址:对象在内存中的存储位置

1.1 总结

等号赋值,无论怎么比较都是true

new赋值,用双等号比较,都是false

1.2 equals方法
  1. 需要传参,传String类型的参数
  2. 返回值是boolean类型
  3. 访问权限public

作用:比较两个字符串的值

String s1 = "a";
String s2 = "a";
System.out.println(s3==s4);  //输出false  比较的是内存地址
System.out.println(s3.equals(s4)); //输出true  比较的是值
1.3 length方法
  1. 不需要传参
  2. 有返回值,整型int
  3. 访问权限public

作用:获取字符串长度

String s1 = "abcdefg";
System.out.println(s1.length()); //输出7
int[] arr =  new int[10];
System.out.println(arr.length);  //输出10

字符串获取长度的方法和数组获取长度的方法有什么区别
1、数组的length是属性,字符串的length()是方法

1.4 charAt方法

作用:取出指定下标位置的字符

String s = "abcdefg";
System.out.println(s.charAt(0)); //输出a
1.5 indexOf方法和lastIndexOf方法

indexOf方法作用:判断指定字符是否存在,存在时返回从左往右遇见的第一个匹配的字符串的下标,不存在时返回-1;

lastIndexOf方法作用:判断指定字符是否存在,存在时返回从右往左遇见的第一个匹配的字符串的下标,不存在时返回-1;

String s1 = "abcdefga";
//indexOf(String,int) 代表从int位置开始查找,包括当前位置
System.out.println(s1.indexOf("a",0));//输出0
//从后往前找
System.out.println(s1.lastIndexOf("a",7)); //输出7
1.6 substring方法

作用:从指定位置开始截取,截取后包括起始位置的字符;生成一个新的字符串,不会改变原有数据

String str = "abcdefghijklmn";
String str1 = str.substring(1);
System.out.println(str1); //输出bcdefghijklmn
1.7 replace方法

作用:替换字符

String str = "hello";
System.out.println(str.replace('e','c'))//输出hcllo
System.out.println(str.replaceAll("l","i"));//输出hciio
1.8 其他方法
//下面所有方法都是返回一个新的字符串
String s = "abcdefg";
//转大写
System.out.println(s.toUpperCase()); //输出ABCDEFG
String s1 = "ABCDEFG";
//转小写
 System.out.println(s1.toLowerCase());//输出abcdefg
//判断是否以xxxx开头  toffset偏移量
System.out.println(s.startsWith("a",2)); //输出false
//判断是否xxxx结尾
System.out.println(s.endsWith("F")); //输出false
//忽略大小写进行比较内容  
System.out.println(s.equalsIgnoreCase(s=s1));//输出true
//去掉字符串前后的空格
System.out.println(s.trim());//输出abcdefg
//根据指定的字符进行分割
String str2 = "a,b,c,d,e,f,g";
String[] Strings = str2.split(",");
System.out.println(Arrays.toString(Strings));
//输出[a, b, c, d, e, f, g]

2. 字符串和数组的转换

1.数组转字符串

int[] arr = new int[]{1,2,3,4,5};
System.out.println(Arrays.toString(arr));//输出[1, 2, 3, 4, 5]

2.字符串转成字符型的数组

String str = "abcdefg";
char[] array = str.toCharArray();
for (char c: array) {
    System.out.print(c); //输出abcdefg
}

3.字符串转成字节型数组

//一般情况下,字节型数组在操作文件的时候常用  IO流
byte[] bytes = str.getBytes();
        for (byte b:bytes) {
            System.out.println(b);
        }

4.把int类型转换成字符串

int i = 10;
String s = String.valueOf(i);

3. 包装器

1.包装器类型(包装类、封装类)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
2.可以使用的场景:

  1. 员工管理系统
  2. 员工:年龄、薪水
  3. 计算总工资、平均年龄

自动装箱:把int类型包装成了包装器Integer类型
基本数据类型转换成对应的包装器类型
自动拆箱:把Integer类型转换成int类型
包装器类型转换成对应的基本数据类型