解析java中的字面量和字符类型

1.字面量含义

固定不变的量,我们人为所给的一些数据。例如77和88都是整型字面量,1.88和1.99F是浮点型字面量,'中’是字符型字面量,"dfguyfg"是字符串字面量。

2.为什么要用字面量?

它是和变量进行区分的一个概念,字面量是赋值给变量的数据,也就是说变量里面存储的值就是字面量.

3.怎么用?

a.整数型字面量

a.1 整型字面量在java当中的数据类型默认都是int类型

a.2 但是如果定义的变量的数据类型是byte,short char这三种且没有超过他们的取值范围,那么此时就可以直接赋值,不会出现int类型转换成byte类型可能有损失这种情况。

那么如何表示long类型的字面量呢?
在数值后面加上L或l即可(建议大写,小写l看上去像个1),如189L就是个long类型的字面量

b.浮点型字面量

浮点型字面量在java当中的数据类型默认都是double类型
那么如何表示float类型的字面量呢?
在数值后面加上F或f即可,例如1.99f,9.89F都是属于float类型的字面量

4.易错问题分析与解答

a.整数型字面量

1.阅读以下代码,你觉得是报整数过大,超出其范围的错误还是int类型转换成byte类型可能会有损失的错误呢?
public class Test{
  public static void main(){
      byte m=128;
  }
}

正确答案: 在cmd窗口中运行时程序会报错,提示的报错信息为: 不兼容的数据类型,int类型转换成byte类型可能会有损失

理由:因为128属于整数类型的字面量,而整数类型的字面量默认都是int类型的数据,你把一个int类型的数据赋值给一个byte类型的变量,就相当于是大范围的数传给小范围的数,是需要强转的,而此题并没有进行强转,因此会出现int类型转换成byte类型会有损失这样的错误提示

代码运行截图如下所示:

java中字母对应的数字 java中字母是什么类型_java

2.阅读以下代码,你觉得是报整数过大,超出其范围的错误还是不报错???
public class Test{
  public static void main(){
      long m=2147483648;
      //int类型的上限值为21474836647
  }
}

正确答案: 在cmd窗口中运行时程序会报错,提示的报错信息为: 过大的整数: 2147483648

理由:因为2147483648属于整数类型的字面量,只有在数值后面加上了L或l才代表该数为long类型的字面量数据,而整数类型的字面量默认都是int类型的数据,

而int类型的取值范围为[-2147483648,2147483647],很显然2147483648超出了int类型的范围,因此会出现整数过大(实际上意思是超出了其取值范围)的错误提示

代码运行截图如下所示:

java中字母对应的数字 java中字母是什么类型_字面量_02

b.浮点型字面量

1.阅读以下代码,你觉得是报浮点数过大,超出其范围的错误还是double类型转换成float类型有损失
public class Test{
  public static void main(){
      float number=2147483648.0;
  }
}

正确答案: 在cmd窗口中运行时程序会报错,提示的报错信息为: 不兼容的数据类型,double类型转换成float类型可能会有损失

理由:因为2147483648.0属于浮点型类型的字面量,而浮点型类型的字面量默认都是double类型的数据,这时你把一个double类型的数据赋值给一个float类型的变量,就相当于是大范围的数传给小范围的数,是需要强转的,而此题并没有进行强转,因此会出现double类型转换成float类型可能会有损失这样的错误提示

代码运行截图如下所示:

java中字母对应的数字 java中字母是什么类型_java_03

2.阅读以下代码,你觉得是报错还是不报错???
public class Test01 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		float m=2147483648.0f;
		System.out.print(m);
		//float类型的上限值和int类型的上限不是一样的,它比int类型的上限要大很多
	   //因此它不能用2147483648去进行范围的比较操作
	  //这个.0也可以去掉,为了使大家看的更具体
	}
}

正确答案: 在eclipse里面可以运行,不报错

理由: 浮点型的数据值的算法和整数型数据值的算法完全不一样,且float类型比int类型的上限值2147483647要大很多

代码运行截图如下所示:

java中字母对应的数字 java中字母是什么类型_数据类型_04

解析字符类型

1.含义

用来标识单个英文字母、单个中文含子或者特殊符号(转义字符)的数据类型

2.为什么要用这个?

因为电脑是看不懂我们写的英文字母或者中文汉字的,所以需要一个映射表,根据映射表把英文字母或者中文汉字解析成对应的数字,数字再进一步解析成0101这种的机器语言,这样操作系统就可以根据机器语言对英文字母和中文单词进行操作了。

3.怎么用?

语法: char 字符类型的变量名=‘单个字符’

char 字符类型的变量名=数字;

需要注意的事项如下:

1.第二种语法实际上是拿数字去映射表上找对应的字符,然后把字符存储到char类型的变量中.因此数字不能超过char类型的取值范围[0,65535]

2.char类型的变量无论是采用哪种语法,输出的结果都是一个字符,如果你想让其输出字符在映射表上对应的数字,只需要输出的字符前加上**(整型数据类型)**即可,这个整型数据类型是byte,short,int,long都行,示例代码如下所示:

public class Work01 {
	public static void main(String[] args) {
		char temp='F';
		System.out.print((long)temp);
	}
}

示例运行截图如下所示:

java中字母对应的数字 java中字母是什么类型_java_05