JavaDay5(String及其API)

API:应用程序编程接口

别人写好一些类,可以直接拿去调用解决问题

已学例子

Scanner 键盘录入

Random 随机数

API帮助文档

使用流程

  • 索引处搜索所需类

  • 看包

    若是Java.lang包,不需要编写导包代码(import);若不是则都需要编写导包代码

  • 看介绍

    搞清楚类的作用

  • 看构造方法

    创造该类对象

  • 看这个类的成员方法

Scanner键盘录入

String next():遇到空格,或tab就不再录入

String nextLine():以回车作为结束标记

当nextLine之前调用过nextInt(),nextDoubLe(), nextFloat(),会接收到它们工作完剩余的回车导致直接结束接收工作

请添加图片描述

String类

特点

  1. 所以双引号字符串,都是String类的对象
  2. 字符串一旦被创建就不可更改,内容不可改变,只能用新的对象(字符串)替换
  3. Sting字符串可以被共享
  • 字符串常量值 :使用双引号创建对象时,会查看常量值中是否存在该数据
  • 若存在:复用,使用同一个地址
  • 不存在:创建

常见构造方法

Stiring() 创建空白字符串

String(char[ ] chs):根据传入的字符数组,创建字符串对象

char[] chs ={"a","b","c"};
String s1 = new String(chs); //s1中即存储abc

String(Sting original):根据传入字符串,创建字符串对象

String s2 = new String("abc");//若字符串常量值中存在,则将其字节码拷贝到新地址

字符串对象的两种创建方式

  1. 双引号直接创建:在StringTable中开辟内存

  2. 通过构造方法:在堆内存中开辟内存

    字符串面试题

请添加图片描述

请添加图片描述

public class StringTest1 {
	public static void main(String[] args) {
		String s1 = "abc";
		String s2 = "a"+ "b"+ "c";
		System. out . println(s1 == s2);
	}
}

输出结果为ture,java中的常量优化机制使s2在字节码中就是"abc"

字符串比较

s1.equals(s2);//用于比较s1和s2的内容
s1.equalsIgnoreCase(s2)//比较s1和s2且不考虑大小写
    

字符串的遍历

char[] chars=s1.toCharArray();//将字符串转化为字符数组
for(int i=0;i<cahrs.length;i++){
    System.out.println(cahrs[i]);
}

for(int i=0;i<s.length();i++){
    char c=s.charAt(i)//将字符串转化为数组且根据索引i输出对应字符
       System.out.println(c)
}  //该循环实现了对字符串的遍历输出


字符串截取

public String substring(int beginIndex) //根据传入的索引开始做截取,截取到字符串的末尾
public String substring(int beginIndex, int endIndex) //分别以传入索引做开头和结尾截取字符串(包含头不包含尾)

字符串替换

public String repLace (CharSequence target, CharSequence repLacement);
s2=s1.replace("***","...")//将s1中的***替换为...

字符串切割

public String[] split(Sting regex);//根据传入的字符串作为规则,切割当前字符串
String s="192,168,1,1"
String[] sArr = s.split(",");//sArr数组中存储了192 168 1 1
         //使用"."+"等时需使用//做标注-->"//."

StringBuilder 类引入

作用:提高字符串的操作效率

特点

  1. 可变的字符序列(不断扩充)
  2. 字符串缓冲区,可以储存任意数据类型,进入容器后全部变成字符串

构造方法

public StringBuilder();
//创建一个空的字符串缓冲区(容器)

public StringBuilder(String str);
//创建一个字符串缓冲区, 并初始化好指定的参数内容

常用成员方法

public StringBuilder append (任意类型);//添加数据,并返回对象本身(可以用同类型变量接收返回值)
sb. append("红色") . append("绿色") . append("蓝色") . append("a") . append("b") .append("c");| //链式编程:调用的方法,返回的结果是对象,就可以继续向下调用方法

public StringBuilder reverse();//反转容器中的内容并将其返回

public int length();//返回长度(字符出现的个数)

public String toString();//通过toString()就可以实现把StringBuilder转换为String(返回字符串)

案例

需求:键盘接受一个字符串,程序判断出该字符串是否是对称字符串(回文字符中),并在控制台打印是或不是
对称字符串: 123321. 111
非对称字符串: 123123

String —> StringBuilder
String s = “abc”;
StringBuilder sb = new StringBuilder(s);
StringBuilder —> String
String s = sb.toString();

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System. out . println("请输入- - 个对称字符串: ");
	String content = sc.nextLine();
    
	//将String转换为StringBuilder,为了调用内部反转的方法
	StringBuilder sb = new StringBuilder (content) ;
	sb. reverse();
    
	//判断反转后的内容,和原数据是否相同
	// content : String类型
	// sb : StringBuilder类型
	if (content . equals(sb. toString()) {
		System. out . printLn("是对称字符串");
	} else {
		System. out. printLn("不是对称字符串");
	}
}
}

请添加图片描述

补充:StringBuilder对于对线程是不安全的(效率高),StringBuffer对于多线程是安全的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LU-Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值