文章目录
- Day 2
 
- 变量
 - 数据类型
 - 自动类型转换
 - 强制类型转换
 - 常量优化机制
 - 字符参与运算
 - +(加号)的运用
 - 运算符
 - 知识点总结
 
Day 2
2019年3月24日。
 这是我学习Java的第二天。
 这一天,我学到了以下的知识。
变量
在程序运行过程当中,其值可以发生变化的值。
- 变量,要有数据类型的规定。
 - Java中变量的定义格式:数据类型 变量名 = 值。数据类型就是用来限定这个值的变化范围,限定是什么样类型的值。
 - 变量其实就是在内存中开辟的一块空间,用来存储数据,可以通过数据类型声明。
 - 变量首字母小写。
 - 变量在使用之前必须赋值。
 - 重新赋值,会覆盖掉旧值。
 - 在同一个作用域里面,不能定义两个同名变量(作用域:就是一堆{}大括号所括 的范围)。
 
数据类型
数据类型分为:引用数据类型、基本数据类型。
 基本数据类型如下所示:
基本数据类型  | 类型名  | 字节数  | 取值范围  | 
整型  | byte  | 1  | -128~127  | 
整型  | short  | 2  | 
  | 
整型  | int  | 4  | 
  | 
整型  | long  | 8  | 
  | 
浮点型  | float  | 4  | \  | 
浮点型  | double  | 8  | \  | 
布尔型  | boolean  | 1  | \  | 
字符型  | char  | 2  | \  | 
自动类型转换
byte、short、char在参与数学运算时,会自动提升为int类型。如果还有long、float、double参与运算,则会相应的提升为long、float、double。布尔类型不参与数学运算。byte、short、char之间不发生转换。
强制类型转换
强制将一个数据,转换成我们要的数据类型。强制类型转换,有可能会发生精度损失的问题(因为会丢掉多余字节)。
常量优化机制
多个常量相加时,它会先算出结果,看有没有在这个数据类型的范围内,如果不在就会报错。
面试题:char可以存储一个汉字吗?
char可以存储一个中文汉字,但是需要看编码格式。
 char占两个字节。在GBK编码、ANSI编码中一个汉字占用两个字节,而utf-8编码中一个汉字占用三个字节。所以在GBK或者ANSI编码中,char可以存储一个中文汉字。而在utf-8中,char不可以存储一个汉字。
字符参与运算
会去对照ASCII表,且空格也是字符。
 为了便于查询,以下列出ASCII码表:第128~255号为扩展字符(不常用)
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  | ~  | 
+(加号)的运用
- 可以当做一个数字运算符来用,起到相加的作用。
 - 当加号运算两端只要任意一端是一个字符串,那么加号就起连接符的作用,就会将两端的内容拼接起来,形成一个新的字符串。
 
运算符
对常量或变量进行操作的符号。
 运算符的分类:数学运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符,位运算符。
- 数学运算符
 
符号  | 作用  | 
+  | 加法  | 
-  | 减法  | 
*  | 乘法  | 
/  | 除法  | 
%  | 取余  | 
++  | 自增1  | 
–  | 自减1  | 
需要注意的是:
++、–在单独使用时,在前或在后都一样。而在混合使用时。++/–在前,是先运算再使用;++/–在后,是先使用再运算。
- 赋值运算符
 
符号  | 作用  | 
=  | 赋值  | 
+=  | 加等于(a += b等价于a = a + b)  | 
-=  | 减等于(a -= b等价于a = a - b)  | 
*=  | 乘等于(a *= b等价于a = a * b)  | 
/=  | 除等于 (a /= b等价于a = a / b)  | 
%=  | 模等于(a %= b等价于a = a % b)  | 
需要注意的是:
+=、-=、*=、/=会自动帮你强制类型转换,它会判断运算完的结果在不在这个数据类型的范围内,如果不在会自动强制转换。
- 比较运算符
 
符号  | 作用  | 
>  | 大于  | 
>=  | 大于等于  | 
<  | 小于  | 
<=  | 小于等于  | 
==  | 等于  | 
!=  | 不等于  | 
需要注意的是:
比较运算符的运算结果是布尔类型(即true或false)。
- 逻辑运算符
 
符号  | 作用  | 
&  | 与  | 
丨  | 或  | 
!  | 非  | 
^  | 异或  | 
&&  | 逻辑与  | 
丨丨  | 逻辑或  | 
需要注意的是:
- 逻辑运算符的运算结果是布尔类型(即true或false)。
 - &两端都需要运算,&&只要左端为false,右端不需要运算(为了代码的运行效率,右端无论是true还是false都不影响最后结果(false))。
 - 丨两端都需要运算,丨丨只要左端为true,右端不需要运算(为了代码的运行效率,右端无论是true还是false都不影响最后结果(true))。
 
- 三元运算符
三元运算符格式如下: 
表达式?结果1:结果2;
需要注意的是:
- 表达式的值为ture,返回结果1,;表达式的值为false,返回结果2。
 - 三元表达式可以嵌套,但尽量不要嵌套,会影响代码的阅读性。
 
- 位运算符
位运算符是直接对二进制补码进行计算,因为使用的不多,故不再详述。 
知识点总结
- 原码、反码、补码
 - 变量
 - 数据类型
 - 自动类型提升、强制类型转换
 - 运算符
 - 运算符的优先级(()是最优先的)
 
                









