java字符型常量和字符串常量的区别?

在Java中,字符型常量和字符串常量是两种不同的常量类型,它们在形式、含义和内存占用等方面存在显著区别。理解这些区别对于掌握Java的基本概念和编写高效代码至关重要。

形式

  • 字符常量:由单引号 ' 引起的一个字符。

    char letter = 'A';
  • 字符串常量:由双引号 " 引起的 0 个或若干个字符。

    java

    String greeting = "Hello, world!";

含义

  • 字符常量:相当于一个整型值(ASCII 值),可以参加表达式运算。例如,字符 'A' 的 ASCII 值为 65,可以用于算术运算。

    java

    char letter = 'A';
    int asciiValue = letter; // asciiValue 的值为 65
  • 字符串常量:代表一个地址值,即该字符串在内存中的存放位置。字符串在Java中是对象,因此可以调用字符串的方法。

    java

    String greeting = "Hello";
    int length = greeting.length(); // length 的值为 5

内存占用

  • 字符常量:在Java中,char 类型占用2个字节。

    java

    char letter = 'A';
    System.out.println("字符型常量占用的字节数为:" + Character.BYTES); // 输出:2
  • 字符串常量:占若干个字节,具体取决于字符串的长度和编码方式。在UTF-8编码中,每个字符通常占用1个字节,但对于一些特殊字符可能会占用更多字节。

    java

    String greeting = "Hello, world!";
    System.out.println("字符串常量占用的字节数为:" + greeting.getBytes().length); // 输出:13

示例代码

以下代码展示了字符型常量和字符串常量的定义及其内存占用情况:

java

public class StringExample {// 字符型常量public static final char LETTER_A = 'A';// 字符串常量public static final String GREETING_MESSAGE = "Hello, world!";public static void main(String[] args) {System.out.println("字符型常量占用的字节数为:" + Character.BYTES);System.out.println("字符串常量占用的字节数为:" + GREETING_MESSAGE.getBytes().length);}
}

输出:

字符型常量占用的字节数为:2
字符串常量占用的字节数为:13

深入剖析

实际应用场景
  1. 字符常量的应用

    • 用于表示单个字符,如性别、标识符等。
    • 在字符运算和位运算中使用,例如加密算法中的字符位移。

    java

    char gender = 'M';
    char nextChar = (char) (gender + 1); // 'N'
  2. 字符串常量的应用

    • 用于表示文本信息,如用户输入、日志信息、配置参数等。
    • 在字符串处理和操作中广泛应用,如拼接、拆分、替换等。

    java

    String fullName = "John" + " " + "Doe";
    String[] words = fullName.split(" ");

重点总结

  • 字符常量:表示单个字符,占用2个字节,可以参与算术运算。
  • 字符串常量:表示一串字符,占用多个字节,代表字符串在内存中的地址值。

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

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

相关文章

数字孪生GIS数据获取与处理(未完回头再整理)

高德矢量 http://webrd01.is.autonavi.com/appmaptile?x{x}&y{y}&z{z}&langzh_cn&size1&scale1&style8 高德影像 https://webst01.is.autonavi.com/appmaptile?style6&x{x}&y{y}&z{z} 腾讯矢量 http://rt0.map.gtimg.com/realtimerender…

第33次CSP认证Q3:化学方程式配平

🍄题目描述 为了配平一个化学方程式,我们可以令方程式中各物质的系数为未知数,然后针对涉及的每一种元素,列出关于系数的方程,形成一个齐次线性方程组。然后求解这个方程组,得到各物质的系数。这样&#x…

MySQL---JSON的用法讲解

一、概述 1.1MySQL的JSON概述 JSON 数据类型是 MySQL 5.7.8 开始支持的。在此之前,只能通过字符类型(CHAR,VARCHAR 或 TEXT )来保存 JSON 文档。 MySQL 8.0版本中增加了对JSON类型的索引支持。可以使用CREATE INDEX语句创建JSO…

百度百舸 AIAK-LLM 的大模型训练和推理加速实践

本文整理自 4 月 16 日的 2024 百度 Create 大会的公开课分享《百舸 AIAK-LLM:大模型训练和推理加速实践》。 今天要分享的主题是 AI Infra 相关的内容,主要内容分为四部分。 首先和大家一起讨论大模型给基础设施带来的挑战。第二部分则是向大家介绍一个…

[蓝桥杯 2021 国 ABC] 123(java)——前缀和,思维

目录 题目 解析 代码 这么久了,我终于能不看别人代码完整写出来了,呜呜呜。虽然过程也是很曲折。 题目 解析 这个题,找其中数列的规律,1,1,2,1,2,3,1,2,3,4,...,因此我们把拆分成行列,如下…

MT3036 第一节离数课后

思路: 这道题与之前的表达式求值题目不同的是,有not这个单目运算符。而且如果表达式错误,要输入error。 把true和false成为操作数,把and or not成为运算符。 考虑error的情况: 1.and 和 or是双目运算符&#xff0c…

【Flask项目结构搭建】

项目结构搭建 创建一个Flask项目 第一步 先创建一个python Package 起名叫做app第二步 把static文件夹和template文件夹放入app文件夹中第三步 创建settings.py配置文件 """ ENV "development" DEBUG True SQLALCHEMY_DATABASE_URI"mysql…

小程序蓝牙连接ESP32通信(可直接拿来用)

小程序中的蓝牙能力 在小程序中,要使用蓝牙能力(Beacon 除外)必须首先调用 wx.openBluetoothAdapter 初始化蓝牙适配器模块,其生效周期为调用 wx.openBluetoothAdapter 至调用 wx.closeBluetoothAdapter 或小程序被销毁为止。只有…

评价决策类-层次分析法

师从江北 问题引出 归一化处理:指标的数组[a b c]归一化处理得到[a/(abc),b/(abc),c/(abc)] 因为每个指标的重要性不同,所以要加上一个权重 如何科学的确定权重,就要用到层次分析法(AHP) 模型原理 建立递阶层次结构模…

VMware17虚拟机安装Kali Linux2024详解

目录 简介 一、环境搭建 二、下载ISO镜像 三、新建虚拟机 为虚拟机选择合适的操作系统类型和版本 分配适当的内存、硬盘空间和其他虚拟机配置选项 四、硬件配置 编辑虚拟机设置 选择安装介质 五、界面化安装配置 简介 Kali Linux是一个基于Debian的Linux发行版&#…

【记录】docker笔记(五):Docker网络-Network Namespace

Docker 网络理论基础 要了解docker网络,先了解如下基础概念。 Network Namespace Docker 网络的底层原理是 Linux 的 Network Namespace ,所以对于 Linux Network Namespace 的理解对 Docker 网络底层原理的理解非常重要。 简介 Network Name…

【董晓算法】动态规划之线性DP问题

前言: 本系列是看的B站董晓老师所讲的知识点做的笔记 董晓算法的个人空间-董晓算法个人主页-哔哩哔哩视频 (bilibili.com) 树塔-记忆化搜索 特点(前提):从上向下的累加和是不能重复使用的,从下向上的累加和是可以重…

C++进阶:哈希(2)位图与布隆过滤器

目录 1. 位图(bitset)1.1 引子:海量整形数据的处理1.2 结构描述1.3 位图实现1.4 位图相关题目练习 2. 布隆过滤器(BloomFilter)2.1 引子:海量非int类型数据处理(string)2.2 结构描述…

文心一言 VS 讯飞星火 VS chatgpt (252)-- 算法导论18.2 5题

五、因为叶结点无需指向孩子结点的指针,那么对同样大小的磁盘页面,可选用一个与内部结点不同的(更大的) t 值。请说明如何修改 B 树的创建和插人过程来处理这个变化。如果要写代码,请用go语言。 文心一言: 当我们在B树&#xff…

搭载全新升级viaim AI,讯飞会议耳机Pro 2首销价1399元起

2024年5月15日,人工智能硬件公司未来智能发布了讯飞会议耳机Pro 2、iFLYBUDS 2以及Kit 2三款旗舰新品,为用户带来全新升级的viaim AI,也为AIGC智能耳机树立了新标杆。 在发布会上,未来智能CEO马啸表示:在AIGC领域&…

【C++ 高阶数据结构 Test】AVL ~ 二叉搜索树

文章目录 1. AVL 树概念2. AVL 树节点的定义3. AVL树的插入4. AVL树的旋转4.1 新节点插入较高左子树的左侧---左左:右单旋4.2 新节点插入较高右子树的右侧---右右:左单旋4.3 新节点插入较高左子树的右侧---左右:先左单旋再右单旋4.4 新节点插…

【JAVA入门】Day05 - 面向对象

【JAVA入门】Day05 - 面向对象 文章目录 【JAVA入门】Day05 - 面向对象一、对象的设计和使用1.1 类和对象1.2 类的分类 二、封装三、private 关键字四、this 关键字五、构造方法六、JavaBean七、对象的内存图7.1 一个对象的内存图7.2 两个对象的内存图7.3 两个引用指向同一个对…

【练习】分治--快排思想

🎥 个人主页:Dikz12🔥个人专栏:算法(Java)📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 颜色分类 题目描述 题解 代码实现 排序数组 题目描述 题解 代码…

战网国际服下载教程 暴雪战网客户端一键下载安装教程分享

战网国际服务平台,又名Battle.net环球版,是暴雪娱乐操作的跨国界游戏交流平台,它消除了地域的隔阂,向全球范围内的游戏爱好者提供服务。与仅服务于特定地区的版本不同,国际版赋予了玩家自由穿梭于暴雪众多标志性游戏的…

ubuntu中如何删除常规匹配不到的乱码目录文件

原因是之前误操作创建了多个带空格的gerrit仓库的时候导致的服务器乱码,进入geriit服务器可以查看到如下的一个异常目录,常规rm -rf 操作的时候是匹配不到这个目录的。 这时候我们应该考虑使用inode的性质来匹配删除。 注:在Linux文件系统中…