String:
是一个类
使用时不需要import(导包)
在java中见到的所有双引号包裹起来的内容都是String类的实例(对象)
构造:
new String() :常创建一个空白的字符串对象
new String(char[] c):根据数组的内容创建字符串对象
new String(char[] c,int offset,int lenght):根据数组的一部分创建字符串对象,通过offset开始获取lenght个内容
例:
/**
* offset:偏移量 理解为下标(索引)
* String(byte[] bytes, int offset, int length)
* 使用字节数组的一部分来构造新的 String 。
* 子阵列
* byte[] bytes={97,98,99,100,101,102} abcdef
*/
public class Demo_01 {
public static void main(String[] args) {
byte[] b1 = {1,2,3,4,65,98,99,8,9};
String s = new String(b1,4,3);
System.out.println(s);
}
}
String str="abc":当作基本数据类型使用
使用:
1.当作基本数据使用
格式:
String str="abc":
2.当作引用数据使用
格式:
String str=new 构造(参数);
区别:
当作基本数据使用:创建对象首先在内容中查找是否存在,存在->直接使用,不存在->创建
当作引用数据使用:直接开辟空间对象对象
特点:
1.String是特殊的引用数据类型
2.String的值(字符串内容)一旦创建,不可更改
3.String的值(字符串内容),可以被共享
4.String可以看作char的数组,更底层是byte数组
操作:
切分:split(String regex)
替换:replce(String oldStr,String newStr)
截取:subString(int index)
//spilt,切分数据
//1001,zs,18,男,180
//10015000,zsl,18,男,180
public class Demo_04 {
public static void main(String[] args) {
String s1 = "1001,zs,18,男,180";
String s2 = "10015000,zsl,18,男,180";
String[] split = s1.split(",");//利用,作为分隔符,切分数据
String s = split[3];
System.out.println(s);
System.out.println(split.length);
}
}
转义符:\
对一个符号及进行转义
只能对转义符\之后第一个符号
转义:关键字<->String默认输出
例子:
"n":默认输出
"\n":n关键字换行符
String的拼接会创建一个新的对象,耗时耗资源
StringBuilder:可变的字符序列(可变的字符数组)
构造:
StringBuilder() 创建一个空白的StringBuilder对象,不含有任何内容
StringBuilder(String str) 根据字符串的内容,创建StringBuilder对象
方法:
public StringBuilder append(任意类型) 添加数据并返回对象本身
public StringBuilder reverse() 返回相反的字符序列
什么时候使用StringBuilder
1.String需要拼接的时候
2.String中有些需求使用StringBuilder的中方法可以直接完成,不需要手写代码
String和StringBuilder:有些功能只能在String(+=)或StringBuilder(reverse())
String->StringBuilder:new StringBuilder(String str)
StringBuilder->String:StringBuilder对象.toString();
集合ArrayList<E>:存储长度可变的多个相同数据,长度可变的数组
E:泛型,集合想要插入的数据,Object想要插入的数据。一旦使用类型替换E,类中的所有的E都发生改变
构造:
public ArrayList() 创建一个空白的对象
public ArrayList(int initCount) 创建一个指定初始容量 空白的对象
添加:
public boolean add(E e) 将指定的元素追加到集合末尾
注意:返回值永远为true不需要接受数据,直接使用
public void add(int index,E element) 在集合中的指定位置插入指定的元素
操作:
public boolean remove(Object o) 删除指定元素,返回删除是否成功
public E remove(int index) 删除指定索引的元素,返回删除的元素
public E set(int index,E element) 修改指定索引的元素,返回被修改的元素
public E get(int index) 返回指定索引的元素
public int size() 返回集合中元素个数
例:
//集合:可变数组
public class Demo_09 {
public static void main(String[] args) {
ArrayList<Object>objects = new ArrayList<>(16);
System.out.println(objects);
//
//public ArrayList<E:想要插入的数据类型>() E=String
//public boolean add(E e) 将指定的元素追加到集合末尾
//public void add(int index,E element) 在集合中的指定位置插入指定的元素
ArrayList<String>strs = new ArrayList<>();
strs.add("abc");//向集合中添加“abc”
System.out.println(strs);
strs.add("def");//在集合后面添加“def”
System.out.println(strs);
strs.add(0,"123");//在集合下标为0的位置添加“123”
System.out.println(strs);
/*
Object:想要插入的类型
public boolean remove(Object o) 删除指定元素,返回删除是否成功
public E remove(int index) 删除指定索引的元素,返回删除的元素
public E set(int index,E element) 修改指定索引的元素,返回被修改的元素
public E get(int index) 返回指定索引的元素
public int size() 返回集合中元素个数
*/
public class Demo_09 {
public static void main(String[] args){
ArrayList<String>strings = new ArrayList<>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
strings.add("e");
strings.add("f");
strings.add("g");
String a = strings.remove(2);//remove删除指定位置的元素并返回被删除的元素
System.out.println(strings);
System.out.println(a);
String b = strings.set(1,"123");//set修改指定位置的元素,并返回被修改的元素
System.out.println(b);
System.out.println(strings);
String c = strings.get(5);
System.out.println(c);
int d = strings.size();
System.out.println(d);
boolean q = strings.remove(a);
System.out.println(q);
注意:
集合不能存储基本数据类型
通过装箱和拆箱
装箱:基本数据类型转化为包装器类(引用数据类型)
例如:
Integer i=10;
Integer a=Integer.valueOf(10);//也可以直接赋值的方式Integer a = 10;
拆箱:将包装器类型转换为基本数据类型
范例:
1.int i=a.intValue();
2.Integer a=10;
通常用来进行和String相互转化
int和String的互换
int转String
int不能直接转换为String,要通过String类,调用类中的方 法(valueOf())来进行转换
例如:String s=String.valueOf(10);
String转int
String不能直接转换为int,要通过int的包装类Integer,调 用类中的方法(valueOf())来进行转换
例如:int i=Integer.valueOf("a");
注意:String转int时,String的内容只能为数字