文章目录
- Day 2
Day 2
2019年3月24日。
这是我学习Java的第二天。
这一天,我学到了以下的知识。
变量
在程序运行过程当中,其值可以发生变化的值。
- 变量,要有数据类型的规定。
- Java中变量的定义格式:数据类型 变量名 = 值。数据类型就是用来限定这个值的变化范围,限定是什么样类型的值。
- 变量其实就是在内存中开辟的一块空间,用来存储数据,可以通过数据类型声明。
- 变量首字母小写。
- 变量在使用之前必须赋值。
- 重新赋值,会覆盖掉旧值。
- 在同一个作用域里面,不能定义两个同名变量(作用域:就是一堆{}大括号所括 的范围)。
数据类型
数据类型分为:引用数据类型、基本数据类型。
基本数据类型如下所示:
基本数据类型 | 类型名 | 字节数 | 取值范围 |
整型 | byte | 1 | -128~127 |
整型 | short | 2 | ~-1 |
整型 | int | 4 | ~-1 |
整型 | long | 8 | ~-1 |
浮点型 | 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))。
- 三元运算符
三元运算符格式如下:
需要注意的是:
- 表达式的值为ture,返回结果1,;表达式的值为false,返回结果2。
- 三元表达式可以嵌套,但尽量不要嵌套,会影响代码的阅读性。
- 位运算符
位运算符是直接对二进制补码进行计算,因为使用的不多,故不再详述。
知识点总结
- 原码、反码、补码
- 变量
- 数据类型
- 自动类型提升、强制类型转换
- 运算符
- 运算符的优先级(()是最优先的)