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

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

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
 */

猜你喜欢

转载自blog.csdn.net/cnds123321/article/details/113385921