当前位置: 首页 > news >正文

Java学习笔记——字符/字符串

在  Java 语言中,字符串都被设计成「不可变」的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现

StringBuilder

字符

字符是用单引号括起来的单个字母,在Java中,表示字符的数据类型为char。一个字符在内存中占16位大小的空间(2个字节)。在编写程序的多数时候,使用字符值,通常会使用原始的char类型。例如:

char ch ='a';                            //创建一个名为ch的字符并赋值
char uniChar='\u039a';                   //创建大写的希腊omega字符的Unicode编码
char [] charArray={'h','e','l','l','o'}; //创建一个字符的数组charArray并赋值
char sex='男';                            //创建一个名为sex的字符并赋值

Character类

在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类,提供了一个“包装(wrapper)器”类,用来将char类型的字符“包装”为一个Character对象。可以使用Character构造器创建一个Character对象,例如:

Character sex=new Character('男');

Java编译器会根据需要自动创建一个Character对象。将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱

Character ch = 'a';    // 原始字符 'a' 装箱到 Character 对象 ch 中
char c= test('x');     //原始的'x'被装箱用于方法test,返回值被拆箱为字符'c'

字符串

字符串(String)是用一对双引号括起来的零个或多个字符组成的有限序列。在Java中,字符串被当作对象来处理。

程序中需要用到的字符串可以分为两大类:

String类:创建之后不会再做修改和变动的字符串常量;
StringBuffer类:创建之后允许再做更改和变化的字符串变量。
串的两种最基本的存储方式是顺序存储方式和链接存储方式。

String类字符串

字符串变量必须赋值后才可以使用,这称为字符串对象初始化。

字符串的创建和赋值的方式有三种:

String 字符串变量名;
字符串变量名="字符串常量";
String username="";
username="Tom"或者String 字符串变量名="字符串常量";
String SayHello="Hello world";或者String studentName=new String("周杰杰");

String对象的创建:

1、利用构造器:

String s=new String("Hello world");

2、直接创建:

String s="Hello world";

   代码1中局部变量sa,sb中存储的是JVM在堆中new出来的两个String对象的内存地址。虽然这两个String对象的值(char[]存放的字符序列)都是"Hello world"。 因此"=="比较的是两个不同的堆地址。代码2中局部变量sc,sd中存储的也是地址,但却都是常量池中"Hello world"指向的堆的唯一的那个拘留字符串对象的地址 。自然相等了。

//代码1  
String sa=new String("Hello world");            
String sb=new String("Hello world");      
System.out.println(sa==sb);  // false       
//代码2    
String sc="Hello world";    
String sd="Hello world";  
System.out.println(sc==sd);  // true   

字符数组转换为字符串

public class myfirst {public static void main(String[] args) {char []helloArray= {'h','e','l','l','o'};   //声明一个字符数组String helloString=new String(helloArray);  //将字符数组作为构造函数的参数System.out.println(helloString);}
}

字符串转换为字符数组

public class myfirst {public static void main(String[] args) {String helloString ="hello";        //声明一个字符串变量并赋值char []helloArray=helloString.toCharArray(); //进行字符串和字符数组的转换for(int i=0;i<helloArray.length;i++) {       //for循环输出字符数组System.out.print(helloArray[i]+" ");}}
}

相关文章:

Java学习笔记——字符/字符串

在 Java 语言中&#xff0c;字符串都被设计成「不可变」的类型&#xff0c;即无法直接修改字符串的某一位字符&#xff0c;需要新建一个字符串实现 StringBuilder 字符 字符是用单引号括起来的单个字母&#xff0c;在Java中&#xff0c;表示字符的数据类型为char。一个字符…...

数据结构与算法基础-(1)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…...

华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 STREAM 深度测评华为云云耀云服务器L实例的内存性能

本文收录在专栏&#xff1a;#云计算入门与实践 - 华为云 专栏中&#xff0c;本系列博文还在更新中 相关华为云云耀云服务器L实例评测文章列表如下&#xff1a; 华为云云耀云服务器L实例评测 | 从零开始&#xff1a;云耀云服务器L实例的全面使用解析指南华为云云耀云服务器L实…...

Windows安装Neo4j

图数据库概述 图数据库是基于图论实现的一种NoSQL数据库&#xff0c;其数据存储结构和数据查询方式都是以图论&#xff08;它以图为研究对象图论中的图是由若干给定的点及连接两点的线所构成的图形&#xff09;为基础的&#xff0c; 图数据库主要用于存储更多的连接数据。 Neo…...

vue3开发必备核心要点

1、route/router的区别 ● $route 表示当前激活的路由的状态信息&#xff0c;包含了当前URL解析得到的信息&#xff0c;包含当前的path路径&#xff0c;params参数&#xff0c;query对象&#xff0c;name路径名等属性 ● r o u t e r 路由器对象&#xff08; n e w 的路由器对…...

针对敏感数据的安全转录服务

即便在新冠肺炎疫情期间&#xff0c;继续保持了最高级别的机密性 新冠肺炎疫情带来的各种限制向所有服务提供商提出了挑战&#xff0c;促使提供商们想方设法采取更富想象力的新方法来满足客户的需求。澳鹏采用了一种由两种方案组成的工作机制&#xff0c;服务于客户机密材料的…...

leetcode 10. 正则表达式匹配

2023.9.20 感觉是目前做过dp题里最难的一题了... 本题首要的就是需要理解题意&#xff0c;翻了评论区我才发现之前一直理解的题意是错的。 我原来理解的 “ *匹配0次” 是指&#xff1a;*直接消失&#xff0c;不会影响到前面的字符。 但是*和前一个字符其实是连体的&#xff0…...

Vue前端开发中的输入限制与输入规则探究

前言 在Vue前端开发中&#xff0c;我们经常需要对用户的输入进行限制和规范&#xff0c;以确保数据的准确性和安全性。本文将介绍如何使用Vue的el-input组件来实现输入限制和输入规则&#xff0c;并提供相应的代码示例。 一、输入限制 最大长度限制 我们可以使用maxlength属…...

自己封装 vue3+ts 组件库并且发布到 NPM

自己封装 vue3ts 组件库并且发布到 NPM 创建项目 pnpm create vite配置 package.json 按照提示创建好项目&#xff0c;然后再 package.json 中进行如下配置&#xff1a; {"name": "tribiani-vue-tools","private": false,"version"…...

MySQL学习系列(6)-每天学习10个知识

目录 1. 管理和维护大量的数据库表和数据2. 检测和修复MySQL性能瓶颈3. MySQL的视图缓存4. 处理MySQL并发问题5. 函数索引和全文索引6. UNION ALL 和 UNION 的区别7. 存储引擎的选择8. 存储过程和触发器9. 数据表管理和优化10. 数据库安全性和一致性 &#x1f44d; 点赞&#x…...

“毛细血管”的进化:华为分销业务如何让伙伴也有“高能级”

作者 | 曾响铃 文 | 响铃说 数字化蓬勃发展的大时代&#xff0c;除了那些中、大型企业&#xff0c;数量更为庞大的小微企业同样有借助数字化产品、服务来提升企业经营的需求&#xff0c;由此也带来了广袤的数字化分销市场。 这里处在聚光灯之外&#xff0c;很少被数字化时代…...

警惕!多本SCI/SSCI被剔除,9月SCI/SSCI期刊目录已更新~(附下载)

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

一点整理

&#xff08;1&#xff09; 美国在2010年以后开始流行数字化转型的。 在2010年以前&#xff0c; 2006年社交网络FB “YOU”&#xff1a;在2004-2006 Web2.0热之前&#xff0c;企业是无法直接触达到每个消费者的2006年Amazon电子商务&#xff1a;这个是我瞎凑的&#xff0c;但因…...

Vulnhub系列靶机---Deathnote: 1死亡笔记

文章目录 信息收集主机发现端口扫描目录扫描dirsearchgobusterdirb扫描 漏洞利用wpscan扫描Hydra爆破 总结 靶机文档&#xff1a;Deathnote: 1 下载地址&#xff1a;Download (Mirror) 难易程度&#xff1a;so Easy 信息收集 主机发现 端口扫描 访问靶机的80端口&#xff0c;报…...

从基础到高阶:史上最小白的Attention机制详解——揭秘人工智能中的核心技术

1. Encoder-Decoder 想象一下你正在和一个会说多种语言的朋友对话。你用中文对他说了一句话&#xff0c;他将其“编码”成他的“内部语言”&#xff0c;然后再“解码”成英语给你回复。在这个过程中&#xff0c;“编码”就是Encoder&#xff0c;而“解码”就是Decoder。 在机…...

9.20金融科技(比特币)

​ 比特币的起源和发展 2008年爆发全球金融危机&#xff0c;同年11月1日&#xff0c;一个自称中本聪&#xff08;Satoshi Nakamoto&#xff09;的人在P2P foundation网站上发布了比特币白皮书《比特币&#xff1a;一种点对点的电子现金系 &#xff0c;陈述了他对电子货币的新设…...

什么是内存碎片?

在嵌入式系统中&#xff0c;内存是十分有限而且是十分珍贵的&#xff0c;用一块内存就少了一块内存&#xff0c;而在分配中随着内存不断被分配和释放&#xff0c;整个系统内存区域会产生越来越多的碎片。 因为在使用过程中&#xff0c;申请了一些内存&#xff0c;其中一些释放…...

C语言堆排序

堆排序&#xff08;Heapsort&#xff09;是一种在时间复杂度上达到了最优的基于比较的排序算法。堆排序算法是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子节点的键值或索引总是小于&#xff0…...

【学习笔记】CF573E Bear and Bowling

感觉贪心的做法比较自然&#x1f914;&#xff0c;推荐 这篇博客 非常经典牛逼的贪心思路&#xff1a; 考虑每次加入一个数&#xff0c;位置 i i i的贡献为 V i k i a i b i V_ik_i\times a_ib_i Vi​ki​ai​bi​&#xff0c;其中 k i k_i ki​表示 i i i以前被选的位置的…...

函数扩展之——内存函数

前言&#xff1a;小伙伴们又见面啦。 本篇文章&#xff0c;我们将讲解C语言中比较重要且常用的内存函数&#xff0c;并尝试模拟实现它们的功能。 让我们一起来学习叭。 目录 一.什么是内存函数 二.内存函数有哪些 1.memcpy &#xff08;1&#xff09;库函数memcpy &…...

人流后怎么吃恢复快?科学修护与饮食指南

引言&#xff1a;人流手术作为常见的妇科微创操作&#xff0c;术后身体修护与饮食调理直接影响恢复效果&#xff0c;也是女性关注的核心问题。不少女性在术后陷入“盲目食补”的误区&#xff0c;忽视了生殖系统损伤的精准修护&#xff0c;导致恢复周期延长、并发症风险升高。本…...

OpenClaw+GLM-4.7-Flash:研究者的文献收集与分析助手

OpenClawGLM-4.7-Flash&#xff1a;研究者的文献收集与分析助手 1. 为什么需要自动化文献助手 作为一名经常需要查阅大量文献的研究者&#xff0c;我过去每天要花费数小时在不同学术平台间切换——从arXiv到PubMed&#xff0c;再到学校图书馆的订阅期刊。最痛苦的不是阅读本身…...

用Python+OpenCV实现双目相机三维重建:从标定到triangulatePoints的完整流程

PythonOpenCV双目三维重建实战&#xff1a;从标定到点云生成的完整指南 当你第一次看到双目相机生成的彩色点云在屏幕上缓缓旋转时&#xff0c;那种震撼感难以言表。两个普通的USB摄像头&#xff0c;经过精确标定和算法处理&#xff0c;竟能重建出真实世界的三维结构。本文将带…...

Android TTS自定义开发:从0到1打造专属语音引擎

Android TTS自定义开发&#xff1a;从0到1打造专属语音引擎 【免费下载链接】tts-server-android 这是一个Android系统TTS应用&#xff0c;内置微软演示接口&#xff0c;可自定义HTTP请求&#xff0c;可导入其他本地TTS引擎&#xff0c;以及根据中文双引号的简单旁白/对话识别朗…...

突破限制:跨平台VMware macOS虚拟机部署全指南——非苹果硬件的macOS体验方案

突破限制&#xff1a;跨平台VMware macOS虚拟机部署全指南——非苹果硬件的macOS体验方案 【免费下载链接】unlocker VMware macOS utilities 项目地址: https://gitcode.com/gh_mirrors/unl/unlocker Unlocker是一款针对VMware Workstation和Player的开源补丁工具&…...

【Unity3D】从零打造动态天空盒:Cubemap生成与实时环境映射实战

1. 动态天空盒的核心原理与场景价值 第一次在Unity里看到动态天空盒效果时&#xff0c;我盯着屏幕愣了三秒——云层在头顶流动&#xff0c;夕阳的光影实时投射在建筑表面&#xff0c;整个场景瞬间有了生命力。这种魔法般的体验&#xff0c;其实都建立在立方体贴图&#xff08;C…...

告别AP离线!深入浅出解析神州数码AC/AP注册机制:二层发现 vs. DHCP Option 43实战选型

神州数码无线网络部署实战&#xff1a;AC与AP注册机制深度解析 在企业无线网络部署中&#xff0c;AC&#xff08;无线控制器&#xff09;与AP&#xff08;无线接入点&#xff09;的注册机制是构建稳定无线网络的基础环节。神州数码作为国内领先的网络设备提供商&#xff0c;其A…...

eslint-plugin-compat自定义规则开发:扩展插件功能的完整教程

eslint-plugin-compat自定义规则开发&#xff1a;扩展插件功能的完整教程 【免费下载链接】eslint-plugin-compat Check the browser compatibility of your code 项目地址: https://gitcode.com/gh_mirrors/es/eslint-plugin-compat eslint-plugin-compat是一款强大的浏…...

LangChain实战:从零构建一个联网搜索增强的RAG问答系统

1. 为什么需要联网搜索增强的RAG系统 传统的RAG&#xff08;检索增强生成&#xff09;系统有个致命伤——它只能回答知识库里已有的内容。想象一下&#xff0c;你去年精心构建了一个旅游推荐系统&#xff0c;但今年新开的网红景点它完全不知道&#xff0c;因为数据没更新。这就…...

.NETCore Serilog 代码设置相关参数说明及按Sink设置不同级别(不同日志级别),使用异步方式写日志

rollingInterval设置为RollingInterval.Day与fileSizeLimitBytes配合使用&#xff1a; 在.NET Core Serilog中&#xff0c;同时设置rollingInterval RollingInterval.Day和fileSizeLimitBytes参数并不会产生配置冲突。这两个参数实际上是互补的&#xff0c;共同提供了更灵活的…...