【前端学java】java中的字符串操作(10)

往期回顾:

  • 【前端学java】JAVA开发的依赖安装与环境配置 (0)
  • 【前端学 java】java的基础语法(1)
  • 【前端学java】JAVA中的packge与import(2)
  • 【前端学java】面向对象编程基础-类的使用 (3)
  • 【前端学java】类中的访问权限详解,通俗易懂(4)
  • 【前端学java】java中final修饰符(5)
  • 【前端学java】全网最通俗易懂的JAVA抽象概念(6)
  • 【前端学java】Java中的接口和枚举概念(7)
  • 【前端学java】java中的Object类(8)
  • 【前端学java】java 中的数组(9)

字符串的创建

同前端代码一样,java中的字符创建非常简单

public class Object_01 {
    public static void main(String[] args) {
        // 字符串创建
        String name = "shixiaoshi";
    }
}

java中字符串的创建是基于java.lang.String这个类的,这意味着,字符串的创建实际上是这样的

public class Object_01 {
    public static void main(String[] args) {
        // 字符串完成的创建方式
        String name = new String("shixiaoshi") ;
    }
}

实际开发中应该使用那种?

答案显而易见,使用双引号直接声明更方便快捷!

java虚拟机基于第一种创建方式有内部优化,所有相同的字符数据,其实来源于同一个字符串对象,这样就可以降低频繁的new String()带来的资源和内存消耗了。

public class Object_01 {
    public static void main(String[] args) {
        // 字符串完成的创建方式
        String name = new String("shixiaoshi") ;
        String name1 = new String("shixiaoshi") ;
        String name2 = "shixiaoshi";
        String name3 = "shixiaoshi";
        System.out.println(name == name1);   // false
        System.out.println(name1 == name2);  // false
        System.out.println(name2 == name3);  // true
    }
}

上述代码验证了通过new String创建完全相同的字符串,结果也是不同的字符对象;通“”直接创建的字符,结果是相同的。

字符串和字符是不相同的概念

要注意的是,字符串和字符是不一样的,比如字符串“8石f”,实际是由“8”、“石”、“f”三个字符组成的。

我们在来复习一下java中的基本数据单位概念。

基本数据单位

在Java中,最小的的数据单位是Byte,也就是字节类型,1 字母 = 1 byte ,一个汉字是一个字符,占两个字节。

之前的学习中,我们介绍了基本数据类型。每种数据类型的字节数都是不尽相同的,我们来复习一下:

整型数据类型(整数):

  • byte:1个字节,范围为-128到127
  • short:2个字节,范围为-32,768到32,767
  • int:4个字节,范围为-2,147,483,648到2,147,483,647
  • long:8个字节,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807

浮点型数据类型(小数):

  • float:4个字节,范围为±3.40282347E+38F(有效位数为6-7位)
  • double:8个字节,范围为±1.7976931348623157E+308(有效位数为15位)

字符型数据类型:

  • char:2个字节,表示一个Unicode字符

布尔型数据类型:

  • boolean:表示逻辑值,只能是true或false

现在,我们应该能清除的知道,“8石f” 这个字符串的构成了

字符串8石f
字符8f
字节1111

通过上述例子,我们也能明白,字符串实际就是一个特殊的字符数组拼接而成的。

通过字符数组创建字符串

public class Object_01 {
    public static void main(String[] args) {
        char[] name = {'石','小','石'};
        String names = new String(name);
        System.out.println(names);   // 石小石
    }
}

注意,char[] name = {‘石’,‘小’,‘石’} 代码中, 用的是单引号而不是双引号,使用双引号会报错。

java中的单引号表示字符,一般是char类型的;java中的双引号是字符串,是String类型的。

转义字符

我们如果想打印一个引号,该怎么做呢?

直接打印必然报错,我们只需要加一个转义字符即可!

public class Object_01 {
    public static void main(String[] args) {
        System.out.println(""");   // "
    }
}

字符串的操作

拼接

和前端一样,字符串的拼接可以直接用 + 号;其作用和前端的+用法效果是一致的。

String name = "shi" + "xiao" + "shi";

这种形式创建的字符等同于下面方式创建的字符

String name1 = "shixiaoshi";

这两种形式创建的字符其实完全一样

public class Object_01 {
    public static void main(String[] args) {
        // 拼接
        String name = "shi" + "xiao" + "shi";
        String name1 = "shixiaoshi";
        System.out.println(name.hashCode() == name1.hashCode()); // true
    }
}

hashCode方法用于返回对象的内存地址,因此可以判断两个字符对象相同。

比较

要比较两个字符串是否相同,可以用equals。

equals用于判断两个对象是否相等。默认情况下,equals()方法比较的是对象的引用是否相同(即是否指向同一个内存地址)。

public class Object_01 {
    public static void main(String[] args) {
        String a = "shi";
        String b = "shi";
        System.out.println(a.equals(b));    // true
    }
}

equals是区分大小写的

public class Object_01 {
    public static void main(String[] args) {
        String a = "shi";
        String b = "SHI";
        System.out.println(a.equals(b));  // fasle
    }
}

如果想忽略大小写,可以用equalsIgnoreCase

截断

substring

java中的字符截断方法substring和前端的字符截断方法substring也是一致的

public class Object_01 {
    public static void main(String[] args) {
        String java = "hello world";
        System.out.println(java.substring(0,5));   // hello
    }
}


       for (int i=0;i < s.length;i++){
           System.out.println(s[i]);
       }

split

splitf方法将一个字符分隔成数组,和前端用法也是一致的

trim

trim() 方法用于删除字符串的头尾空白符。这和前端中的trim方法用法也是一样的

public class Object_01 {
    public static void main(String[] args) {
        String a = " hello world ";
        System.out.println(a.trim());
    }
}

替换

repalce

replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串。

public String replace(char oldChar,char newChar)

它的第一个参数只能是字符或字符串

public class Object_01 {
    public static void main(String[] args) {
        String a = "hello hello world";
        System.out.println(a.replace("hello","hi"));  // hi hi world
    }
}

注意,这和前端中的replace是有些区别的。前端中:replace用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

<script>
  var str = "Hello Hello World!";
let index = str.replace(/Hello/i, "hi");
console.log(index); // hi Hello World!
</script>

前后端replace区别

1、java中replace第一个参数只能是字符或者是字符串;而js可以是正则。

2、java中replace替换后,所有匹配到的字符都会变化;而js中,匹配的字符只会替换第一个。

replaceAll

replaceAll() 方法使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串。

语法

public String replaceAll(String regex, String replacement)

参数

  • regex – 匹配此字符串的正则表达式。
  • newChar – 用来替换每个匹配项的字符串。
public class Object_01 {
    public static void main(String[] args) {
        String a = "hello hello world";
        System.out.println(a.replaceAll("hello|world","hi"));  // hi hi hi
    }
}

js中的repalceAll用法和这个也是大同小异的

大小写转换

java中的字符大小写转换和前端是一致的

public class Object_01 {
    public static void main(String[] args) {
        String a = "Hello";
        System.out.println(a.toLowerCase()); // hello
        System.out.println(a.toUpperCase()); // HELLO
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

抖音电商双11官方数据最全汇总!

11月13日&#xff0c;抖音电商数据发布“抖音商城双11好物节”数据报告&#xff0c;展现双11期间平台全域经营情况及大众消费趋势。 报告显示&#xff0c;10月20日至11月11日&#xff0c;抖音电商里的直播间累计直播时长达到5827万小时&#xff0c;挂购物车的短视频播放了1697亿…

PEFT LoraConfig参数详解

参数高效微调 (PEFT) 可以使预训练模型高效适应下游应用&#xff0c;而无需微调所有模型参数。 PEFT 支持广泛使用的大型语言模型低秩适应 (LoRA)。 为了从预训练的 Transformer 模型创建 LoRA 模型&#xff0c;我们导入并设置 LoraConfig。 例如&#xff0c; from peft impo…

数据预处理pandas pd.json_normalize占用内存过大优化

问题描述 从ES下载数据&#xff0c;数据格式为json&#xff0c;然后由pandas进行解析&#xff0c;json中的嵌套字段会进行展开作为列名(由于维度初期无法预测&#xff0c;所以根据数据有啥列就使用啥列&#xff0c;这是最方便的点)&#xff0c;变成表格&#xff0c;方面了后续…

Proxmox download

Proxmox VE proxmox Virtual Environment是一个基于 QEMU/KVM 和 LXC 的开源服务器虚拟化管理解决方案。您可以使用集成的、易于使用的 Web 界面或通过 CLI 管理虚拟机、容器、高可用性集群、存储和网络。Proxmox VE 代码根据 GNU Affero 通用公共许可证第 3 版获得许可 Prox…

Vue typescript项目配置eslint+prettier

1.安装依赖 安装 eslint yarn add eslint --dev安装 eslint-plugin-vue yarn add eslint-plugin-vue --dev主要用于检查 Vue 文件语法 安装 prettier 及相关插件 yarn add prettier eslint-config-prettier eslint-plugin-prettier --dev安装 typescript 解析器、规则补充 …

Redis篇---第十一篇

系列文章目录 文章目录 系列文章目录前言一、说说Redis持久化机制二、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题三、热点数据和冷数据是什么前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

gzip 压缩优化大 XML 响应的处理方法

当处理大型XML响应时&#xff0c;我们经常会面临内存限制和性能问题。 在处理这个问题时&#xff0c;我们可以使用Python的requests库和lxml库来解决。下面是解决方案的步骤&#xff1a; 1. 使用requests库发送HTTP请求获取XML响应。 2. 检查响应的Content-Encoding标头&…

这篇文章带你了解:如何一次性将Centos中Mysql的数据快速导出!!!

目录 一.数据库导出 1.首先创建文件以.sql结尾的文件 2.打开名mysq的解压目录&#xff0c;导出数据 3.然后在查看即可 4 需要的软件 MobaXterm 一.数据库导出 1.首先创建文件以.sql结尾的文件 通过 touch ssm.sql &#xff08;小编&#xff09; 实际上&#xff1a…

提升办公效率,畅享多功能办公笔记软件Notion for Mac

在现代办公环境中&#xff0c;高效的笔记软件对于提高工作效率至关重要。而Notion for Mac作为一款全能的办公笔记软件&#xff0c;将成为你事业成功的得力助手。 Notion for Mac以其多功能和灵活性而脱颖而出。无论你是需要记录会议笔记、管理项目任务、制定流程指南&#xf…

以makefile的方式在linux上编译代码(小白级别)

作者&#xff1a;爱塔居 作者简介&#xff1a;大四学生&#xff0c;分享自己的学习片段~ 目录 前言 一、创建主要文件 二、makefile 前言 多有不足&#xff0c;以供参考&#xff0c;欢迎大佬们指点。我是在虚拟机上执行的&#xff0c;应该都一样。我用的VirtualBox&#xff0c;…

第十篇 基于JSP 技术的网上购书系统——管理员后台管理主界面、订单管理、产品管理功能实现(网上商城、仿淘宝、当当、亚马逊)

目录 1.管理员后台管理——主界面 1.1功能说明 1.2界面设计 1.3处理流程 2.订单管理 2.1功能说明 2.2界面设计 2.3处理流程 2.4数据来源和算法 2.4.1数据来源 2.4.2查询条件 2.4.3表间关系 2.4.4相关sql实例 3.产品管理 3.1功能说明 3.2界面设计 3.3处理流程…

IF:9.0+期刊被踢除,11月SCI/SSCI期刊目录已更新!

【SciencePub学术】2023年11月20日&#xff0c;科睿唯安更新了Web of Science核心期刊目录。 继上次SCI期刊目录和SSCI期刊目录更新之后&#xff0c;本次11月更新共有5本期刊发生变动&#xff1a; • SCIE&#xff1a;有5本期刊不再被SCIE期刊目录收录&#xff0c;1本SCIE期刊更…

漆包线行业你了解多少?

今天就说说漆包线行业&#xff0c;漆包线是工业电机&#xff08;包括电动机和发电机&#xff09;、变压器、电工仪表、电力及电子元器件、电动工具、家用电器、汽车电器等用来绕制电磁线圈的主要材料。 漆包线上游是铜杆行业&#xff0c;下游是各种消费终端&#xff0c;主要是电…

微信小程序从零到发布上线,手把手教学(附精选源码250套)

零基础开发&#xff0c;如何上线小程序源码&#xff1f; 1、微信开发者工具安装 电脑端下载并安装“微信开发者工具” | 附下载地址&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 2、登录微信开发者工具 打开运行微信开发者工具…

知识表示与知识图谱

目录 前言 一、知识与知识表示的概念 二、知识图谱 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如…

【LeetCode:2216. 美化数组的最少删除数 | 贪心】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

iCloud怎么备份照片?答案在这!(详细教程)

苹果公司推出的iCloud云服务是一个非常实用的功能。在我们使用苹果手机的时候&#xff0c;它可以帮助我们备份手机中的照片&#xff0c;以防止数据丢失。 但是&#xff0c;很多用户可能还不知道如何使用iCloud备份照片。icloud怎么备份照片&#xff1f;本文将为大家详细介绍使…

Zynq-Linux移植学习笔记之66- 国产ZYNQ通过裕太PHY8521连接国产交换芯片

1、背景介绍 ZYNQ通过裕太PHY 8521主要连接两种国产交换芯片&#xff0c;一种为盛科的CTC8096&#xff0c;另一种为32所的JEM5396。框图示意如下&#xff1a; 2、硬件状态确认 首先检查phy的模式&#xff0c;确认为SGMII_MAC-RGMII_PHY 可通过读出A001寄存器确认状态 读出来应…

UE5的TimeLine的理解

一直以来&#xff0c;我对动画的理解一直是这样的&#xff1a; 所谓动画&#xff0c;就是可导致可视化内容变化的参数和时间的对应关系。 我不能说这个观点现在过时了&#xff0c;只能说自己狭隘了。因为UE的TimeLine的设计理念真让人竖大拇指。 当我第一次看到TimeLine节点的…

光谱图像超分辨率综述

光谱图像超分辨率综述 简介 ​ 论文链接&#xff1a;A Review of Hyperspectral Image Super-Resolution Based on Deep Learning UpSample网络框架 1.Front-end Upsampling ​ 在Front-end上采样中&#xff0c;是首先扩大LR图像&#xff0c;然后通过卷积网络对放大图像进行…