2022-07-20 第六小组 张宁杰 String类和包装器
目录
1.String类
2.包装器
导图
知识点
知识点1
String类
String(字符串) 是一个类,String一旦声明就不会改变(指内存)
public static void main(String[] args) {
//String既然是一个类,s1应该叫做String类的对象
//类如果要创建对象,new,s1并没有new,s1也可以叫做对象
String s1 = "asdfd";
s1 = "asdsasdsa";
System.out.println(s1);
//s2是通过new创建出来的String类的对象
//创建对象是调用的构造器
//只要出现new 就代表新建
String s2 = new String("asdfd");
String s3 = new String("asdfd");
String s4 = "asdsasdsa";
/**
* s1指向的和s2指向的不在同一个区域
*
*/
//双等号比较的是虚地址(对象在内存中的存贮位置)
System.out.println(s1 == s2);
System.out.println(s2 == s3);
System.out.println(s1 == s4);
/**
* =赋值,无论怎么比较都是true
* new赋值,用双等号比较,都是false
*/
}
比较字符串的内容的方法:
equals方法:
1、需要传参(传String类型的参数)
2、有布尔类型的返回值
3、访问权限public
求字符串的长度:
length方法:
1、不需要传参
2、有返回值,整型int
3、访问权限public
面试题:
字符串获取长度的方法和数组获取长度的区别?
1、数组的length是属性,字符串的length是方法
取出指定下标位置的字符:
public static void main(String[] args) {
String s1 = "abcdefg";
System.out.println(s1.charAt(5));
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
System.out.println(c);
}
判断指定字符是否存在,返回值为字符串在s1的下标
public static void main(String[] args) {
String s1 = "asdfsdfasdasaasdfsa";
//判断指定字符是否存在,返回值为字符串在s1的下标
//返回从左到右遇到的第一个匹配的下标
//如果不存在,返回-1
//indexOf(String,int)代表从int位置开始查找,包括当前位置
System.out.println(s1.indexOf("a",0));
System.out.println(s1.lastIndexOf("a",12));
}
字符串的截取
public static void main(String[] args) {
String str = "abcdefghijk";
/*
如果传一个参数,从指定位置开始截取,直到字符串的末尾
包不包括1位置的字符?
包括起始位置字符,生成一个新的字符串,不会改变原来的数据
*/
String s = str.substring(1);
//包含起始位置但不包含终止位置
s = str.substring(1,2);
System.out.println(s);
}
判断字符串
public static void main(String[] args) {
String str = "abCDdefg";
String str1 =" sd sds ";
String str2 = "12123,2323,321";
System.out.println(str.toUpperCase());
System.out.println(str.toLowerCase());
//判断是否以...开头
System.out.println(str.startsWith("a", 2));
//判断是否以...结尾
System.out.println(str.endsWith("f"));
//忽略大小写比较内容,验证码
str.equalsIgnoreCase(str1);
//去掉字符串前后的空格,用在出除掉从网页端传来的数据
str1.trim();
//根据指定的字符分割,分割后,分割条件消失
String[] strings = str2.split(",");
//System.out.println(Arrays.toString(strings));
}
字符串的替换
public static void main(String[] args) {
String str = "hello";
str.replace("e","c");
str.replace("he","f");
}
字符串和其他数据类型的转换
public static void main(String[] args) {
//字符串和数组的转换
//数组转字符串
//int [] arr = new int[]{1,2,3,4,5,6};
//字符串和其他数据类型的转换
String str = "abcdef";
//转成字符型
char [] arr = str.toCharArray();
for (char c :arr) {
System.out.println(c);
}
//转成字节型数组
//一般情况下,字节型数组在操作文件的时候用IO流
byte[] bytes = str.getBytes();
for (byte b: bytes) {
System.out.println(b);
}
int i = 10;
//把int类型转成字符串
String s = String.valueOf(i);
//任何数据类型和字符串类型做加法,结果都是字符串
String s = i +"";//null和空串不一样
System.out.println(s);
}
知识点2
包装器类型(包装类,封装类)
包装器类型(包装类,封装类)
- byte----->Byte
- short----->Short
- int----->Integer
- long----->Long
- float----->Float
- double----->Double
- char----->Character
- boolean----->Boolean
为什么要有包装器类型?
场景:
员工管理系统
员工:年龄 薪水
计算平均工资,平均年龄
如果在以上的场景中,年龄和薪水等属性被初始化为0,那么对结果的影响会非常大
原理:
自动装箱:把int类型包装成了包装器Integer类型
基本数据类型转换成对应的包装器类型
自动拆箱:把Integer类型转换成了int类型
包装器类型转换成对应的基本数据类型
int i = 10;
Integer i1 = 20;
//Integer i2 = new Integer(30);
Integer i2 = Integer.valueOf(50);
int ii = i2;
int ii2 = i2.intValue();
学习感受
今天的学习难度不大,能跟上老师的节奏,但是对员工管理系统还不够熟悉,这归根结底还是对封装类和方法的思路不够清晰,需要在这点加强练习。