当前位置:首页 > Java技术 > Java - 【万能字符串】String

Java - 【万能字符串】String

2022年08月05日 22:17:37Java技术4

引入一:一种编码的字符串转换为另一种编码的字符串?

Java - 【万能字符串】String _ JavaClub全栈架构师技术笔记

 ☞ 引入二:String比StringBuffer多了replaceAll的方法,且replace方法API使用也不同

Java - 【万能字符串】String _ JavaClub全栈架构师技术笔记

  ☞ 引入三:程序理解

public class StringBufferTest {
    public static void main(String[] args) {
        String a = "aaa";
        String b = new String("bbb");
        show1(a,b);
        System.out.println(a+"_"+b);
        show2(a,b);
        System.out.println(a+"_"+b);
​
        StringBuffer s1 = new StringBuffer("aaa");
        StringBuffer s2 = new StringBuffer("bbb");
        show3(s1,s2);
        System.out.println(s1+"_"+s2);
        show4(s1,s2);
        System.out.println(s1+"_"+s2);
    }
​
    private static void show1(String a, String b){
        a = "hello";
        b += "world";
    }
​
    private static void show2(String a, String b){
        a = new String("hello");
        b += new String("world");
    }
​
    private static void show3(StringBuffer a, StringBuffer b){
        a = new StringBuffer("hello");
        b = new StringBuffer("world");
    }
​
    private static void show4(StringBuffer a, StringBuffer b){
        a.replace(0,a.length(),"hello");
        b.replace(0,a.length(),"world");
    }
}

 


目录

<一> String常见API

  • 求长 + 格式化
  • 比较
  • 查找
  • 转换
  • 其他

<二> StringBuffer常见API

  • 添加
  • 删除
  • 替换
  • 反转
  • 截取
  • 回文字符串判定(练习)

<三> 正则表达式

<四> Date与String的互转(SimpleDateFormat)

<五> 问题解答

  • String、StringBuilder、StringBuffer的区别
  • String与StringBuffer作为函数形参

<六> 附加:自定义类的排序



<一> String常见API

1> 求长度
	length()
        String.format("%s", number).length();
2> 比较
        int compareTo(String anotherString)    ->   自定义类的排序?(文末)
	boolean equals(Object obj)
	boolean equalsIgnoreCase(String str)
	boolean contains(String str)
	boolean startsWith(String str)
	boolean endsWith(String str)
	boolean isEmpty()
	
3> 查找(左闭右开)
	char charAt(int index)
	int indexOf(char ch)
	int indexOf(String str)
		int indexOf(char ch,int fromIndex)
		int indexOf(String str,int fromIndex)

        int lastIndexOf(...)

	String subString(int start)
	String subSring(int start,int end)
	
	
4> 转换
	a)转换为字节数组和字符数组,再回转
		byte[] getBytes(String str)
		char[] toCharArray()
		String valueOf(byte[] bys)
		String vlaueOf(char[] chs)
	b)大小写转换
		String toLowerCase()
		String toUpperCase()
	c) 追加
		String concat(String str)
	d) 实践一(编写方法实现首字母大写,其余小写)
		String s1 = str.subString(0,1).toUpperCase();
		String s2 = str.subString(1).toLowerCase();
		return s1 + s2;
	e) 实践二(字符串逆序)
		String result = "";
		char[] chs = str.toCharArray();
		for(int i=chs.length-1;i>=0;i--){
			result += chs[i];
		}
		return result;
	f) 实践三(获取子串出现次数)
		int count = 0;
		int index = maxString.indexOf(minString);
		while(index != -1){
			count++;
			int startIndex = index + minString.length();
			maxString = maxString.subString(startIndex);
			index = maxString.indexOf(minString);
		}
		return index;
	g) 如何优化实践三?
		int count = 0;
		while((index = maxString.indexOf(minString)) != -1){
			count++;
			maxString = maxString.subString(index + minString.length());
		}
		return count;
		
5> 其他
	a) 替换(全部)
		String replace(char old,char new)
		String replace(String old,String new)
		成功返回新值,失败返回旧值!
	b) 去除首尾空格
		String trim()
	7) 特殊比较API
		int compareTo(String str)
		int compareToIgnoreCase(String str)
		完全一致返回0
		有不同的返回不同处字符ASCII码差值
		一长一短,返回字符个数差值

<二> StringBuffer常见API

1> 可以直接在构造函数中传入String
2> 添加(也可以添加StringBuffer)
	StringBuffer append(String str)
	StringBuffer insert(int index,String str)
3> 删除
	StringBuffer deleteCharAt(int index)
	StringBuffer delete(int start,int end)
4> 替换
	StringBuffer replace(int start,int end,String str)
5> 反转
	StringBuffer reverse()
6> 截取(返回String类型)
	String subString(int start)
	String subString(int start,int end)
7> 如何将StringBuffer转换为String?
	a) String的构造函数可以传入StringBuffer类型
	b) StringBuffer类型的toString()方法
8> 实践(判断回文字符串)
	return new StringBuffer(str).reverse().toString().equals(str);

<三> 正则表达式

Regex:Regular Expression

  • 判断QQ号格式(不能以0开头,5~15位数字)
return qq.matches("[1-9][0-9]{4,14}");
return qq.matches("[1-9]\\d{4,14}");
  • 常见规则
import java.util.regex.Pattern

.  = 任意字符
\\. = 点号
\d = [0-9]
\D = [^0-9]
\s = 空白字符
\S = 非空白字符
\w = [a-zA-Z_0-9]
\W = [^a-zA-Z_0-9]

? = 1次/0次
+ = 大于等于1
* = 大于等于0
{n}  = 出现n次
{n,} = 至少出现n次
{n,m} = 左右为闭区间次数
  • 正则表达式配合字符串使用
1> 检测matches
email.matches("\\w+@\w{2,6}(\\.\\w{2,3})+")

2> 分割split
String s = "aa,bb,cc";
String[] arrs = s.split(",");
Srring s2 = "aa\\bb\\cc";
String[] arrs2 = s2.split("\\\\");

3> 替换replaceAll
String类型默认有replace方法替换所有,但不支持regex,但replaceAll支持regex
String s = "\\aaa";
s = s.replaceAll("\\\\","nn");

<四> Date与String的互转

//yyyy-MM-dd HH:mm:ss

//String -> Date
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);

//Date -> String
String s = "2020-04-02 12:55:21";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(s);

<五> 问题解答

1> String、StringBuilder、StringBuffer的区别

1.String的内容是不可变的,而StringBuilder、StringBuffer内容是可变的;
2.StringBuffer是同步的,多线程中确保数据安全,效率低;
  StringBuilder是不同步的,多线程中无法保证数据安全,效率高,一般单线程中较常见;

2> String与StringBuffer作为函数形参

1> String作为形参
	函数内内容修改不会影响函数外String变量( 类似于基本类型,因为函数内部处理的是字符串子=字面值常量 )
2> StringBuffer作为形参
	函数内=赋值不会影响外部原值,但是使用StringBuffer的API效果会影响外部原值!
3> 读代码写结果一 ( hello---worldworld )
	StringBuffer sb = new StringBuffer("hello");
	StringBuffer sb2 = new StringBuffer("world");
	change(sb,sb2);
	System.out.println(sb+"---"+sb2);
	public void change(StringBuffer a,StringBuffer b){
		a = b;
		b.append(a);
	}
4> 读代码写结果二 ( hello---world )
	String s = "hello";
	String s2 = "world";
	change(s,s2);
	System.out.println(s+"---"+s2);
	public static void change(String s, String s2) {
		s = s2;
		s2 += s;
	}

<六> 附加:自定义类的排序

Collections工具类中的sort方法:

  • 被排序类需要实现 Comparable<自身类型> 接口
  • 被排序类需要重写compareTo方法(字符串比较使用compareTo)

Student.java

package kyleeo.util01;

public class Student implements Comparable<Student>{
	
	private String name;
	private int age;
	public Student() {
		super();
	}
	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
	@Override
	public int compareTo(Student o) {
		int num = this.age - o.age;
		int num2 = num == 0?this.name.compareTo(o.name):num;
		return num2;
	}
}

sortDemo.java

package kyleeo.util01;

import java.util.ArrayList;
import java.util.Collections;

public class SortDemo {
	
	public static void main(String[] args) {
		ArrayList<Student> list = new ArrayList<Student>();
		list.add(new Student("ddd",18));
		list.add(new Student("AAA",15));
		list.add(new Student("BBB",16));
		list.add(new Student("CCC",17));
		
		Collections.sort(list);
		
		for(Student i:list) {
			System.out.println(i);
		}
	}
	
}

 

 

Java - 【万能字符串】String _ JavaClub全栈架构师技术笔记

作者:空山新雨⁣
来源链接:https://blog.csdn.net/qq_42292831/article/details/105336702

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/17922.html

标签: String
分享给朋友:

“Java - 【万能字符串】String” 的相关文章

我对java String的理解 及 源码浅析

我对java String的理解 及 源码浅析

摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 每天起床告诉自己,自己的目标是 ”技术 + 英语 还有生活“! -泥沙砖瓦浆木匠 一...

centos7安装oracle11G Exception String: Error in invoking target 'agent tclexec' of makefile '/home/db/oracle/product/11.1.0/db_1/sysman/lib/ins_emagent.mk'错误,解决办法

  今天用centos7安装oracle11g时,不知oracle11g 的rpm依赖包版本较高,还是centos7的原因,在进行安装的时候,日志/home/db/oracle/oraInventory/logs/installActions2016-04-11_10-35-32PM....

java string 修改字符

String item = "1111111111"; char[] status = item.toCharArray(); status[6] = '6'; status[7] = '6'; status[8] = '6';...

Java中String类最详细

Java中String类最详细

1、简介 String代表的是字符串常量,他们的值在创建后不能更改。字符串缓冲区支持可变的字符串。因为String对象是不可变的,所以可以共享。 源码分析: public final class String implement...

Java中从String到Float的转换

Given a string and we have to convert it into a float. 给定一个字符串,我们必须将其转换为浮点数。 Java conversion from String to Float Java从S...

Java之String概述

Java之String概述

目录 一、String简介 1.1、String(字符串常量)概述 1.2、分析String源码   1)String的成员变量   2)String的构造方法 二、创建字符串对象两种方式的区别 2.1、直接赋值方式创建对象 2.2...

Java——去掉小数点后面多余的0

当小数点后位数过多,多余的0没有实际意义,根据业务需求需要去掉多余的0。后端存储浮点型数据一般会用到Bigdecimal 类型,可以调用相关方法去掉小数后多余0,然后转为string。 例如: public static void main(String[] args...

java string数组转int数组

public int[] StringToInt(String[] arrs){     int[] ints = new int[arrs.length...

MySQL查询某个时间段内的字段,使用的日期是String类型,但数据库中是时间戳

MySQL查询某个时间段内的字段,使用的日期是String类型 在Java中,想要实现对数据库中的特殊查询——查询某个时间段内的字段,但是传入的日期值是String型,而数据库中的日期是时间戳…… 可以使用如下方法: 比如: ’ 2019-0...

Java-String-对象,你真的了解了吗?

Java-String-对象,你真的了解了吗?

String 对象的实现 String对象是 Java 中使用最频繁的对象之一,所以 Java 公司也在不断的对String对象的实现进行优化,以便提升String对象的性能,看下面这张图,一起了解一下String对象的优化过程。 1...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。