Java面试之Java基础3——字符型常量与字符串常量的区别

本文对比了Java中字符常量与字符串常量的区别,包括数据类型、表示方式、运算特性以及内存占用。字符常量是基本数据类型char,存储单个字符;字符串常量是引用数据类型String,用于存储多个字符。字符可以参与运算,而字符串是地址值。字符占2字节,字符串长度可变。
摘要由CSDN通过智能技术生成

区别一:字符常量用单引号引起的一个字符,而字符串常量是双引号引起的多个字符

public class Demo {
    /*
        字符常量:
            1.数据类型是char,属于基本数据类型
            2.使用单引号引用
            3.只能是一个字符,如果是多个字符,会报编译错误:Too many characters in character literal
            4.可以是中文字符
     */
    private static final char c = 'a';
    /*
        字符串常量:
            1.数据类型是String,属于引用数据类型,不属于基本数据类型中的一种
            2.使用双引号引用
            3.可以是一个字符,但更多情况下,是多个字符
     */
    private static final String str = "abc";

    public static void main(String[] args) {
        System.out.println(c);
        System.out.println(str);
    }
}
/**
 * 打印结果:
 * a
 * abc
 */

区别二:字符常量相当于一个整型值(ASCII值),可以参与运算;而字符串常量是一个地址值,代表该字符串在内存中存放的位置。

public class Demo {
    /*
        字符常量:
            1.字符常量可以参与运算,运算时作为整型值进行运算的
            2.通过(int)可以将一个字符常量或变量强制转型为int类型,输出的就是ASCII对应的十进制值
            3.也可以通过一个(char)将一个整型常量或变量强制转型为char类型,输出的就是ASCII对应的字符
     */
    private static final char c = 'a';
    /*
        字符串常量
            1.字符串常量表示的是在内存中的一个地址值
            2.字符串加上一个整型值,结果是字符串相连,而不是相加运算
     */
    private static final String str = "abc";

    public static void main(String[] args) {
        System.out.println(c);
        System.out.println((int) c);
        System.out.println(c + 1);
        System.out.println((char) (c + 1));

        System.out.println(str);
        System.out.println(str + 1);
    }
}
/**
 * 打印结果:
 * a
 * 97
 * 98
 * b
 * abc
 * abc1
 */

下面是来源于百度百科的ASCII码表,可以看到对应的十进制97对应字符'a'。

区别三:字符常量只占据2个字节,这是Java规定的,而字符串常量占若干个字节,到底是多少个,由字符串里面的字符个数决定。

public class Demo {
    /*
        字符常量:
            1.可以通过 包装类型.BYTES 获取各个基本数据类型的字节数
            2.char的包装类型是Character,它是2个字节
     */
    private static final char c = 'a';
    /*
        字符串常量:
            1.字符串属于引用数据类型,而且字节数由里面具体有多少个字符决定的
     */
    private static final String str1 = "a";
    private static final String str2 = "abc";

    public static void main(String[] args) {
        System.out.println(Character.BYTES);

        System.out.println(str1.getBytes().length);
        System.out.println(str2.getBytes().length);
    }
}
/**
 * 打印结果:
 * 2
 * 1
 * 3
 */

 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值