字符串+API

本文详细介绍了Java API中的字符串处理,包括Scanner类的使用、String对象的特点与比较、字符串遍历与拼接。此外,还重点讲解了StringBuilder类的构造与方法,如添加、反转和链式编程,并展示了如何高效地使用StringBuilder进行字符串操作。
摘要由CSDN通过智能技术生成

API概述
应用程序编程接口。

java API:指的是JDK中提供的各种功能的Java类。这些类将底层的实现封装起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

Scanner类
完成输入操作。引入包:import java.util.Scanner

import java.util.Scanner;
Scanner sc=new Scanner(System.in);
string str=sc.nexrLine();
System.out.println(str);

各数据类型的输入格式:
在这里插入图片描述

String

在这里插入图片描述
字符串的特点:
1.字符串不可变,它们的值在创建后不能被更改。
2.虽然String的值是不可变的,但是它们可以被共享。
3.字符串效果上相当于字符数组(char[ ]),但是底层原理是字节数组(byte[ ])。

String构造方法
在这里插入图片描述
创建一个空白字符串对象:

String s1=new String();
//此时s1为空

根据字符数组的内容来创建字符串对象:

char[] c={'a','b','c'};
String s=new String(c);
System.out.println(s);
//输出:abc

根据字节数组的内容来创建字符串对象:

byte[] bys= {97,98,99};
String s2=new String(bys);
System.out.println(s2);

还有一种是直接赋值。建议使用这种方式。

String对象的特点
通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址不同。
在这里插入图片描述
当直接给字符串赋值时,若s1的内容与s2的内容相同,那么它们的地址也相同。
在这里插入图片描述
在这里插入图片描述
字符串的比较
使用==做比较:
1.基本类型:比较的是数据值是否相同。
2.引用类型:比较的是地址值是否相同。

字符串是对象,用==做比较的话是比较它们的地址。
若想比较内容是否相同,是通过equals()方法来实现的。
public boolean equals(Object anObject):将此字符串与指定对象进行比较。由于我们比较的是字符串对象,所以参数直接传递一个字符串。

package myday;
import java.util.Scanner;
public class MyDay {

	public static void main(String[] args) {
		String s1="aaa";
		String s2="bbbb";
		if(s1.equals(s2))
			System.out.println("yes");
		else
			System.out.println("no");
        //no
	}
}

遍历字符串
public char charAt(int index):返回指定索引处的char值,字符串的索引也是从0开始。
public int length():返回字符串长度。
在这里插入图片描述

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		String s="a12b";
		for(int i=0;i<s.length();i++)
			System.out.println(s.charAt(i));
		
	}

拼接字符串
在这里插入图片描述

	public static void main(String[] args) {
		int[] arr= {1,2,3};
		String s=arrayToString(arr);
		System.out.println(s);
	}
	
	public static String arrayToString(int[] arr) {
		String s1="";
		s1+='[';
		for(int i=0;i<arr.length;i++)
		{
			if(i==arr.length-1)
				s1+=arr[i];
			else
			{
				s1+=arr[i];
				s1+=',';
			}
		}
		s1+=']';
		return s1;
	}

字符串反转

	public static void main(String[] args) {
		String s="321";
		String s1=arrayToString(s);
		System.out.println(s1);
	}
	
	public static String arrayToString(String s) {
		String s1="";
		for(int i=s.length()-1;i>=0;i--)
		{
				s1+=s.charAt(i);
		}
		return s1;
	}

StringBuilder

在这里插入图片描述
为什么使用StringBuilder?
在这里插入图片描述
StringBuilder是一个可变的字符串类,可看做一个容器。这里的可变指的是StringBuild对象中的内容是可变的。
在这里插入图片描述
StringBuilder的构造方法
在这里插入图片描述

public static void main(String[] args) {
		StringBuilder s1=new StringBuilder();
		System.out.println("s1.length="+s1.length());
		StringBuilder s2=new StringBuilder("hello");
		System.out.println("s2="+s2);
		System.out.println("s2.length="+s2.length());
		//输出
		//s1.length=0
        //s2=hello
        //s2.length=5
	}

StringBuilder的添加和反转方法
在这里插入图片描述

	public static void main(String[] args) {
		StringBuilder s1=new StringBuilder("nih");
		StringBuilder s2=s1.append("hello");
		System.out.println("s1="+s1);
		System.out.println("s2="+s2);
		System.out.println(s1==s2);
		//输出:s1=nihhello
        //     s2=nihhello
        //      true(说明s1和s2占的是同一块内存,所以值一样)
		
	}

因为append添加完数据会返回对象本身,所以也可以不用使用其他StringBuilder类型的变量来接收。

	public static void main(String[] args) {
		StringBuilder s1=new StringBuilder();
		s1.append("111");
		s1.append("222");
		s1.append("333");
		System.out.println(s1);
		//111222333		
	}

既然append可以返回对象本身,那么可以有链式编程,进行一次append后还是对象,接着进行append操作。

	public static void main(String[] args) {
		StringBuilder s1=new StringBuilder();
		//链式编程
		s1.append("111").append("222").append("333");
		System.out.println(s1);
		//反转字符串
		s1.reverse();
		//333222111
	}

StringBuilder和String相互转换

StringBuilder转换为String:
public String toString():通过toString()就可以实现把StringBuilder转换为String。

StringBuilder s1=new StringBuilder("111");
String s=s1.toString();
System.out.println(s);
//111
//直接使用String s=s1;是错误的

String转换为StringBuilder :
public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder。

	public static void main(String[] args) {
		String s="aaa";
		StringBuilder s1=new StringBuilder(s);
		System.out.println(s1);
		//111
		//同样,StringBuilder s1=s也是错误的
	}

利用StringBuilder完成字符串拼接

	public static void main(String[] args) {
		int[] arr= {1,2,3};
		StringBuilder s=arrayToString(arr);
		System.out.println(s);
	}
	public static StringBuilder arrayToString(int[] arr) {
		StringBuilder s1=new StringBuilder();
		s1.append('[');
		for(int i=0;i<arr.length;i++)
		{
			if(i==arr.length-1)
				s1.append(arr[i]);
			else
			{
				s1.append(arr[i]);
				s1.append(',');
			}
		}
		s1.append(']');
		return s1;
		//[1,2,3]
	}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值