【Java】字符与字符串

文章目录

    • 1.字符char
      • 1.1 编码
      • 1.2 转义字符
      • 1.3 char的类型转换
      • 1.4 字符的比较
      • 1.5 Character类
    • 2.String类型
      • 2.1 String对象常用的方法:
      • 2.2 从控制台读取字符串
      • 2.3 从控制台读取字符
      • 2.4 字符串的比较
      • 2.5 子串和字符
      • 2.6 字符串的转化
      • 2.7 格式化控制台输出

1.字符char

字符数据类型用于表示单个字符。
字符数据类型char用于表示单个字符。字符型字面值用单引号括住。

char a = 'A';
char b = '4';
char c = '\u041'; // A的Unicode

字符串字面值必须括在双引号中。而字符字面值是括在单引号中的单个字符。因此"A"是一个字符串,而’A’是一个字符。

1.1 编码

常用字符的 ASCII码

字符十进制编码值Unicode 值
‘0’~‘9’48~57u0030~\u0039
‘A’~‘Z’65 ~ 90\u0041~\u005A
‘a’~'Z‘97 ~ 122\u0061 ~\u007A

自增和自减操作符也可用在char型变量上,这会得到该字符之前或之后的Unicode 字符。

1.2 转义字符

转义序列名称
\b退格键
\tTab 键
\n换行符
\f换页符
\r回车符
\\反斜杠
\"双引号

1.3 char的类型转换

//将整数转换成char型数据时只用到该数据的低十六位,其余部分都被忽略。
char ch=(char)0XAB0041; //0041,即A//将一个浮点值转换成char型时,首先将浮点值转换成int型,然后将这个整型值转换为 char 型。
char ch=(char)65.25; //65,即A//char型数据转换成数值型时,这个字符的Unicode 就被转换成某个指定的数值类型。
int i=(int)'A'; //65//如果转换结果适用于目标变量,就可以使用隐式转换方式;否则,必须使用显式转换方式。
byte b='a';
int i ='a';//但是,因为Unicode 码 \uFFF4超过了一个字节的范围,所以下面的转换就是不正确的:
byte b='\uFFF4';
//为了强制赋值,就必须使用显式转换方式
byte b=(byte)'\uFFF4';

所有数值操作符都可以用在char型操作数上。如果另一个操作数是一个数字或字符,那么char型操作数就会被自动转换成一个数字。如果另一个操作数是一个字符串,字符就会与该字符串相连。

1.4 字符的比较

两个字符可以使用关系操作符进行比较,如同比较两个数字一样。这是通过比较两个字符的 Unicode 值实现的。

if(ch>='A&& ch <=Z')System.out.println(ch+"is an uppercase letter");
else if(ch>='a'&& ch <='z')System.out.println(ch+"is a lowercase letter");
else if(ch>='0'&& ch <='9')System.out.println(ch+"is a numeric character");

1.5 Character类

方法描述
isDigit(ch)如果指定的字符是一个数字,返回 true
isLetter(ch)如果指定的字符是一个字母,返回 tue
isLetterOrDigit(ch)如果指定的字符是一个字母或者数字,返回true
isLowerCase(ch)如果指定的字符是一个小写字母,返回true
isUpperCase(ch)如果指定的字符是一个大写字母,返回true
toLowerCase(ch)返回指定的字符的小写形式
toUpperCase(ch)返回指定的字符的大写形式

2.String类型

char 类型只表示一个字符。为了表示一串字符,可以使用称为String(字符串)的数据类型。

String message = "Hello World"

2.1 String对象常用的方法:

实例方法(只能从一个特定的字符串实例调用)描述
length()返回字符串中的字符数
charAt(index)返回字符串中指定位置的字符
concat(s1)将本字符串和字符串s1连接,返回一个新字符串
toUpperCase()返回一个新字符串,其中所有的字母大写
toLowerCase()返回一个新字符串,其中所有的字母小写
trim返回一个新字符串,去掉了两边的空白字符
包括’ ’ \t \f \r \n等

除了concat方法外。可以使用加号(+)连接两个或多个字符串。若要用加号实现连接功能,至少要有一个操作数必须为字符串。如果操作数之一不是字符串(比如,一个int或者char),非字符串值转换为字符串,并与另外一个字符串连接。如果操作数都不是字符串,加号(+)是一个将两个数字相加的加法操作符。
另外,增强的+=操作符也可以用于字符串连接。

2.2 从控制台读取字符串

为了从控制台读取字符串,可以调用Scanner对象上的next()方法。

Scanner input = new Scanner(System.in);
String s1 = input.next()

next()方法读取以空白字符结束的字符串(’ ‘、’\t’、‘\f’、‘\r’或’\n’)。。nextLine()方法读取以按下回车键为结束标志的字符串。

  • next()、nextByte()、nextShort()、nextInt()、nextLong()、nextF1oat()、nextDouble()的输入称为基于标记的输人,因为它们读取采用空白字符分隔的单个元素。
  • nextLine()方法称为基于行的输入,读取以按下回车键为结束标志的字符串。
  • 为了避免输入错误,程序中不要在基于标记的输入之后使用基于行的输入

2.3 从控制台读取字符

从控制台读取字符,调用nextLine()方法读取一个字符串,然后在字符串上调用charAt(0)来返回一个字符。

Scanner input = new Scanner(System.in);
String s = input.nextLine();
char ch = s.charAt(0);

2.4 字符串的比较

方法描述
equals(s1)如果该字符串等于字符串 s1,返回 true
equalsIgnoreCase(s1)如果该字符串等于字符串 s1,返回 true;不区分大小写
compareTo(s1)返回一个大于0、等于0、小于0的整数,表明该字符串是否大于等于或者小于s1
compareToIgnoreCase(s1)和compareTo 一样,除了比较是不区分大小写的外
startsWith(prefix)如果字符串以特定的前缀开始,返回 true
endsWith(suffix)如果字符串以特定的后缀结束,返回 true
contains(s1)1是该字符串的子字符串,返回true
  • 操作符==只能检测string1和string2是否指向同一个对象,但不会告诉它们的内容是否相同。
  • 方法compareTo返回的实际值是依据s1和s2从左到右第一个不同字符之间的距离得出的。假设s1为"abc",s2为"abg",那么s1.compareTo(s2)返回-4。首先比较的是s1与s2中第一个位置的两个字符(a与a)。因为它们相等,所以比较第二个位置的两个字符(b与b)。因为它们也相等,所以比较第三个位置的两个字符(c与g)。由于字符c比字符g小4,所以比较之后返回-4。
  • 如果使用像>、>=、<或<= 这样的比较操作符比较两个字符串,就会发生语法错误,

2.5 子串和字符

方法描述
substring(beginIndex)返回该字符串的子串,从指定位置beginIndex的字符开始到字符串的结尾
substring(beginIndexendIndex)返回该字符串的子串,从指定位置beginIndex的字符开始到下标为endIndex-1的字符
(如果 beginIndex==endIndex,返回一个长度为0的空字符串。如果beginIndex>endIndex,将发生运行时错误。)
indexOf(ch)返回字符串中出现的第一个ch的下标。如果没有匹配的,返回-1
index0f(ch,fromIndex)返回字符串中fromIndex之后出现的第一个ch的下标。如果没有匹配的,返回-1
indexOf(s)返回字符串中出现的第一个字符串s的下标。如果没有匹配的,返回-1
indexOf(s,fromIndex)返回字符串中fromIndex之后出现的第一个字符串s的下标。如果没有匹配的,返回-1
lastIndexOf(ch)返回字符串中出现的最后一个ch的下标。如果没有匹配的,返回-1
lastIndex0f(ch,fromIndex)返回字符串中 fromIndex之前出现的最后一个ch的下标。如果没有匹配的,返回 -1
lastIndexOf(s)返回字符串中出现的最后一个字符串s的下标。如果没有匹配的,返回-1
lastIndexOf(s,fromIndex)返回字符串中fromIndex之前出现的最后一个字符串s的下标。如果没有匹配的,返回-1

2.6 字符串的转化

  • 可以将数值型字符串转换为数值。(如果字符串不是数值型字符串,转换将导致一个运行时错误)
  • 要将字符串转换为int值,使用Integer.parseInt.要将字符串转换为 double值,使用 Double.parseDouble.
int intValue = Integer.parseInt(intString);
double doubeValue = Double.parseDouble(doubleString);
  • 如果字符串不是数值型字符串,转换将导致一个运行时错误。Integer 和Doub1e 类都包含在 java.1ang包中,因此它们是自动导人的。
  • 将数值转换为字符串,只需要简单使用字符串的连接操作符连接一个空字符串即可
String s=number +"";

2.7 格式化控制台输出

可以使用 System.out.printf方法在控制台上显示格式化输出。

double amount=12618.98;
double interestRate=0.0013;
double interest =amount*interestRate;
System.out.printf("Interest is $ %4.2f",interest);

printf中的f代表格式(format),暗示着方法将以某种格式来打印。调用这个方法的语法是:

System.out.printf(format,item1,item2...itemk);

在这里插入图片描述
在这里插入图片描述
格式限定符指定每项应该如何显示。这里的项可以是数值、字符、布尔值或字符串。简单的格式标识符是以百分号(%)开头的转换码。

限定符输出
%b布尔值
%c字符
%d十进制整数
%f浮点数
%e标准科学记数法形式的数
%s字符串

举例:

示例输出
%5c输出字符并在这个字符条目前面加4个空格
%6b输出布尔值,在false值前加一个空格,在true值前加两个空格
%5d输出整数项,宽度至少为5。如果该条目的数字位数小于5,就在数字前面加空格。如果该条目的位数大于5,则自动增加宽度
%10.2f输出的浮点数项的宽度至少为10,包括小数点和小数点后两位数字。这样,给小数点前分配了7位数字。如果该条目小数点前的位数小于7,就在数字前面加空格。如果该条目小数点前的位数大于7,则自动增加宽度
%10.2e输出的浮点数项的宽度至少为10,包括小数点、小数点后两位数字和指数部分。如果按科学记数法显示的数字位数小于10,就在数前加空格
%12s输出的字符串宽度至少为12个字符。如果该字符串条目小于12个字符,就在该字符串前加空格。如果该字符串条目多于12个字符,则自动增加宽度
// 如果要显示一个带有逗号的数字,可以在数字限定符前面添加一个逗号。
System.out.printf("%,8d%,10.1f\n",12345678,12345678.263); 
// 12,345,678 12,345.678.3// 如果要在数字前面添加0而不是空格来凑齐位数,可以在一个数字限定符前面添加0
System.out.printf("%08d %08.1f\n"12345.63);
// 00001234 000005.6// 默认情况下,输出是右对齐的。可以在格式限定符中放一个减号(-),指定该项在指定域中的输出是左对齐的。
System.out.printf("%-8d%-8s%-8.1fn",1234,"Java",5.63));
System.out.printf("%8d%8s%8.1f\n"1234,"Java”,5.63);
//1234    Java    5.6    
//    1234    Java    5.6
  • 条目与格式标识符必须在类型上严格匹配。对应于格式标识符%f或%e的条目必须是浮点型值,例如:是40.0而不能是40。因此,int型变量不能匹配%f或%e。可以使用%.2f 来指定一个小数点后两位的浮点数值,而使用%0.2f是不正确的。
  • 使用符号%来标记格式限定符,要在格式字符串里输出字面值%,需要使用 %%。

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

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

相关文章

IOT 可编程控制系统

IOT&#xff08;物联网&#xff09;可编程控制系统&#xff0c;如GF-MAXCC等&#xff0c;是一种集成了多种先进技术和功能的智能化控制设备&#xff0c;它能够在物联网系统中发挥关键作用&#xff0c;实现对多种设备的集中管理和控制。具体来说&#xff0c;IOT可编程控制系统的…

【算法专题】双指针算法之 1089.复写零(力扣)

欢迎来到 CILMY23的博客 &#x1f3c6;本篇主题为&#xff1a;双指针算法之 1089.复写零&#xff08;力扣&#xff09; &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算…

2024版彩虹晴天全能知识付费源码+虚拟商城解决方案 含一键搭建视频教程 无授权限制

是一款知识付费平台的核心&#xff0c;更是集虚拟商城、实物交易、代理分销于一体的全能解决方案。 核心亮点&#xff1a; 最新源码&#xff0c;独家首发&#xff1a;经过精心修复与更新&#xff0c;本源码由我们团队亲自把关&#xff0c;确保您获得的是市场上最新鲜、最稳定…

DBA 数据库管理 表管理 数据批量处理。表头约束

表管理 建库 库名命名规则&#xff1a;仅可以使用数字、字母、下划线、不能纯数字 不可使用MySQL命令或特殊字符 库名区分字母大小写 加if not exists 命令避免重名报错 create database if not exists gamedb; 建表 drop database if exists gamedb ; 删表…

【论文阅读】LLM4GCL: CAN LARGE LANGUAGE MODEL EMPOWER GRAPH CONTRASTIVE LEARNING?

LLM4GCL: CAN LARGE LANGUAGE MODEL EMPOWER GRAPH CONTRASTIVE LEARNING? https://openreview.net/forum?idwxClzZdjqP 图对比学习的重点就是图数据的增强&#xff0c;针对图中节点的表示或者图的结构进行扰动&#xff0c;通过对比学习得到对应的节点表示&#xff0c;以便于…

Kafka基础入门-代码实操

Kafka是基于发布/订阅模式的消息队列&#xff0c;消息的生产和消费都需要指定主题&#xff0c;因此&#xff0c;我们想要实现消息的传递&#xff0c;第一步必选是创建一个主题&#xff08;Topic&#xff09;。下面我们看下在命令行和代码中都是如何创建主题和实现消息的传递的。…

【Linux 配置静态IP】Ubuntu20.04

最近学习网络编程&#xff0c;为了方便学习需要Ubuntu配置静态IP&#xff0c;网上看了好多贴子跟着试了下可以实现&#xff0c;但重启虚拟机后有时就无法连接&#xff0c;总之各种各样问题&#xff1b;相关的配置方法也比较凌乱&#xff0c;有用netplan 或者 ifupdown ,笔者简单…

C++知识点:C和C++(自用)

C和C 1.类和结构体的关系&#xff1a;2.面向对象和面向过程3.头文件和标准命名空间4.cin和cout5. const在C中和C中的区别6.const全局作用域7 new和delete8 内联函数9 函数重载10. 函数重载的匹配 引用&#xff1a; [1]C语言中文网 1.类和结构体的关系&#xff1a; 类是结构体的…

Qt文件下载工具

在Qt中实现文件下载功能&#xff0c;通常可以通过多种方式来完成&#xff0c;包括使用 QNetworkAccessManager 和 QNetworkReply 类&#xff0c;或者使用更高级别的 QHttpMultiPart 类。以下是两种常见的实现方法&#xff1a; 方法1&#xff1a;使用 QNetworkAccessManager 和…

pxe高效网络批量装机

文章目录 一&#xff0c; PXE远程安装服务&#xff08;一&#xff09;三种系统装机的方式&#xff08;二&#xff09;linux装机1. 加载 Boot Loader2. 加载启动安装菜单3. 加载内核和 initrd4. 加载根文件系统5. 运行 Anaconda 安装向导 &#xff08;三&#xff09;实现过程&am…

语言主要是一种交流工具,而不是思维工具?GPT5何去何从?

引言 在人工智能领域&#xff0c;特别是大语言模型&#xff08;LLM&#xff09;的发展中&#xff0c;语言和思维的关系一直是一个备受关注的话题。近期&#xff0c;麻省理工学院&#xff08;MIT&#xff09;在《Nature》杂志上发表了一篇题为《Language is primarily a tool f…

linux进程——概念理解与PCB

前言&#xff1a;本篇讲解Linux进程概念相关内容。 操作系统被称为计算机世界的哲学&#xff0c; 可以见得操作系统的知识并不好理解。 对于这篇进程概念的讲解&#xff0c; 博主认为&#xff0c; 如果没有一些前置知识的话&#xff0c;里面的有些概念并不好理解。 但是如果学习…

SQL Server 用户应当如何防范 Mallox (.hmallox) 勒索软件袭击

勒索软件领域的特点是随着时间的流逝&#xff0c;参与者群体和恶意软件家族都会大量流失&#xff0c;只有少数参与者表现出相对长寿的寿命。曾经令人担忧的威胁&#xff0c;如 REvil 和 Conti&#xff0c;要么被铲除&#xff0c;要么被解散&#xff0c;而其他威胁——例如 ALPH…

UGUI优化篇(更新中)

UGUI优化篇 1. 基础概念2. 重要的类1. MaskableGraphic类继承了IMaskable类2. 两种遮罩的实现区别RectMask2DMask 3. 渲染部分知识深度测试深度测试的工作原理 渲染队列透明物体在渲染时怎么处理为什么透明效果会造成性能问题 1. 基础概念 所有UI都由网格绘制的如image由两个三…

25届平安产险校招测评IQ新16PF攻略:全面解析与应试策略

尊敬的读者&#xff0c;您好。随着平安产险校招季的到来&#xff0c;许多应届毕业生正积极准备着各项测评。本文旨在提供一份详尽的测评攻略&#xff0c;帮助您更好地理解平安产险的校招测评流程&#xff0c;以及如何有效应对。 25届平安产险平安IQ&#xff08;新&#xff09;测…

AI大模型探索之旅:深潜大语言模型的训练秘境

在人工智能的浩瀚星空中&#xff0c;大语言模型无疑是最耀眼的星辰之一&#xff0c;它们以无与伦比的语言理解与生成能力&#xff0c;引领着智能交互的新纪元。本文将带您踏上一场探索之旅&#xff0c;深入大语言模型的训练秘境&#xff0c;揭开其背后复杂而精妙的全景画卷。 …

给 「大模型初学者」 的 LLaMA 3 核心技术剖析

编者按&#xff1a; 本文旨在带领读者深入了解 LLaMA 3 的核心技术 —— 使用 RMSNorm 进行预归一化、SwiGLU 激活函数、旋转编码&#xff08;RoPE&#xff09;和字节对编码&#xff08;BPE&#xff09;算法。RMSNorm 技术让模型能够识别文本中的重点&#xff0c;SwiGLU 激活函…

现在有哪些微服务解决方案?

Dubbo&#xff1a;是一个轻量级的Java微服务框架&#xff0c;最初由阿里巴巴在2011年开源。它提供了服务注册与发现、负载均衡、容错、分布式调用等。Dubbo更多的被认为是一种高性能的RPC框架&#xff08;远程过程调用&#xff09;&#xff0c;一些服务治理功能依赖第三方组件完…

第一部分:C++入门

目录 前言 1、C关键字(C98) 2、命名空间 2.1、命名空间定义 2.2、命名空间的使用 3、C输入&输出 4、缺省参数 4.1、缺省参数的概念 4.2、缺省参数的分类 5、函数重载 5.1、函数重载的概念 5.2、C支持函数重载的原理 6、引用 6.1、引用的概念 6.2、引用特性 …

深圳晶彩智能JC3636W518C开箱实现电脑副屏功能

深圳晶彩智能发布了JC3636W518C 这是一款中国制造的&#xff0c;铝合金外壳&#xff0c;价格非常震撼的开发板。原创是billbill的up播主萨纳兰的黄昏设计的ESP32太极小派&#xff0c;由深圳晶彩智能批量生产。 该款 LCD 模块采用 ESP32-S3R8 芯片作为主控,该主控是双核 MCU&…