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

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

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

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

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

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

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

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类的构造器初始化字符串对象

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

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

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.字符串的遍历

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

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

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

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

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

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

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

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

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对象的内容不可改变,也被称为不可变字符串对象。

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

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, 在控制台开发一个登录界面,接受用户输入的用户名和密码,判断用户是否登录成功,只有三次机会。

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.hqwc.cn/news/650996.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【linux】匿名管道|进程池

1.进程为什么要通信&#xff1f; 进程也是需要某种协同的&#xff0c;所以如何协同的前提条件(通信) 通信数据的类别&#xff1a; 1.通知就绪的 2.单纯的数据 3.控制相关的信息 2.进程如何通信&#xff1f; 进程间通信&#xff0c;成本会高一点 进程间通信的前提&#xff0c;先…

全志ARM-网络链接

命令扫描周围的WIFI热点 nmcli dev wifi 命令接入网络 nmcli dev wifi connect &#xff08;WiFi名&#xff0c;不要有空格&#xff09;password (WiFi密码) 查看IP地址 ip addr show wlan0或ifconfig 出现successfully就连接成功了

C++:const成员和取地址操作符

目录 一、const成员 二、取地址及const取地址操作符重载 一、const成员 将const修饰的“成员函数”称之为const成员函数&#xff0c;const修饰类成员函数&#xff0c;实际修饰该成员函数 隐含的this指针&#xff0c;表明在该成员函数中不能对类的任何成员进行修改。 注&…

【算法基础实验】图论-深度优先搜索和深度优先路径

深度优先(DFS) 理论基础 深度优先搜索&#xff08;DFS, Depth-First Search&#xff09;是图和树的遍历算法中的一种&#xff0c;它从一个节点开始&#xff0c;沿着树的边走到尽可能深的分支&#xff0c;直到节点没有子节点为止&#xff0c;然后回溯继续搜索下一个分支。DFS …

超全面的软件测试面试题

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试技术面试题 1、什么是兼容性测试&#xff1f;兼容性测试侧…

公众号偷偷“干大事”,公众号“留言”功能已可直接开通

在微信公众号的运营过程中&#xff0c;许多运营者都面临着一个令人头疼的问题&#xff0c;那就是自2018年以后注册的微信公众号无法再自带留言功能。这一变化是根据微信官方的通知而实施的。具体来说&#xff0c;自2018年2月12日起&#xff0c;微信对新注册的公众号进行了调整&…

白平衡简介

文章目录 白平衡的概念白平衡的调节常见的白平衡模式 白平衡的概念 白平衡是指摄影、摄像和显示技术中的一项重要概念&#xff0c;用于调节图像中的白色或中性灰色的色彩&#xff0c;使其看起来在不同光源条件下都是准确的白色或灰色。白平衡的主要目的是确保图像的色彩准确性…

OSPF域间路由防环原则

1.域间路由防环原则 ①原则一 1&#xff09;为了避免区域间的环路&#xff0c;OSPF规定不同区域间的路由交互只能通过ABR实现。 2&#xff09;ABR是连接到骨干区域的&#xff0c;所以在区域设计上规定&#xff0c;所有非骨干区域都要连接到骨干区域。区 域间的通讯需要通…

公钥密码学Public-Key Cryptography

公钥或非对称密码学的发展是整个密码学历史上最伟大的&#xff0c;也许是唯一真正的革命。The development of public-key, or asymmetric, cryptography is the greatest and perhaps the only true revolution in the entire history of cryptography. 公钥算法基于数学函数…

visual studio python输出中文乱码问题

之前在网上搜了一大堆教程花费了我半天时间&#xff0c;发现都没解决我的问题 最终问了好几次gtp才解决了问题 所以制作了这期教程以防自己搞忘 1.首先先看问题我们这里输出“你好世界会直接出现乱码问题” 这是因为我们这里高级保存选项没有用UTF-8编码&#xff0c;把它改…

关于pdf.js中文本坐标尺寸的使用

一个电子教材项目中有这样一个需求&#xff1a; 用户向网站上传一个PDF书籍后&#xff0c;网站可以对PDF书籍进行解析&#xff0c;并支持用户对PDF书籍的每一页做一些操作&#xff0c;比如&#xff1a;为英语课本的单词和句子添加音频热区。因为热区数量很多&#xff0c;所以&a…

【算法】人工蜂群算法,解决多目标车间调度问题,柔性车间调度问题

文章目录 复现论文什么是柔性作业车间调度问题&#xff1f;数据处理ABC算法编码解码种群初始化雇佣蜂操作IPOX交叉多点交叉 观察蜂操作侦察蜂操作算法流程 结果程序截图问询、帮助 复现论文 什么是柔性作业车间调度问题&#xff1f; 也叫多目标车间调度问题。 柔性作业车间调…