数据类型的运算
class demo{ |
那么:
class demo1{ |
默认转换
一般来说,我们在运算的时候,要求参与运算的数据类型必须一致。
而对于不同的数据类型之间的运算,会有一种默认的转换
默认转换(从小到大的转换):
- byte,short,char—int—long—float—double
- byte,short,char相互之间不转换,他们参与运算首先转换为int类型
boolean类型不能转换为其他的数据类型
思考
byte b1=3,b2=4,b; |
class demo2 {
public static void main(String[] args) {
//定义了三个byte类型的变量,b1,b2,b3
//b1的值是3,b2的值是4,b没有值
byte b1 = 3,b2 = 4,b;
//b = b1 + b2; // 这个是类型提升,所有有问题
b = 3 + 4; // 常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。
}
}因此出错的是
b=b1+b2;
- 因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。
- 常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
强制转换
从大的数据类型到小的数据类型。
格式
目标数据类型 变量 = (目标数据类型) (被转换的数据);
class demo2 { |
注意:
不要随意的去使用强制转换,因为它隐含了精度损失问题。
思考
看看下面两个定义有没有区别呢?
class demo3 { |
- f1其实是通过一个double类型转换过来的。
- 而f2本身就是一个float类型。
byte b = 130;
有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
/* |
为何会是这样一个结果?请看分析:
|
字符与字符串运算
class demo5 { |
通过字符和一个整数相加,会按照字符编码,ASCII码进行计算
我们给出一张表:ASCII码表
ASCII码 | 键盘 | ASCII 码 | 键盘 | ASCII 码 | 键盘 | ASCII 码 | 键盘 | |
---|---|---|---|---|---|---|---|---|
27 | ESC | 32 | SPACE | 33 | ! | 34 | “ | |
35 | # | 36 | $ | 37 | % | 38 | & | |
39 | ‘ | 40 | ( | 41 | ) | 42 | * | |
43 | + | 44 | ‘ | 45 | - | 46 | . | |
47 | / | 48 | 0 | 49 | 1 | 50 | 2 | |
51 | 3 | 52 | 4 | 53 | 5 | 54 | 6 | |
55 | 7 | 56 | 8 | 57 | 9 | 58 | : | |
59 | ; | 60 | < | 61 | = | 62 | > | |
63 | ? | 64 | @ | 65 | A | 66 | B | |
67 | C | 68 | D | 69 | E | 70 | F | |
71 | G | 72 | H | 73 | I | 74 | J | |
75 | K | 76 | L | 77 | M | 78 | N | |
79 | O | 80 | P | 81 | Q | 82 | R | |
83 | S | 84 | T | 85 | U | 86 | V | |
87 | W | 88 | X | 89 | Y | 90 | Z | |
91 | [ | 92 | \ | 93 | ] | 94 | ^ | |
95 | _ | 96 | ` | 97 | a | 98 | b | |
99 | c | 100 | d | 101 | e | 102 | f | |
103 | g | 104 | h | 105 | i | 106 | j | |
107 | k | 108 | l | 109 | m | 110 | n | |
111 | o | 112 | p | 113 | q | 114 | r | |
115 | s | 116 | t | 117 | u | 118 | v | |
119 | w | 120 | x | 121 | y | 122 | z | |
123 | { | 124 | \ | 125 | } | 126 | ~ |
通过看完这张表以后,我们要记住三个值: 'a' 97 'A' 65 '0' 48
思考
|
字符串数据和其他数据做+,结果是字符串类型。 |