package Helloworld;
public class dome1 {
public static void main(String[] args) {
// 1.直接双引号得到字符串对象,封装字符串对象
String name = "lihao";
System.out.println(name);
// 2. new String 创建字符串对象,并调用构造器初始化字符串
String rs1= new String();
String rs2 = new String("lihao");
char[] chars ={'a','黑','马'};
String rs3 = new String(chars);
System.out.println(rs3);
byte[] bytes = {97,98,99};
String rs4 = new String(bytes);
System.out.println(rs4);
}
}
package Helloworld;
public class dome1 {
public static void main(String[] args) {
String s = "Java";
// 1. 获取字符串的长度
System.out.println(s.length());
// 2.提取字符串中的某个索引位置处的字符
char c = s.charAt(1);
System.out.println(c);
//3.字符串遍历
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
System.out.print(ch);
}
// 3.把字符串转换成字符数组,在进行遍历
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
System.out.println(chars[i]);
}
// 4.判断字符串内容,内容一样就返回true
String s1 = new String("牛逼克拉斯");
String s2 = new String ("牛逼克拉斯");
System.out.println(s1.equals(s2));
// 5. 忽略大小写比较字符串内容
String c1 = "123456aA";
String c2 = "123456Aa";
System.out.println(c1.equals(c2));
System.out.println(c1.equalsIgnoreCase(c2));
//6.截取字符串内容(包括前的不包括后面的)
String s3 = "Java是最好的编程语言之一";
String rs = s3.substring(0,8);
System.out.println(rs);
// 7.从当前索引位置一直截到字符串的末尾
String rs2 = s3.substring(5);
System.out.println(rs2);
//8.把字符串中某个内容替换成新内容,并返回新的字符串对象给我们
String info = "这个电影是个垃圾,垃圾电影!!";
String info1= info.replace("垃圾","**");
System.out.println(info);
System.out.println(info1);
//9.判断字符串中是否包含某个关键字
String info3 = "Java是最好的语言";
System.out.println(info3.contains("Java"));
//10.判断字符串是否以某个字符串开头
String rs4 = "张三丰";
System.out.println(rs4.startsWith("张三"));
//11.把字符串按照指定内容分割成多个字符串
String rs5 = "张无忌,张三丰,白月光,朱砂痣";
String[] names= rs5.split(",");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
注意事项:
(1)String的对象是不可变字符串对象
(2)只要是"..."方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份,
但是通过new方式创建字符串常量,每new一次都会产生一个新的对象放到堆内存中
public class test1 {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); // true
char[] chars={'a','b','c'};
String a1 = new String (chars);
String a2 =new String (chars);
System.out.println(a1 == a2); // false
}
}
区别一点就是:"....."字符串对象是放到堆内存中的字符串常量池,每一回创建字符串对象的时候,都会在字符串常量池中去找,没有的话,在字符串常量池中创建,有的话,直接将这个的地址返回String对象,
但是(1)new出来的东西,是直接放到堆内存中的不管是不是字符串,即便是字符串也是直接在堆内存中开辟空间去存放(2)字符串运算出来的东西也会直接放到堆内存中
package demo;
import java.util.ArrayList;
public class test1 {
public static void main(String[] args) {
// 1. 创建一个ArrayList的集合对象
ArrayList list = new ArrayList();
list.add("李小谦");
list.add(100);
list.add(58);
list.add("java");
System.out.println(list);
// ArrayList list1 = new ArrayList();
ArrayList list1 = new ArrayList<>();
list1.add("李小谦");
list1.add("java");
System.out.println(list1);
// 2.往集合中的某个索引位置处添加一个数据
list.add(1,"MySQL");
System.out.println(list);
// 3.根据索引获取集合中某个索引位置的值
String rs1 = list1.get(0);
System.out.println(rs1);
String rs2 = (String) list.get(0);
System.out.println(rs2);
int num = (int)list.get(3);
System.out.println(num);
// 4 .获取集合的大小(返回集合中存储的元素个数)
System.out.println(list.size());
// 5.根据索引删除集合中的某个元素值,会返回被删除元素值给我们
System.out.println(list.remove(1));
System.out.println(list);
// 6.直接删除某个元素值,删除成功后返回true,反之false
System.out.println(list.remove("java"));
System.out.println(list);
// 7.修改某个索引位置处的数据,修改后会返回原来的值给我们
list.set(1,"伟大的程序员");
System.out.println(list);
}
}