ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java基础学习第三天-String类中常见的方法

2021-01-18 23:59:40  阅读:191  来源: 互联网

标签:Java String just System println 字符串 类中 out


一、String字符串的创建

//1.先声明,再创建
	String[] array01;
	array01=new String[10];
//2.声明+创建
	String[] array02=new String[20];
//3.声明+自定义初始化
	char[] array03= {'甲','乙','丙','丁'};
	System.out.println(Arrays.toString(array03));

这里引入一个概念:字符串常量池

JVM为了提升性能和减少内存的开销,避免字符串的重复创建,维护了一块特殊的内存空间,用于保存字符串。
优点:避免了相同字符串的创建,节省了空间,省去了创建相同字符串的时间,提高了性能。

方式1:在字符串常量池中创建

String str1="just do it";
String str2="just do it";

由于字符串池中已经有"just do it",因此当在定义str02时,str02不会再重新创建新的字符串,而是会指向字符池中所对应的地址
方式2:在堆中开辟空间,创建并保存字符串

String str3=new String("just do it");

这种方法不仅在字符串池中创建了"just do it",还在堆中开辟了一块内存空间,用于存储该字符串在字符串池中的地址
方式3:将字符数组,转换成字符串

char[] chs= {'A','B','C','D','E'};
String str4=new String(chs);
System.out.println(str4);

二、String类的常见方法
1.charAt(下标位置)

  • 功能:返回改下标所对应的字符
String str1="ABCD";
System.out.println(str1.charAt(0));

2.toCharArray()

  • 功能:返回该字符串中的字符数组
String str2="天天爱学习";
char[] chs=str2.toCharArray();
System.out.println(chs[1]);

3.equals()方法进行比较,equalsIgnoreCase()比较时忽略大小写

  1. == : 运算符,基本数据类型进行值的比较,引用数据类型进行内存地址的比较
  2. equals() : 方法,基本数据类型没有方法,引用数据类型(String)进行值(字符串内容)的比较
// 方式1:在"字符串常量池"中创建
		String str1 = "just do IT";
		String str2 = "just do IT";
		String str3 = "just do it";
		
		// 方式2:在“堆区”中创建
		String strx = new String("just do it");
		String stry = new String("just do it");
		
		
		// == 比较内存地址
		System.out.println(str1 == str2); //true
		System.out.println(str1 == str3); //false
		System.out.println(str3 == strx); //false
		System.out.println(strx == stry); //false
		
		// equals 比较字符串内容
		System.out.println(str3.equals(strx));//true
		
	}
}

4.toUpperCase()-转化成大写
toLowerCase()-转化成小写

String code = "twGdhbTZHy";
		
		// 转换成大写
		String strUpper = code.toUpperCase();
		System.out.println(strUpper);
		
		String strLower = code.toLowerCase();
		System.out.println(strLower);

5.String.valueOf()

  • 将指定类型转换为字符串类型
        // int => String
		String strInt = String.valueOf(100);
		System.out.println(strInt);

		// double => String
		String strDouble = String.valueOf(12.3);
		System.out.println(strDouble);

		// boolean => String
		String strBoolean = String.valueOf(true);
		System.out.println(strBoolean);

6.String.format()格式化字符串
(%d代表整型,%f代表浮点型,%s代表字符串)

		// 格式化输出(代表整数,%f代表浮点数,%s代表字符串)
		System.out.printf("%d+%d=%d\n", num1, num2, sum);

		// 格式化字符串
		String str = String.format("%d+%d=%d", num1, num2, sum);
		System.out.println(str);

7.split(指定字符串)

  • 功能:按照指定字符串进行切割,返回字符串数组
		//案例1
		String sourceStr = "北京#-上海#-河北#-西安#-武汉";
		String[] resultArray = sourceStr.split("#-");
		for (String city : resultArray) {
			System.out.println(city);
		}
		// 案例2
		String ip = "192.168.90.4";
		// 切割字符串如果是特殊符号(正则表达式),需加入\\进行转义
		String[] ipArray = ip.split("\\."); 
		for(String strNum : ipArray) {
			System.out.println(strNum);
		}
		
		// 案例3
		sourceStr = "北京#$上海#$河北#$西安#$武汉";
		// 切割字符串如果是特殊符号(正则表达式),需加入\\进行转义
		String[] cityArray = sourceStr.split("#\\$");
		for(String cityName : cityArray) {
			System.out.println(cityName);
		}
	}

8.compareTo()

  • 功能:比较两个字符串之间的大小

  • 比较规则:先比较两个字符串对应字符 ASCII码(英文)或Unicode码(中文)的"差",
    如果比较的所有字符一致,再比较字符串的长度“差”。 传入:需要比较的另外一个字符串

  • 返回: 正数:字符串1 > 字符串 2 零:字符串1 = 字符串2 负数:字符串1 < 字符串2

		String str1 ="天";
		String str2 ="地";
		System.out.println(str1.compareTo(str2));

9.contains(子字符串)

  • 功能:判断字符串是否包含指定子字符串

  • 返回结果:true:代表包含,false:代表不包含

		String str1 = "ABABABASOSOASB";
		System.out.println(str1.contains("soso"));

10.startsWith(子字符串)

  • 功能:判断字符串是否以指定子字符串"开头"

  • 返回结果:true:代表是,false:代表不是

		String url = "ftp://www.baidu.com";
		System.out.println(url.startsWith("http"));
  1. endsWith(子字符串)
  • 功能:判断字符串是否以指定子字符串"结尾"
  • 返回结果: true:代表是,false:代表不是
		String fileName = "weixin.docx";
		System.out.println(fileName.endsWith(".png"));

12.indexOf(子字符串)

  • 功能:查找指定子字符串

  • 返回结果:如果找到,则返回子字符串位置;如果没找到返回负数

		String data1 = "印度:{nowConfirm:0,confirmAdd:2,dead:0,heal:2,zero:0}";

		int pos1 = data1.indexOf(":"); // 从下标0开始查找
		System.out.println(pos1); // 4

		int pos2 = data1.indexOf(":", 5); // 从下标5开始查找
		System.out.println(pos2); // 18
  1. substring()
  • 功能:截取子字符串

  • 返回:截取后的子字符串

		// 从指定开始位置,截取至字符串的尾部(截取后缀名)
		String suffix = fileName.substring(beginPos);
		System.out.printf("%s的后缀名是%s\n", fileName, suffix);

		// 案例2:截取文件名
		String name = fileName.substring(0, beginPos);
		System.out.printf("%s的文件名是%s\n", fileName, name);

14.replace()

  • 功能:将指定子字符串替换
  • 返回:替换后的新字符串
		String content = "where there is a will there is a way,I will go where you will go,there you!finish this job";
		content = content.replace(",", " ").replace("!", " ");
		System.out.println(content);

15.trim()

  • 功能:去除左右空格

  • 返回:去除空格后的新字符串

src = "                                    <img src=\"https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2627788612.webp\" alt=\"沐浴之王\" rel=\"nofollow\" class=\"\" />";
		System.out.println("使用前:"+src);
		src = src.trim(); //去除字符串的左右空格
		System.out.println("使用后:"+src);
  1. String.join()
  • 功能:将字符串数组,按照指定字符串进行连接

  • 返回:连接后的新字符串

	String[] array = { "AA", "BB", "CC", "DD", "EE", "FF" };

		// 方式1
		// String.join()
		// 功能:将字符串数组,按照指定字符串进行连接
		// 返回:连接后的新字符串
		String result01 = String.join("#", array);
		System.out.println(result01);

		// 方式2
		String result02 = "";
		for (int i = 0, len = array.length; i < len; i++) {
			result02 += array[i];
			if (i != len - 1) {
				result02 += "#";
			}
		}
		System.out.println(result02);

17.StringJoiner

  • 功能:进行字符串的连接
		// 以前
		String[] array = { "AE", "AD", "AB" };
		String result01 = String.join(",", array);
		System.out.println("{" + result01 + "}");
		
		// 使用StringJoiner
		// StringJoiner joiner = new StringJoiner(","); // 仅使用分隔符
		StringJoiner joiner = new StringJoiner(",","{","}"); //分隔符,前缀,后缀
		for(String s : array) {
			joiner.add(s); //添加字符串
		} 
		String result02 = joiner.toString();
		System.out.println(result02);

18.intern()

  • 如果字符常量池中已经包含一个等于此 String对象的字符串则返回常量池中字
    符串的引用(内存地址),否则将新的字符串放入常量池并返回新字符串的引 用(内存地址)
    以上就是String常见的一些方法,如有错误或者补充欢迎评论区讨论

标签:Java,String,just,System,println,字符串,类中,out
来源: https://blog.csdn.net/aahjh/article/details/112796315

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有