String字符串
String一旦声明不可以改变
String既然是一个类,S1应该叫做String类的对象
类如果要创建对象,new,s1并没有new,s1也可以叫做对象
String s1 = "abcdefg";
s2是通过new创建出来的String类的对象 创建对象是要调用构造器String s2 = new String("abcdefg");
s1指向的abcdefg和s2指向的abcdefg不在同一个区域内
双等号比较的是虚地址 虚地址:对象在内存中的存储位置System.out.println(s1 == s2);
=赋值,无论怎么比较,都是true new赋值,用双等号比较,就是false
比较字符串的内容
equals方法: 1.需要传参,传String类型的参数 2.有,返回值是boolean类型 3.访问权限publicSystem.out.println(s3.equals(s4));
Length方法
1.不需要传参 2.有返回值,整型int 3.访问权限public 数组的length是属性, 字符串的length()是方法
System.out.println(s1.length()); System.out.println(arr.length);
取出指定下标位置的字符
public static void main(String[] args) {
String s1 = "abcdefg";
System.out.println(s1.charAt(0));
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
字符串转int要+1
System.out.println(c + 1);
}
判断当前字符串是否存在
public static void main(String[] args) {
String s1 = "abcdefgabcdaaa";
s1.indexOf('a');
// 判断指定字符串是否存在,返回值为字符串在s1的下标
// 返回从左到右遇到的第一个匹配的下标
// 如果不存在。返回-1
// indexOf(String,int)代表从int位置开始查找,包括当前位置
// System.out.println(s1.indexOf("a",8));
// 从后往前找
System.out.println(s1.lastIndexOf("a",12));
}
字符串的截取
public static void main(String[] args) {
// 字符串的截取
String str = "abcdefghijklmn";
/*
如果传一个参数,从指定位置开始截取,直到字符串的末尾
考虑一下?
包不包括1位置的字符,包括起始位置的字符
生成一个新的字符串,不会改变原有数据
*/
String s = str.substring(1);
// bc or b
// 包含起始位置,不包含终止位置
s = str.substring(1,2);
System.out.println(s);
}
返回一个新的字符串
// 转大写
System.out.println(str.toUpperCase());
// 转小写
System.out.println(str.toLowerCase());
// 判断是否以xxxx开头
System.out.println(str.startsWith("a",2));
// 判断是否以xxxx结尾
System.out.println(str.endsWith("F"));
// 忽略大小写进行比较内容
// 验证码
System.out.println(str.equalsIgnoreCase(str1));
// 去掉字符串前后的空格
System.out.println(str1.trim());
// 根据指定的字符分割,分割之后,分割条件是消失
String [] strings = str2.split(",");
// System.out.println(Arrays.toString(strings));
for (String string : strings) {
System.out.println(string);
字符串的替换
public static void main(String[] args) {
String str = "hello";
System.out.println(str.replaceAll("l", "i"));
}
数组转字符串
int [] arr = new int[]{1,2,3,4,5};
int i= 10;
把int类型转成字符串(推荐)
String s = String.valueOf(i);
s = new String(i);
字符串转数组
String str = "abcdefg";
转成字符型的数组
// char[] array = str.toCharArray();
// for (char c : array) {
// System.out.println(c);
// }
// 转成字节型数组
// 一般情况下,字节型数组在操作文件的时候常用的IO流
byte[] bytes = str.getBytes();
for (byte b : bytes) {
System.out.println(b);
}
包装器类型(包装类,封装类)
* byte Byte * short Short * int Integer * long Long * float Float * double Double * char Character * boolean Boolean
原理:
(自动)装箱:把int类型包装成了包装器Integer类型。基本数据类型转换成对应的包装器类型
(自动)拆箱:把Integer类型转换成int类型。包装器类型转换成对应的基本数据类型
JDK5以后的新功能:
- 自动装箱和自动拆箱
- 增强for循环(foreach)
- 枚举(switch case)
JDK7以后的新功能:
Switch...case可以用String
自动装箱
Integer i2 = Integer.valueOf(50);
拆箱
int ii2 = i2.intValue();