String的各类方法
Eclipse中如何删除项目和导入项目
-
删除项目:
- 选中项目——右键——删除
- 打钩:从硬盘中直接删除
- 不打钩:从项目区域中删除
-
导入项目:
- 在项目区域右键找到import
- 找到General,展开
- 找到existing project into workspace
- 点击next,然后选择你要导入的项目
- 注意:这里选择的是项目名称
API(Application Programming Interface)
- 应用程序编程接口
- 就是Java提供给我们使用的类,这些类将底层的实现封装了起来
统计不同类型字符个数
-
要点:char c = s.charAt(i); 获取String字符串中的每一个字符
public class One {
public static void main(String[] args) {
String s = "ABCDEFabcdef123456/';=-";
int big = 0;
int small = 0;
int num = 0;
int other = 0;
for(int i = 0;i < s.length(); i ++) {
char c = s.charAt(i); //通过索引获取每一个字符
if(c >= 'A' && c<='Z') {
big++;
}else if(c >= 'a' && c <= 'z') {
small++;
}else if(c >= '0' && c <= '9') {
num ++;
}else {
other ++;
}
}
System.out.println( s + "字符串中,有大写字母" + big + "个,有小写字母" + small
+ "个,有数字" + num + "个,其他字符" + other + "个" );
}
}输出结果:ABCDEFabcdef123456/';=-字符串中,有大写字母6个,有小写字母6个,有数字6个,其他字符5个
String类的转换功能(必须掌握)
-
byte[] getBytes():把字符串转换为字节数组
public static void main (String[] args) {
String s1 = "abc";
byte[] arr = s1.getBytes();
for(int i = 0; i < arr.length; i ++) {
System.out.println(arr[i] + " ");
}System.out.println();
String s2 = "你好你好";
byte[] arr2 = s2.getBytes(); //通过gbk码表将字符串转换成字节数
for(int i = 0;i < arr2.length; i ++) { //编码:把我们看得懂转换成计算机看的懂的
System.out.println(arr2[i] + " "); //gbk码表一个中文代表两个字节
//gbk码表特点,中文的第一个字节肯定是负数
}}
输出结果:97 98 99
-60 -29 -70 -61 -60 -29 -70 -61 -
char [] toCharArray():把字符串转换为字符数组
public static void main(String[] args) {
String s = "heima";
char[] arr = s.toCharArray(); //将字符串转换为字符数组for (int i = 0 ; i < arr.length; i ++) {
System.out.print(arr[i] + " ");
}
}输出结果:h e i m a
-
static String valueOf(char[] chs):把字符数组转换成字符串
-
static String valueOf(int i):把int类型的数据转换成字符串
-
注意:String类的valueOf方法可以把任意类型的数据转换成字符串
public static void main(String[] args) {
char[] arr = {'a','b','c'};
String s = String.valueOf(arr);
System.out.println(s);String s2 = String.valueOf(100);
System.out.println(s2 + 100); //将100转换为字符串
}
-
-
string toLowerCase():把字符串转成小写
-
String toUpperCase():把字符串转成大写
-
String concat(String str):把字符串拼接
public static void main(String[] args) {
String s1 = "heiMA";
String s2 = "chengxuYUAN";
String s3 = s1.toLowerCase();
String s4 = s2.toUpperCase();System.out.println(s3);
System.out.println(s4);System.out.println(s3 + s3); //用+拼接字符串更强大,可以用字符串与任意类型相加
System.out.println(s3.concat(s4)); //concat方法调用和传入的都必须是字符串
}输出结果:heima
CHENGXUYUAN
heimaCHENGXUYUAN
heimaCHENGXUYUAN
按要求转换字符案例(链式编程)
-
要求:把一个字符串的首字母转成大写,其余为小写
public static void main(String[] args) {
String s = "woaiHEIma";
String s2 = s.substring(0,1).toUpperCase().concat(s.substring(1).toLowerCase());
//从0到1截取字符串中的w
System.out.println(s2);
}
输出结果:Woaiheima -
把数组中的数据按照指定格式拼接成一个字符串
public static void main(String[] args) {
int [] arr = {1,2,3};
String s = "[";for(int i = 0; i < arr.length; i ++) {
if(i == arr.length - 1) {
s = s + arr[i] + "]";
}else {
s = s + arr[i] + ",";
}
}System.out.println(s);
}输出结果:[1,2,3]
String类的其他功能
-
String的替换功能及案例演示
-
String replace(char old,char new)
-
String replace (String old,String new)
String s = "heima";
String s2 = s.replace('i','o');
System.out.println(s2);String s3 = s.replace('z','o'); //字符不存在就不替换,原样输出
System.out.println(s3);String s4 = s.replace("ei","ao");
System.out.println(s4);输出结果:heoma
heima
haoma
-
-
String的去除字符串两空格及案例演示
-
String trim()
String s = " hei ma ";
String s2 = s.trim();
System.out.println(s2);输出结果:hei ma
应用:在用户输入密码的时候,对字符串两端的空格进行处理
-
-
String的按字典顺序比较两个字符串及案例演示
-
int compareTo(String str)
-
int compareToIgnoreCase(String str)
String s1 = "abc";
String s2 = "bcd";int num = s1.compareTo(s2);
System.out.println(num);输出结果:-1
解释:a对应的是97,b对应的是98 97-98=-1/*******************************************/
String s1 = "a";
String s2 = "aaaa";int num = s1.compareTo(s2);
System.out.println(num);输出结果:-3
解释:如果字符都一样就按照长度来比较/*******************************************/
String s3 = "黑";
String s4 = "马";
int num2 = s3.compareTo(s4);
System.out.println('黑' + 0); //查找的是Unicode码表值
System.out.println('马' + 0);
System.out.println(num2);输出结果:40657
39532
1125
解释:查找Unicode的码表值,40657-39532=1125/*******************************************/
String s5 = "heima";
String s6 = "HEIMA";
int num3 = s5.compareTo(s6);
System.out.println(num3);int num4 = s5.compareToIgnoreCase(s6);
System.out.println(num4);输出结果:32
0
-
字符反转例题
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //创建键盘录入对象
System.out.println("请输入一个字符串:");
String line = sc.nextLine(); //将键盘录入的字符串存在line中
char[] arr = line.toCharArray(); //将字符串转换为字符数组
String s = "";
for(int i = arr.length - 1;i >= 0; i--) { //倒着遍历字符数组
s = s + arr[i]; //拼接成字符串
}
System.out.println(s);
}
}
运行结果:请输入一个字符串:
abc
cba
统计大串中小串出现的次数
public static void main(String[] args) {
String max = "woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma"; //定义大串
String min = "heima"; //定义小串
int count = 0; //定义计数器变量
int index = 0; //定义索引
//定义循环,判断小串是否在大串中出现
while((index = max.indexOf(min)) != -1) {
count++;
max = max.substring(index + min.length());
}
System.out.println(count);
}
输出结果:3
附加:
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2);
输出:true
原理:这样创建出来的String是常量,会把数据放在常量池中。
当s1创建后,会把hello放在常量池中
当s2创建后,s2会现在常量池中寻找是否有hello这个数据,有就直接指向它,没有就写入新的数据(没有地址)
String s1 = new String ("my String");
String s2 = new String ("my String");
System.out.println(s1 == s2);
输出:false
原理:这样相当于创建了两个对象,对象在堆里,所以两者指向的对象都不一样,即地址不一样。

浙公网安备 33010602011771号