package demo1;
public class String1 {
public static void main(String[] args) {
/*
java.lang.String
java 中所有字符申都是此类的实例
"abc"-->字符串对象 底层是一个char数组 private final char value[];
字符串对象创建方式:
1.String s="abc";
创建时,先去字符申常量池中去査找有没有相同值的对象,如果没有,就创建一个字符串对象,并返回地址
2.String s1 = new string("abc"):
*/
String s="abc";
String ss="abc";
System.out.println(s==ss);
System.out.println(s.equals(ss));
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
}
}
demo2
String 的性质
注意!!!
这里每次都属于创建了一个新对象,然后返回新创造出的对象,并不是在旧对象上修改;
package demo1;
public class String2 {
public static void main(String[] args) {
//字符串不变;他们的值在创建后不能被更改
String s="abcd";// abcd 第一个字符串对象
s+="efg";//abcdefg 第二个字符串对象
s+="aaaa";//abcdefgaaaa 第三个字符串对象
System.out.println(s);
}
}
demo3
这章有讲到String四种构造方法
学习将一组字符串通过编码和解码操作,将字符串转换成字符数组再传换成字符串
(科普GBK是我国早期的编码方法!)
本章注重的是这种思想!!!
package demo1;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class string3 {
public static void main(String[] args) throws UnsupportedEncodingException {
/*
构造方法:
String()
String(string s)
String(byte[] bytes) 把字符数组 转为字符串 s3.getBytes();把字符串改为字节数组
String(char[] chars) 把char数组 转为字符串 s4.toCharArray();把字符串改为字符数组
*/
String s1=new String();
String s2=new String("abc");
String s3="你好";
byte[] bytes=s3.getBytes();//编码 把字符转为 字节数组(数字)
System.out.println(Arrays.toString(bytes));
String s4=new String(bytes);//解码 把字节数组 转为 字符
System.out.println(s4);
String s7="你好";
byte[] bytes1=s7.getBytes("GBK");
System.out.println("bytes1----"+Arrays.toString(bytes1));
String s8=new String(bytes1,"GBK");
System.out.println("s8----"+s8);
String s5="cabfe";
char[] chars=s5.toCharArray();
Arrays.sort(chars);
String s6=new String(chars);
System.out.println(s6);
}
}
demo4
本章学习了String中boolean的多种方式
我们可以简单调用这样的方法
判断功能 boolean equals(Object obj) 比较字符串对象中内容是否相同 boolean equalsIgnoreCase(String str)比较字符串对象中的内容是否相同 忽略大小写 boolean contains(String str)判断是否包含指定的子串 boolean isEmpty()判断字符串值是否为"” boolean startsWith(string prefix)判断是否以指定的字符串开头 boolean endsWith(string suffix) 判断是否以指定的字符串结尾
package demo1;
public class String4 {
public static void main(String[] args) {
/*
判断功能
boolean equals(Object obj) 比较字符串对象中内容是否相同
boolean equalsIgnoreCase(String str)比较字符串对象中的内容是否相同 忽略大小写
boolean contains(String str)判断是否包含指定的子串
boolean isEmpty()判断字符串值是否为"”
boolean startsWith(string prefix)判断是否以指定的字符串开头
boolean endsWith(string suffix) 判断是否以指定的字符串结尾
*/
String s1=new String("abcd");
String s2=new String("abcD") ;
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.contains("ab"));
System.out.println(s1.isEmpty());
System.out.println(s1.startsWith("ac"));
System.out.println(s1.endsWith("cd"));
}
}
demo5
本章学习的方式有
获取功能 int length() 获取字符串长度 char charAt(int index)获取指定位置上的字符 int indexof(string str) 返回的指定字符申首次出现的位置 int indexOf(String str,int fromIndex)从指定的位置开始査找,返回的指定字符串首次出现的位置int lastIndexOf("c") 从后向前査找,返回的指定字符串首次出现的位置 String substring(int start) 从指定的开始位置开始截取一个字符串副本到完 String substring(int start,int end)从指定的开始位置开始截取一个字符串副本到指定位置(不包含结束位置)
package demo1;
public class String5 {
/*
获取功能
int length() 获取字符串长度
char charAt(int index)获取指定位置上的字符
int indexof(string str) 返回的指定字符申首次出现的位置
int indexOf(String str,int fromIndex)从指定的位置开始査找,返回的指定字符串首次出现的位置int lastIndexOf("c") 从后向前査找,返回的指定字符串首次出现的位置
String substring(int start) 从指定的开始位置开始截取一个字符串副本到完
String substring(int start,int end)从指定的开始位置开始截取一个字符串副本到指定位置(不包含结束位置)
*/
public static void main(String[] args) {
String s1="abcdefgcd";
// 012345678
System.out.println(s1.length());
System.out.println(s1.charAt(4));//获取指定位置4上的字符,可知所在字符是e
//遍历字符串,打印字符串中的每个值
for(int i=1;i<s1.length();i++){
System.out.println(s1.charAt(i));
}
System.out.println(s1.indexOf("cd"));
//回到指定字符串的首位置
System.out.println(s1.indexOf("c",3));
System.out.println(s1.lastIndexOf("c"));
String s2=s1.substring(0,6);//框定一个位置;
System.out.println(s1);
System.out.println(s2);
}
}
demo6
本章学习了String中的替换功能;
package demo1;
public class String6 {
public static void main(String[] args) {
/*
替换功能
String replace(char old,char new)
String replace(string old,string new) 用新内容替换字符串中指定的字符串
replaceAll(String regex,String replacement)用新内容替换字符串中正则表达式匹配的字符串
replaceFirst(String regex,String replacement)用新内容替换字符串中正则表达式匹配的字符串 只替换第一个
●去除字符申两端空格(注意只能去除两端的空格,中间的空格没办法取消)
String trim()
*/
String s="a1bc5def6gh";
System.out.println(s.replace("2","H"));//将2位置的字符串替换成H;
System.out.println(s.replaceAll("\\d","W"));
System.out.println(s.replaceFirst("\\d","M"));
System.out.println(s.length());
System.out.println(s.trim().length());
}
}
demo7
String,StringBuffer,StringBuilder区别.
String: 是一个值不可以改变的字符申
StringBuffer: 值可以改变且不需要创建新对象, 方法上都加了锁,是在多线程(任务)执行时是线程安全的
StringBuilder: 值可以改变且不需要创建新对象, 由于方法上都没有加锁,在多线程(任务)执行时是线程不安全的,适合单线程
*/