区别一:字符常量用单引号引起的一个字符,而字符串常量是双引号引起的多个字符。
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
*/