1.java.lang.String:代表的字符串:字符串是一个常量,一旦被赋值了,其值(地址值)不能被更改.
推荐的使用方式:String 变量名 = "xxxx" ;//xxxx代表 的当前String的实例.
2.String类的常用的转换功能: (重点)
byte[] getBytes() :将字符串转换成字节数组 (编码)如果方法为空参,使用平台默认的编码
集进行编码(utf-8:一个中文对应三个字节)
byte[] getBytes(String charset):使用指定的字符集进行编码
String(byte[] bytes):使用默认字符集进行解码
String(byte[] bytes,指定字符集)
字符集: gbk :一个中文两个字节(中国中文编码表)
gb2312:gbk升级版(含义有一个中文字符:中国的中文编码表)
iso-8859-1:拉丁文码表
utf-8:任何的浏览器--->都支持 utf-8格式 (后期统一个)
unicode:国际编码表
JS:日本国际 电脑系统 一个字符集
Arrays静态功能:public static String toString(int/byte/float/double...[] a):
将任意类型的数组---->String
public char[] toCharArray():将字符串转换成字符数组
public String toString():返回自己本身---"当前字符串的内容"
public String toUpperCase():将字符串转换成大写public String toLowerCase():将字符串转换成小写
public class StringDemo {
public static void main(String[] args) {
//定义一个字符串
String s = "helloworldJavaEE" ;
char[] chs = s.toCharArray();
//遍历字符数组
for(int x = 0 ; x < chs.length; x ++){
System.out.print(chs[x]);
}
}
}
3.String类型的判断功能
public boolean equals(Object anObject):比较两个字符的内容是否相同 (区分大小写)
public boolean equalsIgnoreCase(String anotherString):比较两个字符串是否相同(不区分大小写)
public boolean startsWith(String prefix):判断字符串是否以指定的内容开头
public boolean endsWith(String suffix):判断字符串是否以指定的内容结尾
boolean isEmpty() 判断字符串是否为空 :若为空,则返回true;否则返回false
String s = "" ;// 空字符串 ,存在String对象 ""
String s = null ; 空值 (空对象) null:引用类型的默认值
4.String类的获取功能:(重点)
int length():获取字符串长度
public char charAt(int index);获取指定索引处的字符
public String concat(String str):将指定的字符串和当前字符串进行拼接,获取一个新的字符串
public int indexOf(int ch):返回指定字符第一次出现的索引值
public int lastIndexOf(int ch):返回值指定字符最后一次出现的索引值
public String[] split(String regex):拆分功能:通过指定的格式将字符串---拆分字符串数组public String substring(int beginIndex) :从指定位置开始默认截取到末尾 ,角标从0开始
public String substring(int beginIndex,int endIndex)从指定位置开始,截取到位置结束(包前不包右),只能取到endIndex-1处
public static String valueOf(boolean/int/long/float/double/char...Object b)万能方法,将任意类型转换String类型package Day_16_1; public class StringDemo { public static void main(String[] args) { String str = "helloworldJavaEE" ; // public char charAt(int index);获取指定索引处的字符 System.out.println("charAt():"+str.charAt(4)); System.out.println("---------------------------------"); //public String concat(String str):将指定的字符串和当前字符串进行拼接,获取一个新的字符串 //字符串最传统的拼接:直接 定义一个String s = "" ; s+任何数据="xxx" ; //提供了一个功能 System.out.println("concat:"+str.concat("R").concat("Go")); System.out.println("-----------------------------------"); // public int indexOf(int ch):返回指定字符第一次出现的索引值 // public int lastIndexOf(int ch):返回值指定字符最后一次出现的索引值 System.out.println("indexOf():"+str.indexOf("o")); System.out.println("lastIndexOf():"+str.lastIndexOf("o")); System.out.println("-----------------------------------"); //public String[] split(String regex): String str2 = "JavaEE-Python-Go-R-C-C#-PHP" ; //使用"-"进行拆分 String[] strArray = str2.split("-"); for(int x = 0 ; x < strArray.length ; x ++){ System.out.print(strArray[x]+"\t"); } System.out.println(); System.out.println("-----------------------------------"); /** * public String substring(int beginIndex) :从指定位置开始默认截取到末尾 * 角标从0开始 * public String substring(int beginIndex,int endIndex) */ // String str = "helloworldJavaEE" ; System.out.println("subString():"+str.substring(5)); System.out.println("subString():"+str.substring(5,9));//worl System.out.println("-----------------------------------"); //public static String valueOf(基本类型以及Object) System.out.println("valueOf:"+String.valueOf(100)); //100--->"100" } }
5.字符串其他功能:
public String replace(char target,char replacement):替换功能将指定的内容使用target字符进行替换
public String replaceAll(String regex, String replacement) :将指定的和参数1正则表达式匹配的字符串 使用replacement进行替换
参数1: [0-9] --->如果字符是数字字符;参数2: "*"替换掉
public String trim():去除字符串两端的空格
public int compareTo(String anotherString):按照字典顺序比较,返回值是int
String str1 = "abc" ;//字典顺序:就是我们26个字母,a,b,c,d,e,f,g,h String str2 = "hello" ; System.out.println(str1.compareTo(str2)); String str3 = "hel" ; System.out.println(str2.compareTo(str3));
面试题:
1.在数组中有没有length方法,在String类中有没有length方法,在集合中有没有length方法
答: 数组中没有length方法,length属性
int[] arr = new int[3] ;
arr.length;
String类中有length()
集合中没有length(),----->size()获取元素数2. String s1 = "hello" ;
String s2 = new String("hello") ;
在内存中分别创建了几个对象?答:第一个创建了一个对象,直接在常量池创建,开辟常量池空间
第二个:创建了两个对象,一个堆内存中开辟空间,一个指向常量池(不推荐)
3.String s1 = "hello" ;
String s2 = "hel" ;
使用s1调用compareTo(s2):按照字典顺序比较:结果是多少?是怎么运行的? 长度相减
答:判断第一个字母是否一样,一样的话长度相减,不一样的话就用第一个字母是所对应的ASCII码表所对应的数字相减即可
6.== 和equals的区别
==:连接引用类型比较的是地址值
equals:默认比较地址值,但是String类重写equals方法,所以内容是否相同
7.字符串常量相加和字符串变量相加的区别
字符串变量相加,常量池中先开空间,在拼接
字符串常量相加,先相加,然后看结果是否在常量池中存在;如果存在,直接返回当前地址值,如果不 存在,在常量池开辟空间.