Loading

String的各类方法


返回 我的技术栈(Technology Stack)



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
原理:这样相当于创建了两个对象,对象在堆里,所以两者指向的对象都不一样,即地址不一样。

posted @ 2021-03-27 23:27  言非  阅读(92)  评论(0编辑  收藏  举报