int num = (1+1+2)/3
num
由于int是整数,所以num的值为1
这里涉及了数据的类型转换
数据的类型转换
自动转换
范围小的,可以自动装换为范围大的类型
整数:byte < short < int < long
小数:float < double
范围小的遇到范围大的会自动转换为范围大的
float a = 10;
double b = 10.25f;
int a = 10 + 2.5f;
float a = 10 + 200L;
任何整数 < 小数
java默认使用Unicode编码,(Unicode兼容ASCII)
- 因为ASCII使用7位或8位二进制数组合来表示128或256种可能的字符。一般理解为128种可能性;而Unicode编码有至少拥有上万字符编码
- ASCII编码将
默认的字符 转换为数字 表示,而Unicode编码将世界所有字符都装换为了数字
java里最大的范围是字符串,即java里的任何类型遇到 字符串转换为字符串
System.out.println(""+1+1);
System.out.println(2+""+2);
System.out.println(3+3+"");
char < int
char a = 'A';
System.out.println(a+0);
char myName = '欧';
System.out.println(myName+0);
回到笔记最开始的位置
int num = (1+1+2)/3
上述例子整数和整数相加得到整数,整数在除以整数,得到整数,所以结果为1
最快的解决办法为
double num = (1+1+2)/3.0
double num = (1+1+2)/3.0
强制装换
范围大的赋值给范围小的,必须强转
通用写法:
小范围数据类型 变量名 = (小范围数据类型)大范围的数据
int num = (int)12.3;
特殊:float类型
float a = 123.5;
float a = (float) 123.5;
float a = 123.5F;
题外话:还是那句老话,变量名要规范,如果实在不知道英语单词怎么拼写,可以拼音,当然拼音和英语不能混用。
|