一篇文章带您了解java的API-String

ops/2025/2/21 16:51:05/

1.为什么要学习字符串的处理?

在开发中需要大量的使用字符串,比如登录注册,留言之类的。

根据java的api文档中可知,String类表示字符串,java中的所有字符串都实现为此类的实例。

字符串是不变的,他们的值在创建后无法修改,字符串缓冲区支持可变字符串。因为String对象是不可变的,所以可以共享他们。

2.创建String对象,封装要处理字符串的两种方式、

2.1直接双引号得到字符串对象,封装字符串数据。

java">package com.web.java_api;public class demo1 {public static void main(String[] args) {//直接使用双引号得到字符串对象,封装字符串数据String name ="使用双引号得到字符串对象";System.out.println(name);}
}

输出结果:

使用双引号得到字符串对象

2.1.1 那既然”使用双引号得到字符串对象"是对象,那么那么存储的应该是对象的值呀?为什么打印的是值呢?

因为字符串做了一些改进,他会根据 里面的地址去找到内容打印出来。

2.2调用String类的构造器初始化字符串对象

java">package com.web.java_api;public class demo1 {public static void main(String[] args) {//直接使用双引号得到字符串对象,封装字符串数据String name = "使用双引号得到字符串对象";System.out.println(name);//new String 创建字符串对象,并且调用构造器初始化字符串//创建一个空白字符串对象,不含任何问题String s = new String();System.out.println(s);//这种方式不常用,也不推荐,他是根据字符串的内容,来创建对象String s1 = new String("好的");System.out.println(s1);//根据字符数组的内容,来创建字符串对象char[] chars = {'a', 'b', 'c', '您', '好'};String s2 = new String(chars);System.out.println(s2);//根据字节数组的内容,来创建字符串对象byte[] bytes = {97, 98, 99};String s3 = new String(bytes);System.out.println(s3);}
}

使用双引号得到字符串对象

好的
abc您好
aab

3.字符串是什么?

可以用来创建对象封装的字符串数据,并且对其进行处理。

4.String常用的方法

方法名说明
public int length()获取字符串的长度返回(就是字符个数)
public char charAt(int index)获取某个索引位置值的字符放回
public char[] toCharArray()获取当前字符串转换成字符数组返回
public boolean equals(Object,anObject)判断当前字符串与另一个字符串的内容,一样返回true
public boolean equalsIgnoreCase(String anotherString)判断当前字符串与另一个字符串的内容是否一样(忽略大小写)
public String substring (int beginIndex,int endIndex)根据开始和结束的索引进行截取,得到新的字符串(包前不包后)
public String substring (int beginIndex)从传入的索引开始截取,截取到末尾,得到新的字符串
public String replace(charSequence target,CharSequence replacement)使用新值,将字符串中的旧值替换,得到新的字符串
public boolean contains(CharSequence s)判断字符串中是否包含了某个字符串
public boolean startWith(String prefix)判断字符串是否以某个字符串内容开头,开头则返回true
public String[] split(String regex)把字符串按照某个字符串内容分割,并返回字符串数组回来

5.获取字符串的长度length

java">package com.web.java_api;public class demo2 {public static void main(String[] args) {String name = "hello javaApi";//获取字符串的长度System.out.println(name.length());}
}

6.提取字符串中某个索引位置处的字符 charAt

java">package com.web.java_api;public class demo3 {public static void main(String[] args) {//提取字符串中某个索引位置处的字符String name = "提取字符串中某个索引位置处的字符";char c = name.charAt(1);System.out.println(c);}
}
//取

7.字符串的遍历

java">package com.web.java_api;public class demo4 {public static void main(String[] args) {String name = "字符串的遍历";for (int i = 0; i < name.length(); i++) {//当中 i =0 1 2 3 4 5 6 ....char c = name.charAt(i);System.out.println(c);}}
}






8.把字符串转换成一个字符数组 toCharArray

java">package com.web.java_api;public class demo5 {public static void main(String[] args) {//把字符串转换成一个字符数组 再进行遍历String name = "把字符串转换成一个字符数组";char[] charArray = name.toCharArray();for (int i = 0; i < charArray.length; i++) {System.out.println(charArray[i]);}}
}

 把











9.判断字符串内容是否相同equals

java">package com.web.java_api;public class demo6 {public static void main(String[] args) {String name = "判断字符串内容是否相同";String ename = "判断字符串内容是否";String qname ="判断字符串内容是否相同";if (name.equals(ename)) {System.out.println("内容一样");} else {System.out.println("内容不一样");}if (name.equals(qname)) {System.out.println("内容一样");} else {System.out.println("内容不一样");}}
}

10.忽略大小写比较字符串内容equalsIgnoreCase

java">package com.web.java_api;public class demo7 {public static void main(String[] args) {//忽略大小写比较字符串内容//常常是用来比较验证码String code = "34AdBf";String ucode = "34aDbF";if(code.equalsIgnoreCase(ucode)){System.out.println("验证码正确");}else {System.out.println("验证码错误");}}
}
//验证码正确

11.字符串截取substring

java">package com.web.java_api;public class demo8 {public static void main(String[] args) {//截取字符串内容String name = "截取字符串内容";String substring = name.substring(0, 5);System.out.println(substring);String substring1 = name.substring(5);System.out.println(substring1);}
}
//截取字符串
//内容

12.把字符串中的某个内容替换成新内容,并且返回新的字符串对象给我们replace

java">package com.web.java_api;public class demo9 {public static void main(String[] args) {String message = "你打游戏真的垃圾,真的垃圾";String replace = message.replace("垃圾", "**");System.out.println(replace);}
}
//你打游戏真的**,真的**

13.判断字符串是否包含某个关键字contains

java">package com.web.java_api;public class demo10 {public static void main(String[] args) {//判断字符串中是否包含某个关键字String name = "判断字符串中是否包含某个关键字";boolean contains = name.contains("字符串");if (contains) {System.out.println("包含");} else {System.out.println("不包含");}boolean contains1 = name.contains("字符串s");if (contains1) {System.out.println("包含");} else {System.out.println("不包含");}}
}
//包含
//不包含

14.判断字符串有没有以某一个字符串开头startsWith

java">package com.web.java_api;public class demo11 {public static void main(String[] args) {String name = "张三";boolean startsWith = name.startsWith("张");if (startsWith) {System.out.println("是");} else {System.out.println("否");}}
}

15.把字符串按照指定内容分割成多个字符串,放到一个字符串数组中返回给我们split

java">package com.web.java_api;public class demo12 {public static void main(String[] args) {String name = "张三,李四,王五,赵六";String[] split = name.split(",");for (int i = 0; i < split.length; i++) {System.out.println(split[i]);}}
}//张三
//李四
//王五
//赵六

16 String使用时的注意事项

String对象的内容不可改变,也被称为不可变字符串对象。

但是我们在操作的时候会发现我们可以发现,我们是可以改变的呀?如代码所示

java">package com.web.java_api;public class demo13 {public static void main(String[] args) {String name = "张三";name += "程序员";name += "呀";System.out.println(name);}
}
//张三程序员呀

如代码所示,我们发现name指向的字符串对象改变了,那为何说String对象是不可变字符串对象?

因为只要是以""方式写出的字符串对象,会在堆内存中的字符串常量池中存储。

我们每次试图改变字符串对象内容实际上是产生新的字符串对象了,变量每次都是指向了新的字符串对象,之前字符串对象的内容确实是没有改变的,所以我们说String对象是不可变的。

通过new出来方式创建字符串对象,会存储到字符串常量池中,每new一次都会产生一个新的对象放在堆内存中。内容相同的时候,只会存储一次。这样做可以节约内存。

17.利用String学习的知识做一个用户登录功能

需求:正确的用户名和密码都是admin, 在控制台开发一个登录界面,接受用户输入的用户名和密码,判断用户是否登录成功,只有三次机会。

java">package com.web.java_api;import java.util.Scanner;public class demo14 {public static void main(String[] args) {for (int i = 3; i > 0; i--) {Scanner sc = new Scanner(System.in);System.out.println("------------进入到开发系统--------------");System.out.print("请您输入账号:");String loginName = sc.next();System.out.print("请你输入密码:");String password = sc.next();if (login(loginName, password)) {System.out.println("登录成功");return;} else {System.out.println("登录失败,还剩余" + (i - 1) + "次机会");}}}public static boolean login(String loginName, String password) {String okName = "admin";String okPassword = "admin";return (loginName.equals(okName) && password.equals(okPassword));}
}

注意:本篇文章是笔者的学习笔记,有因为笔者的能力有限,会出现一些笔者没有想到的问题,如果您在浏览或者阅读的时候发现了问题,还请您在评论区留言,笔者看到后会在第一时间解决,谢谢。


http://www.ppmy.cn/ops/18333.html

相关文章

数据分析:转录组分析-kallisto或salmon的RNA-seq流程

RNA-seq pipeline through kallisto or salmon kallisto 和salmon相比含有hisat2和STAR等软的RNA-seq流程而言&#xff0c;速度更快&#xff0c;这是因为该软件基于转录组序列reference&#xff08;也即是cDNA序列&#xff09;并且基于k mer比对原理。通常如果想研究RNA-seq过…

Unreal Engine子类化系统UButton

UE系统Button点击事件无法传递参数&#xff0c;通过子类化系统Button添加自定义参数扩展实现Button点击事件参数传递点击C类文件夹&#xff0c;在右边的区域点击鼠标右键&#xff0c;在弹出的菜单中选择“新建C类”在弹出的菜单中选中“显示所有类”&#xff0c;选择Button作为…

Unity和iOS 原生专题二 Unity和iOS原生交互相互传值的两个方案

一 、方案一 通过指针传值和使用 MonoPInvokeCallback 从C#层向C层注册回调函数 1.1 iOS调用Unity函数Unity 给iOS传值 第一步C#端 定义 C#调用 ios 原生函数标识 固定写法 /// <summary>/// 定义 C#调用 ios 原生函数标识 固定写法/// </summary>private const …

Nginx高级配置与重写规则详解:从入门到实践

摘要: 本文将深入探讨Nginx的高级配置与重写规则,通过实际案例讲解如何优化Nginx的配置,实现URL重写、负载均衡、缓存优化等功能。文章旨在帮助读者更好地理解和应用Nginx,提升网站性能和用户体验。 一、Nginx简介 Nginx是一款高性能的HTTP和反向代理服务器,也是IMAP/POP…

pyqt QSplitter控件

pyqt QSplitter控件 QSplitter控件效果代码 QSplitter控件 PyQt中的QSplitter控件是一个强大的布局管理器&#xff0c;它允许用户通过拖动边界来动态调整子控件的大小。这个控件对于创建灵活的、用户可定制的用户界面非常有用。 QSplitter控件可以水平或垂直地分割其包含的子…

Elasticsearch-使用bulk会掉数据?

先介绍一个参数 “cluster.routing.allocation.disk.watermark.flood_stage”&#xff1a;“95%” 这是Elasticsearch的默认参数值 官方文档&#xff08;7\8版本该参数功能相同&#xff09; https://www.elastic.co/guide/en/elasticsearch/reference/7.17/modules-cluster.htm…

什么是数据库事务,事物的四大特性(ACID)分别是什么?什么是脏读?幻读?不可重复读?

数据库事务及其四大特性&#xff08;ACID&#xff09;详解 在日常的开发工作中&#xff0c;我们经常会遇到需要确保数据一致性和完整性的场景&#xff0c;这时候&#xff0c;数据库事务就显得尤为重要。简单来说&#xff0c;数据库事务就是一组一起执行的数据库操作&#xff0…

一些RabbitMQ面试题

RabbitMQ是什么&#xff0c;它的主要用途是什么 RabbitMQ是一个开源的消息代理软件&#xff0c; 它实现了高级消息队列协议&#xff08;AMQP&#xff09;&#xff0c; 主要用于在分布式系统之间进行可靠的异步通信。 它的主要用途包括解耦系统组件、提高系统可扩展性、实现消息…