java基础--字符串用法

news2024/9/30 1:39:50

一、前言(在java中字符串的重要性)

在 Java 编程中,字符串(String)的重要性不言而喻,它几乎贯穿于所有的应用程序和系统中。以下是 Java 中字符串重要性的几个方面:

1. 数据表示和处理

  • 文本数据:字符串是表示文本数据的主要方式。无论是用户输入、文件读取还是网络传输,文本数据通常都以字符串的形式存在。
  • 数据格式化:字符串用于格式化输出,如日志记录、用户界面显示等。

2. 用户交互

  • 输入输出:用户通过字符串与程序进行交互,输入数据和接收反馈。例如,命令行参数、表单输入、控制台输出等。
  • 错误信息:错误和异常信息通常以字符串形式呈现,帮助开发者调试和用户理解问题。

3. 数据存储和传输

  • 文件操作:读写文件时,文本内容通常以字符串形式处理。
  • 网络通信:在网络传输中,数据包和消息通常以字符串形式编码和解码。

4. 业务逻辑处理

  • 数据验证:字符串用于验证用户输入的格式和内容是否符合要求。
  • 数据转换:字符串与其他数据类型(如数字、日期)之间的转换是常见的业务需求。

二、String类的基础

1.创建String类的俩种方式:


 (1)直接创建,比较常用

 

package 字符串;

public class str1 {
    public static void main(String[] args) {
String s1="hello";
Systrm.out.println(s1);
    
        

    }
}

 这个是直接定义,在串池中开辟一块空间来存放s1,然后将“hello”存放到s1中。

(2)通过new方法构造 

package 字符串;

public class str1 {
    public static void main(String[] args) {
        String s1=new String();
        System.out.println("s"+s1+"2");

    }
}

 这个是new一个对象,获得的是一个空的字符串。

 

1、当然,这个new对象中也可以存放数组类型,并且打印出来。例如

package 字符串;

public class str1 {
    public static void main(String[] args) {
char [] arr={'a','b','c'};
String s1=new String(arr);
System.out.println(s1);


}}

以上打印的结果是abc。 

2、也可以是一个字节数组,根据字节数组的内容在创建一个新的数组。

package 字符串;



public class str1 {
    public static void main(String[] args) {
        byte [] arr={97,98,99};
        String s1=new String(arr);
        System.out.println(s1);


    }}

 代码的结果也是abc。这个是先去把97,98,99拿去更ASCII码表对应找到abc。

三、字符串在内存中到底是怎么创建的?

(1)直接创建的

 

 

栈:是跟方法有关的,方法运行时进栈,运行完成出栈。 

堆:new出来的对象全在堆里面。

方法区:程序在运行时,会先编码成class字节码文件,把这个字节码文件加载到方法区中,临时存储。

字符串池(串池):直接赋值的字符串,才存在这个串池中,如果是通过,new关键字创建的字符串就不在里面。

 

我们通过上面的一个例子:如果我们同时对s1和s2赋值“abc” ,当代码执行完s1时,会继续执行s2,但是在直接会在串池中搜索有没有abc,如果存在,那就0x0011传给s2。

1.总结:

在使用双引号直接赋值的时候,如果字符串在串池中存在,那就复用,如果不存在就重新创建一个。

(2) new关键字创建的

每一次new都会在堆中创建一个空间 ,但是s1和s2记录的地址值是不一样的。

2.总结:

以后建议使用第一种,比较节省内存,且容易创建。

四、java中字符串的使用(字符串的比较)

1.你真的知道“==”的用法吗?
 

 在java中==的用法是要分情况的:

1.如果是第一种:基本数据类型,那我们只要比较数值即可。

2.如果是第二种:引用数据类型,比较的是地址值。

2.那我不能比较内容吗?

显然当然是可以的

 

 

 一、equals的用法:比较全部的字符串,如果一样返回true不是返回false,可以做用户名和密码一致性校验。
package 字符串;



public class str1 {
    public static void main(String[] args) {
String s1=new String("abc");
String s2="abc";
blooean result=s1.equals(s2);
System.out.println(result);
//true





}}

 

 二、equalsIgnoreCase的用法,可以忽略大小写的问题,可以用来做验证码登录。

package 字符串;



public class str1 {
    public static void main(String[] args) {
String s1=new String("Abc");
String s2="abc";
blooean result=s1.equalsIgnoreCase(s2);
System.out.println(result);
//true





}}

问题1:如果键盘输入一个字符串abc和自己定义一个abc,判断是不是true还是false。

package 字符串;


import java.util.Scanner;

public class str1 {
    public static void main(String[] args) {

        //键盘输入一个字符串“abc”、
        Scanner sc=new Scanner(System.in);
        System.out.println("亲输入一个字符串:");
        String  res=sc.next();

        //代码定义一个字符串“abc”
        String  s1="abc";
        //==判断是不是true还是false
        System.out.println(s1==res);


    }}

 

显然,这个结果是false。那为什么会是false呢?

五、初步阅读输入函数中 String res=sc.next()源码来解决问题:

按住ctrl+鼠标点击next();

 

在点这个,进去看看。 

找到s,在进入group看一下 

这里又吊用了group(0) ,在点进去看一下--------------

在进入到getSubSequence里面 

 

 

点击String类,到这一步。 

 进入到substring里面

 

 在点击new.String里面你就会看到

总结:通过千辛万苦我们得知,这个键盘输入的值是通过new方式创建的所以你应该可以理解为什么上面的比较是false了吧!

六、总结

今天主要介绍string的创建的两种方式,了解一下java中内存模型,明天我在继续解释java字符串操作中,翻转和切片索引以及StringBuild和Stringjion的用法。

通过本文的探讨,我们深入了解了Java字符串的重要性及其在编程中的广泛应用。希望这些知识能帮助您在未来的开发工作中更加得心应手。如果您觉得本文对您有帮助,不妨尝试将这些技巧应用到您的下一个项目中,并分享您的成果。您的实践经验将是对我们最大的鼓励。感谢您抽出宝贵的时间阅读本文。如果您有任何问题或建议,欢迎随时联系我们。期待与您在技术的道路上共同进步。敬请关注我们下一期的博客,我们将探讨更多关于Java性能优化的实用技巧和案例分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用PXE和kickstart完成自动化批量主机的安装

本实验采用的版本为rhel7.9 kickstart: 首先写一个kickstart脚本 安装脚本工具 配置自动化脚本 下载http服务用来共享脚本 yum install httpd -y systemctl enable httpd --now 实验的过程中把防火墙和selinux都关闭 配置自动化脚本 创建一个软链接使得用户访…

集团ERP信息化项目实施方案(可编辑82页PPT)

引言:在当前信息化快速发展的时代,集团企业面临着日益增长的业务复杂性和数据管理挑战。为了提升集团的整体运营效率、加强数据集成与共享、优化业务流程,我们决定实施ERP(企业资源计划)信息化项目。 方案介绍&#x…

最新口型同步技术EchoMimic部署

EchoMimic是由蚂蚁集团推出的一个 AI 驱动的口型同步技术项目,能够通过人像面部特征和音频来帮助人物“对口型”,生成逼真的动态肖像视频。 EchoMimic的技术亮点在于其创新的动画生成方法,它不仅能够通过音频和面部关键点单独驱动图像动画&a…

翻译: 可视化深度学习反向传播原理二

顺便一提 这有一点点像描述生物中 神经元的网络如何学习的一个理论 “赫布理论” 总结起来就是“一同激活的神经元关联在一起” 这里 权重的最大增长 即连接变得更强的部分 就会发生在已经最活跃的神经元 和想要更多激发的神经元之间 可以说 看见一个“2”时激发的神经元 会和…

【Git】git 不跟踪和gitignore区别

文章目录 不跟踪(Untracked):.gitignore 文件:总结 在 Git 中,不跟踪(untracked)和 .gitignore 文件有不同的作用和用途: 不跟踪(Untracked): 不…

【Material-UI】Autocomplete中的高亮功能(Highlights)详解

文章目录 一、简介二、实现高亮功能示例代码代码解释 三、实际应用场景1. 搜索功能2. 表单自动完成 四、总结 在现代Web开发中,提供清晰的用户反馈是提升用户体验的重要组成部分。Material-UI的Autocomplete组件通过高亮功能,帮助用户快速识别搜索结果中…

Javaweb项目|ssm基于ssm的宠物医院管理系统的设计与实现vue

收藏点赞不迷路 关注作者有好处 文末获取源码 一、系统展示 二、万字文档展示 基于ssm基于ssm的宠物医院管理系统的设计与实现vue 开发语言:Java 数据库:MySQL 技术:SpringSpringMVCMyBatisVue 工具:IDEA/Ecilpse、Navicat、Ma…

Java线程池的核心参数与工作原理

Java线程池的核心参数与工作原理 1、线程池工作原理2、核心参数 💖The Begin💖点点关注,收藏不迷路💖 1、线程池工作原理 Java的ThreadPoolExecutor是线程池的核心实现,负责管理一组线程以异步方式执行提交的任务。其…

keil编译报错error:#8:missing closing quote 处理

MDK5采用UTF-8,提示很多个这样的error:#8:missing closing quote 的错误信息。提供以下几种方式解决: 在KEIL中Options for Target Flash -> C/C -> Misc Controls添加“--localeenglish”。

AI智能名片小程序在促销性内容营销中的创新应用与策略分析

摘要:在数字化时代,企业营销手段日益丰富多元,促销性内容作为吸引顾客、促进消费的关键手段之一,其形式与效率不断被革新。随着人工智能(AI)技术的飞速发展,AI智能名片小程序作为一种新兴的营销…

React(四):DOCX文件在线预览

效果 注意 ⚠️注意:部分文件预览存在问题 依赖 $ yarn add docx-preview $ yarn add jszip源码 import ./index.scss; import {useRef} from react; import type {UploadRequestOption} from rc-upload/lib/interface; import {Upload, Button, message} from an…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 会议室占用时间(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题…

力扣-46.全排列

刷力扣热题–第二十六天:46.全排列 新手第二十六天 奋战敲代码,持之以恒,见证成长 1.题目简介 2.题目解答 这道题目想了会,思路比较好想,但一直没调试成功,所以就参考了力扣官网的代码,积累一下回溯算法的实现和基本实现思路,即先试探后回溯,结果在下面…

R语言中的宽长数据转换:tidyr包的使用指南

在数据分析中,数据的存储方式直接影响分析过程的效率和准确性。常见的数据存储形式有宽型数据(wide format)和长型数据(long format)。宽型数据适合人类查看和理解,而长型数据则更适合计算机处理和分析。为…

AI生成PPT?三款工具让总结更轻松

哎呀,职场新人们,你们是不是也跟我一样,刚开始做PPT的时候,感觉像是走进了一个大迷宫,脑袋里装满了想法,但就是不知道怎么把它们变成一页页漂亮的幻灯片?别急,今天咱们就来聊聊三个超…

JavaEE-多线程编程阻塞队列

目录 生产者消费者模型 生产者消费者模型优势 通过代码看一下生产者消费者模型(使用阻塞队列) 自己实现阻塞队列 之前在数据结构中学的队列是最基础的队列,在实际开发中针对队列还有很多形式:(1)普通队…

PyCharm | PyCharm中创建带有注释的py文件

文章目录 0 问题引入1 问题解决1.1 在Pycharm里进行设置1.2 模板1.3 可选参数 2 效果展示 0 问题引入 想要创建带注释的py文件,该如何解决呢? 1 问题解决 1.1 在Pycharm里进行设置 打开Pycharm的Seetings按照如图所示来操作 1.2 模板 # -*- codin…

【大模型从入门到精通3】openAI api的入门介绍3

这里写目录标题 理论问题实践问题任务 1: 基本的 API 请求任务 2: 安全处理 API 密钥任务 3: 解释 API 响应任务 4: 强大的错误处理任务 5: 交互式聊天界面任务 6: 响应后处理任务 7: 动态内容生成任务 8: 优化与监控 理论问题 整合OpenAI的API到应用中为机器学习工程师、数据…

python运行js之execjs基本使用

python运行js之execjs基本使用 现在大部分网站都使用JS加密和JS加载的情况,数据并不能直接被抓取出来,这时候就需要使用第三方类库来执行JS语句。 官网:https://pypi.org/project/PyExecJS/ 使用前提:电脑需要安装 Node.js 一、安…

20240805 每日AI必读资讯

世界首例!AI机器人做牙科手术,8倍速诊疗比人类医生更精准 - Perceptive:让人工智能控制的自主机器人,首次对人类患者进行了全过程的牙科手术,速度大约是人类牙医的8倍。 - 两项新技术 1、OCT 3D成像系统:…