《从C/C++到Java入门指南》- 9.字符和字符串

news2024/9/20 22:01:03

字符和字符串

字符类型

Java 中一个字符保存一个Unicode字符,所以一个中文和一个英文字母都占用两个字节。

// 计算1 + .. + 100
public class Hello {
	public static void main(String[] args) {
		char a = 'A';
		char b = '中';
		System.out.println(a);
		System.out.println(b);		
	}
}

需要显示 Unicode 编码,可以直接将char值赋给int类型。

// 计算1 + .. + 100
public class Hello {
	public static void main(String[] args) {
		char a = 'A';
		char b = '中';
		System.out.println((int) a);	// 65
		System.out.println((int) b);	// 20013
	}
}

可以用'\u'+Unicode编码转义成字符

// 计算1 + .. + 100
public class Hello {
	public static void main(String[] args) {
		char a = 'A';
		char b = '中';
		char c = '\u0041';	// 使用\u + Unicode 来进行转义,这里0041是16进制 = 十进制65
		System.out.println((int) a);
		System.out.println((int) b);	
		System.out.println(c);	// A
	}
}

字符串类型

一个字符串可以存储一个到任意个字符,字符串用"..."来进行表示,类似c++。可以使用\来表示转义字符,如\"就可以用来表示"

  • \" 表示字符"
  • \' 表示字符'
  • \\ 表示字符\
  • \n 表示换行符
  • \r 表示回车符
  • \t 表示Tab
  • \u#### 表示一个Unicode编码的字符
// 计算1 + .. + 100
public class Hello {
	public static void main(String[] args) {
		String str = "\"-\'=\',反斜杠:\\\\来表示\n换行输出,回车符:\r好的\t经过了一个Tab\u0024";
		System.out.println(str);
	}
}

输出结果:

image-20240717194813432

字符串连接

可以用+来连接字符串和其他的任意类型,但是会将所有的类型先转化成字符串类型,并不会中途进行运算。

// 计算1 + .. + 100
public class Hello {
	public static void main(String[] args) {
		String a = "a";
		String b = "b";
		String plus = a + b;
		System.out.println(a + b + plus + '3' + 1.0 + 2f + 4 + true);
	}
}

输出结果:

image-20240717195147877

多行字符串

Java 13开始,可以用 """..."""来表示多行字符串:

// 计算1 + .. + 100
public class Hello {
	public static void main(String[] args) {
		String mutiple_line_string = """
				窗前明月光,疑似地上霜。
				举头望明月,低头思故乡。
				""";
		System.out.println(mutiple_line_string);
	}
}

输出结果:

image-20240717195418139

这里实际上是三行,因为最后还有一个\n,如果不需要这个换行符,将'''移动到低头思故乡。的后面即可:

// 计算1 + .. + 100
public class Hello {
	public static void main(String[] args) {
		String mutiple_line_string = """
				窗前明月光,疑似地上霜。
				举头望明月,低头思故乡。""";
		System.out.println(mutiple_line_string);
	}
}

有一点需要注意的就是,多行字符串前面共同的空格都会被忽略。

image-20240717195641441

图片来自:廖雪峰的官网

不可变特性

java 中的字符串在创建的过程中经过了如下过程:首先,JVM虚拟机在内存中创建了一个字符串,并让指针指向这个字符串。所以在为字符串变量赋新的值的时候,只是将这个变量指向了内存中新的字符串,原来的字符串还会保留在那里。

// 计算1 + .. + 100
public class Hello {
	public static void main(String[] args) {
		String a = "Hello";
		String b = a;
		a = "World";
		System.out.println(a);	// World
		System.out.println(b);	// b 仍然指向 Hello
	}
}

参考廖雪峰的图:

image-20240717200156317

image-20240717200203756

空值 null

引用对象可以指向一个null表示变量不存在,不指向任何对象。但是请注意,null不等于"“,”" 代表空字符串,是一个有效的字符串。

public class Hello {
	public static void main(String[] args) {
		String a = null;
		String b = null;
		String c = "";
		System.out.println(a == b);	// true
		System.out.println(a == c);	// false
	}
}

练习

用 int 值存储 Unicode 编码,并将它们拼成一个字符串。

答案

public class Hello {
	public static void main(String[] args) {
        int a = 72;
        int b = 105;
        int c = 65281;
        // FIXME:
        String s = "" + (char) a + (char) b + (char) c;
        System.out.println(s);
	}
}

廖雪峰的答案中String s = a + b + c ,在我这里是报错的,不确定是否是因为我是Java8的原因。

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

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

相关文章

Spring通过工厂方法进行配置

在Spring的世界中, 我们通常会利用 xml配置文件 或者 annotation注解方式来配置bean实例! 在第一种利用 xml配置文件 方式中, 还包括如下三小类 反射模式(我们前面的所有配置都是这种模式)工厂方法模式Factory Bean模…

跳妹儿学编程之ScratchJr(10):结束积木篇—放学回家

博主资深软件架构师,拥有13年大型软件与互联网系统开发、设计和架构经验,曾就职于华为,现任职于国内知名互联网公司。平时在家教咱家“跳妹儿”编程,并将心得和过程记录下来。希望可以帮助更多对编程感兴趣的家庭。 前言 继上一篇…

FastDFS分布式存储

文章目录 FastDFS原理FastDFS架构文件的上传文件的下载 FastDFS原理 FastDFS架构 Tracker server 跟踪服务器主要做挑度工作,起到均衡的作用,负责管理所有的Storage server和group Storage server 储服务器,主要提供容量和备份服务;以group为单位&…

VMware虚拟机下安装Ubuntu(详细教程,最小系统的安装,含VMware Tools)

1.VM的下载安装 VMware的下载安装教程_vm16 pro下载-CSDN博客 2. Ubuntu 下载 在官网或者镜像站下载所需版本的.ios镜像,这个镜像在接下来的步骤中会用到: Ubuntu 22.04.4 LTS 下载 和 清华大学开源软件镜像站 - Ubuntu 22.04.4 下载 3. 创建虚拟机 […

【开发实战】QT5 + OpenCV4 开发环境配置应用演示

前言 作为深度学习算法工程师,必须要掌握应用开发技能吗?搞工程肯定是必须要会界面开发,QT就是一个很不错的选择。本文以QT5.15 OpenCV4.8 OpenVINO2023为例,搭建应用开发环境,演示深度学习模型的QT应用案例。 开发…

重拾CSS,前端样式精读-函数(颜色,计算,图像和图形)

前言 本文收录于CSS系列文章中,欢迎阅读指正 在计算机编程中,函数有着重要的作用和意义,它可以实现封装,复用,模块化,参数等功能效果,在如何在CSS中写变量?一文带你了解前端样式利…

聊聊HuggingFace Transformer

项目组件 一个完整的transformer模型主要包含三部分:Config、Tokenizer、Model。 Config 用于配置模型的名称、最终输出的样式、隐藏层宽度和深度、激活函数的类别等。 示例: {"architectures": ["BertForMaskedLM"],"atte…

蓝屏死机不再怕!CrowdStrike故障修复指南中心上线!

系统之家于7月22日发出最新报道,安全公司CrowdStrike因其Windows更新引发全球 850 万台电脑蓝屏死机问题后,上线了全新的“修复和指南中心”(Remediation and Guidance Hub),该中心汇集了与其错误更新相关的详细信息&a…

昇思25天学习打卡营第25天 | RNN实现情感分类

学习心得:RNN实现情感分类 在自然语言处理(NLP)的领域中,情感分类是一个极具挑战性的任务,它要求模型能够准确地从文本中识别出情感倾向。通过使用MindSpore框架和RNN模型进行情感分类,我获得了许多有关构…

【QT】定时器事件 - QTimerEvent QTimer

qt 系统 - 定时器 定时器1. QTimerEvent2. QTimer3. 获取系统日期及时间 定时器 Qt 中在进行窗口程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使用定时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执…

《python语言程序设计》第6章第1题数,数学方面:五角数n(3n-1)/2 前100个五角数

第4次做第6章 def getPentagonalNumber(n):count 0for i in range(1, n):count 1pen_num round(i * ((3 * i) - 1) / 2)print(f"{pen_num}", end" ")if count % 10 0:print()getPentagonalNumber(100)

Java语言程序设计基础篇_编程练习题**15.15 (几何问题:添加或删除点)

**15.15 (几何问题:添加或删除点) 请编写一个程序,让用户在面板上单击以自动创建或移去点(参见15-28a)。当用户左击鼠标时(主按钮),就创建一个点并且显示在鼠标的位置,用户还可以将鼠标移到一个点上,然后右击鼠标(次按钮)以移去这…

C语言-网络编程-UDP通信创建流程

UDP 通信创建流程 UDP 是⼀个传输层的⽆连接的协议,我们编写代码⼀般是分为两个端。⼀个我们称之为发送端,另⼀ 个我们称之为接收端。正常⼀般是接收端先运⾏,然后等待结束发送端发送过来的数据。 创建套接字 首先,我们需要创建…

JDK8升级到JDK17,报错Error:java:错误:不支持的发行版本5

1 问题描述: 我原来用到是JDK8,后来重新安装了JDK17后,并更换了JAVA_HOME的配置,在CDM上面查看JAVA版本确认安装无误。 当我打开IDEA运行代码时,就报错java:错误:不支持的发行版本5,至始至终我都…

Leetcode509. 斐波那契数(递归和常规两种写法)

问题描述: 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),…

Python酷库之旅-第三方库Pandas(037)

目录 一、用法精讲 116、pandas.Series.div方法 116-1、语法 116-2、参数 116-3、功能 116-4、返回值 116-5、说明 116-6、用法 116-6-1、数据准备 116-6-2、代码示例 116-6-3、结果输出 117、pandas.Series.truediv方法 117-1、语法 117-2、参数 117-3、功能 …

C语言编译报错:error: expected declaration or statement at end of input(缺了括号)

文章目录 报错信息分析解决步骤: 排查 报错信息 /userdata/testOtherPrj/20240715_box_circuit_breaker/test/external/modbus_vendorA/src/vendor_a_modbus.c: In function ‘VendorA_PowerStop’: /userdata/testOtherPrj/20240715_box_circuit_breaker/test/exte…

25届近4年电子科技大学自动化考研院校分析

电子科技大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近4年考研分数情况 四、近4年招生录取情况 五、最新一年分数段图表 六、初试大纲复试大纲 七、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定教…

EasyAnimate-v3 实测,阿里开源视频生成模型,5 分钟带你部署体验,支持高分辨率超长视频

自从 Sora 发布以来,AI 视频生成的热度不减,社区中涌现了大量类 Sora 的开源项目。 前不久,快手开放了可灵视频生成模型的内测,不过可灵是闭源的,相信很多小伙伴还没拿到内测名额。 今天给大家分享一款开源的视频生成…

Springboot 启动时Bean的创建与注入(一)-面试热点-springboot源码解读-xunznux

Springboot 启动时Bean的创建与注入,以及对应的源码解读 文章目录 Springboot 启动时Bean的创建与注入,以及对应的源码解读构建Web项目流程图:堆栈信息:堆栈信息简介堆栈信息源码详解1、main:10, DemoApplication (com.xun.demo)2…