Day14_String概述
String概述
- 字符串是常量,创建之后不可改变。
- 字符串字面值存储在字符串池中,可以共享。
- String s = "Hello";产生一个对象,字符串池中存储。
package com.oop.Demo11;
public class Demo03 {
public static void main(String[] args) {
String name="name";//"hello"常量存储在字符串池中
name = "zhangsan";//"zhangsan"赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟了一个zhangsan
String name2 ="zhangsan";//将常量池中的zhangsan的地址赋值给name2
//System.out.println (name==name2);//true
//演示字符串的另一种创建方式
String str =new String("java");
String str2 = new String ("java");//在堆和常量池分别创建对象java,str2指向堆中的地址,堆指向常量池中的数据"java",运行时两个java合并
System.out.println (str==str2);//false此时比较的是str与str2所存的地址
System.out.println (str.equals (str2));//true equals比较的数据
}
}
常用方法
-
public int length():返回字符串的长度。
-
public char charAt(int index):根据下标获取字符。
-
public boolean contains(String str):判断当前字符串中是否包含str。
-
public char[] toCharArray() :将字符串转换成数组。
-
public int indexOf(String str):查找str首次出现的下标,存在,则返回该下标;不存在,则返回-1。
-
public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
-
public String trim():去掉字符串前后的空格。
-
public String toUpperCase():将小写转成大写。
-
public boolean endWith(String str):判断字符串是否以str结尾。
-
public String replace(char oldChar, char newChar;将旧字符串替换成新字符串
-
public String[]l split(String str):根据str做拆分。
package com.oop.Demo11;
import java.util.Arrays;
public class Demo03 {
public static void main(String[] args) {
String name="name";//"hello"常量存储在字符串池中
name = "zhangsan";//"zhangsan"赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟了一个zhangsan
String name2 ="zhangsan";//将常量池中的zhangsan的地址赋值给name2
//System.out.println (name==name2);//true
//演示字符串的另一种创建方式
String str =new String("java");
String str2 = new String ("java");//在堆和常量池分别创建对象java,str2指向堆中的地址,堆指向常量池中的数据"java",运行时两个java合并
System.out.println (str==str2);//false此时比较的是str与str2所存的地址
System.out.println (str.equals (str2));//true equals比较的数据
System.out.println ("-------------字符串方法的使用------------------");
//字符串方法的使用
//1、length();返回字符串的长度
//2、charAt(int index);返回某个位置的字符;
//3、contains(String str);判断是否包含某个字符
String content= "java是使用最广泛的语言,java也是最多人使用的,java是目前世界上最好的语言";
System.out.println (content.length ());
System.out.println (content.charAt (content.length ()-1));
//content.charAt (content.length ())不在数组范围内是会报IndexOutOfBoundsException异常,数组越界异常
System.out.println (content.contains ("java"));//true 字符串包含java吗?true
System.out.println (content.contains ("php"));//false
System.out.println ("-------------字符串方法的使用------------------");
//字符串方法的使用
//4、toCharArray();返回字符串对应的数组
//5、indexOf();返回字符串首次出现的位置
//6、lastIndexOf();返回字符串最后一次出现的位置
System.out.println (Arrays.toString (content.toCharArray ()));
System.out.println (content.indexOf ("java"));
System.out.println (content.indexOf ("java",4));
System.out.println (content.lastIndexOf ("java"));
//7、trim();去掉字符串前后的空格
//8、toUpperCase();把小写转换成大写 toLowerCase();把大写转换成小写
//9、endWith(str);判断是否以str结尾,startWith(str);判断是否以str开头
String content2=" Hello World ";
System.out.println (content2.trim ());
System.out.println (content2.toUpperCase ());
System.out.println (content2.toLowerCase ());
String filename="hello.java";
System.out.println (filename.endsWith (".java"));//true 判断filename字符串是否以.java结尾
System.out.println (filename.startsWith ("h"));//true 判断filename字符串是否以h开头
System.out.println ("-------------字符串方法的使用------------------");
//10、replace(char old,char new);用新的字符或字符串替换旧的字符或字符串
//11、split();对字符串进行拆分
System.out.println (content.replace ("java","ahha"));
String say="java is the best programing language, java java ";
String[] arr=say.split ("[ ,]+");
System.out.println (arr.length);
for (String string:arr) {
System.out.println (string);
}
//补充两个方法equals、compareTo();比较大小
System.out.println ("--------补充-------");
String s1="hello";
String s2="HELLO";
System.out.println (s1.equalsIgnoreCase (s2));//忽略大小写的比较
//compare比较两个字符在编码表中的位置
String s3="abc";//a的字符97
String s4="xyz";//x的字符120 如果第一个相等 比较第二对b、y
System.out.println (s3.compareTo (s4));//-23 (97-120)
String s5="abc";
String s6="abcxyz";
System.out.println (s5.compareTo (s6));//-3 比长度(3-6)
}
}
案例演示
- 需求
- 已知String str = "this is a text" ;
- 1.将str中的单词单独获取出来
- 2.将str中的text替换为practice
- 3.在text前面插入一个easy
- 4.将每个单词的首字母改为大写
String型的方法
char charAt(int index)
返回索引index位置处的字符。与数组一样,索引也是从头开始依次0、1、2、3...
package com.oop.Demo11;
public class Demo04 {
public static void main(String[] args) {
/*
- **已知String str = "this is a text" ;**
- **1.将str中的单词单独获取出来**
- **2.将str中的text替换为practice**
- **3.在text前面插入一个easy**
- **4.将每个单词的首字母改为大写
*/
String str="this is a text";
//1.将str中的单词单独获取出来
String[] arr = str.split (" ");
System.out.println ("------------1.将str中的单词单独获取出来---------------");
for (String s:arr) {
//每次循环取一个字符串出来赋值给s,直到arr数组长度-1结束
System.out.println (s);
}
System.out.println ("------------2.将str中的text替换为practice---------------");
String str2=str.replace ("text","practice");
System.out.println (str2);
System.out.println ("------------3.在text前面插入一个easy---------------");
String str3= str.replace ("text","easy text");
System.out.println (str3);
System.out.println ("-------------4.将每个单词的首字母改为大写--------------");
for (int i = 0; i < arr.length; i++) {
/**java里面的for循环的格式:for(String s : arr)
*其实本质上和for(int i=0;i<length;i++)没太大区别,但是for(String s : arr)中的arr一定是字符串数组,
*每次循环取一个字符串出来赋值给s,直到arr数组长度-1结束。
*
* char charAt(int index)
* 返回索引index位置处的字符。与数组一样,索引也是从头开始依次0、1、2、3...
*/
char first=arr[i].charAt (0);
//把第一个字符转换成大写
char upperfirst=Character.toUpperCase (first);
String news=upperfirst+arr[i].substring (1);
System.out.println (news);
}
}
}