【Java】字符与字符串

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.mfbz.cn/a/797555.html

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

相关文章

视频号里的视频怎么下载保存?推荐5种方法!

很多人不知道视频号里的视频怎么下载保存&#xff0c;其实视频号下载提取方式比较多常见的有缓存、查看源代码、抓包、录屏、自动提取工具。 1&#xff1a;缓存 安卓手机特性将需要的视频观看完并缓存到手机&#xff0c;并将视频另外存为mp4文件&#xff0c;不过该方式最安卓1…

【扩散模型】【图像生成】FreeU:扩散 U-Net 模型的免费午餐(CVPR 2024 Oral))

论文名称&#xff1a;FreeU: Free Lunch in Diffusion U-Net (CVPR 2024 Oral) 论文地址&#xff1a;https//arxiv.org/pdf/2309.11497 项目链接&#xff1a;https//chenyangsi.top/FreeU/ 文章目录 摘要一、 扩散 U-Net 中的低频和高频分量二、扩散 U-Net 是如何执行去噪过程…

excel、word、ppt 下载安装步骤整理

请按照我的步骤开始操作&#xff0c;注意以下截图红框标记处&#xff08;往往都是需要点击的地方&#xff09; 第一步&#xff1a;下载 首先进入office下载网址&#xff1a; otp.landian.vip 然后点击下载 拉到下方 下载站点&#xff08;这里根据自己的需要选择下载&#x…

VLM技术介绍

1、背景 视觉语言模型&#xff08;Visual Language Models&#xff09;是可以同时从图像和文本中学习以处理许多任务的模型&#xff0c;从视觉问答到图像字幕。 视觉识别&#xff08;如图像分类、物体保护和语义分割&#xff09;是计算机视觉研究中一个长期存在的难题&#xff…

Excel第31享:基于left函数的截取式数据裂变

1、需求描述 如下图所示&#xff0c;在“Excel第30享”中统计2022年YTD各个人员的“上班工时&#xff08;a2&#xff09;”&#xff0c;需要基于工时明细表里的“日期”字段建立辅助列&#xff0c;生成“年份”字段&#xff0c;本文说明“年份”字段是怎么裂变而来的。 下图为…

前端web性能统计

前端web性能统计 1. 背景2. 业界方案2.1 腾讯2.2 蚂蚁金服2.3 字节跳动2.4 美团 3. 相关观念3.1 RAIL模型3.2 性能指标3.3 真实用户监控3.4 performance 4. 性能监控工具介绍5. 推荐采用方案 1. 背景 在如今的数字时代&#xff0c;网站和应用程序的性能对用户体验至关重要。用…

13_Shell系统函数

13_Shell系统函数和自定义函数 一、系统函数 basename 获取文件名 #!/bin/bash#basename 相对路径文件名 basename ./1.sh#basename 绝对路径文件名 basename /tmp/1.sh#basename 去除文件后缀名 basename /tmp/1.sh .shdirname 获取文件所在目录名 #!/bin/bash#dirname 相对路…

【web】-sql注入-login

根据网址提示打开如图&#xff1a; 查看源代码前台并没有过滤限制、扫描后台也没有发现特殊文件。看到标题显示flag is in database&#xff0c;尝试sql注入。 由于post,bp抓包如下&#xff1a; 运行python sqlmap.py -r 1.txt --dump 获取flag 42f4ebc342b6ed4af4aadc1ea75f…

在word中删除endnote参考文献之间的空行

如图&#xff0c;在References中&#xff0c;每个文献之间都有空行。不建议手动删除。打开Endnote。 打开style manager 删除layout中的换行符。保存&#xff0c;在word中更新参考文献即可。

【自学网络安全】二、防火墙NAT智能选路综合实验

任务要求&#xff1a; &#xff08;衔接上一个实验所以从第七点开始&#xff0c;但与上一个实验关系不大&#xff09; 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 8&#xff0c;分公司设备可以通过总…

中小学校园EasyCVR视频综合监管方案:构建安全、智能的校园环境

一、背景需求分析 随着科技的快速发展&#xff0c;校园安全问题日益受到社会各界的关注。尤其是在中小学校园中&#xff0c;学生的安全更是牵动着每一个家庭的心。为了更有效地保障学生的安全&#xff0c;提高校园安全管理水平&#xff0c;视频监控系统在中小学中的应用越来越…

TikTok 入局小游戏,小游戏出海赛道大热,开发者如何抢滩海外市场?

国内小游戏市场的竞争日益激烈&#xff0c;开发成本上涨、买量的投入成本飙升&#xff0c;对小团队和个人开发者的资金要求量高。除此以外&#xff0c;单款游戏从软著、备案、到认证所需要的时间和费用都大幅提升&#xff0c;也对小游戏市场造成重大影响。重压之下&#xff0c;…

微信小程序如何实现登陆和注册功能?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

算法day04 位运算 插入排序 二分法 对数器

位运算: 1&#xff09;有一个数组只包含这样的数&#xff0c;有几个数出现偶数次&#xff0c;有1个数出现奇数次&#xff0c;要求时间复杂度不超过o(n),怎么求出现奇数次的数。 使用 ^ 异或运算整个数组&#xff0c;偶数次运算结果为0&#xff0c;只留下最后一个奇数次的数。 …

java配置nginx网络安全,防止国外ip访问,自动添加黑名单,需手动重新加载nginx

通过访问日志自动添加国外ip黑名单 创建一个类&#xff0c;自己添加一个main启动类即可测试 import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.json.JSONArray; import org.json.JSONObject; import org.sp…

复现ORB3-YOLO8项目记录

文章目录 1.编译错误1.1 错误11.2 错误21.3 错误31.4 错误4 1.编译错误 首先ORB-SLAM相关项目已经写过很多篇博客了&#xff0c;从ORB-SLAM2怎么运行&#xff0c;再到现在的项目。关于环境已经不想多说了 1.1 错误1 – DEPENDENCY_LIBS : /home/lvslam/ORB3-YOLO8/Thirdparty…

ActiveMQ-CVE-2023-46604

Apache ActiveMQ OpenWire 协议反序列化命令执行漏洞 OpenWire协议在ActiveMQ中被用于多语言客户端与服务端通信。在Apache ActvieMQ5.18.2版本以及以前&#xff0c;OpenWire协议通信过程中存在一处反序列化漏洞&#xff0c;该漏洞可以允许具有网络访问权限的远程攻击者通过操作…

数据库的学习(5)

题目&#xff1a; 1、新增员工表emp和部门表dept create table dept (deptl int,dept name varchar(11)) charsetutf8; create table emp (sid int,name varchar(11),age int,worktime start date,incoming int,dept2 int) charsetutf8; insert into dept values (101,财务), (…

推广员团队分红体系,促进销量,能者多得

商城系统推广员的作用是通过奖励吸引会员成为推广人员&#xff0c;商家后台设置功能体系商品分佣比例&#xff0c;其推广到私域里完成订单获得佣金提现&#xff0c;商家获得更多新订单和新客户。 虽然商家可以招募大量推广员&#xff0c;但对推广员自身来说佣金吸引下还是缺少…

股指期货存在的风险有哪些?

股指期货因其标的物的特殊性&#xff0c;其面临的风险类型十分复杂&#xff0c;主要面临的一般风险和特有风险如下&#xff1a; 一般风险 从风险是否可控的角度&#xff0c;可以划分为不可控风险和可控风险&#xff1b;从交易环节可分为代理风险、流动性风险、强制平仓风险&…