Java学习笔记(变量、标识符、表达式)
一、变量
- 概念:计算机内存中的一块存储空间,是存储数据的基本单元。
- 组成部分:数据类型,变量名,值
- 变量的使用
① 声明
数据类型 变量名;
int a;//在内存中开辟处一块整数类型的空间
② 赋值
变量名 = 值;
a = 1;//将整数的值赋予给变量
③ 使用
通过变量名直接使用
注意:java语言是强类型的编程语言,要求变量的类型必须和数据的类型一致。
类型 字节 取值范围(二进制) 取值范围(十进制)
byte 1字节 -27~27-1 -128~127
short 2字节 -215~215-1 -32768~32767
int 4字节 -231~231-1 -2147483648~2147483647
long 8字节 -263~263-1 - 变量的其他定义方式
- 先声明再赋值【常用】
数据类型 变量名;
变量名 = 值; - 声明并赋值【最常用】
数据类型 变量名 = 值; - 对于多个同类型的变量的声明于赋值【了解】
数据类型 变量名1,变量名2 = 值2 …变量名n=值n;
注意:值2是为变量名2赋的值,值n是为变量名n赋的值
二、数据类型
Java中的变量具有严格的数据类型区分。(强类型)
在Java语言中,任何一个值,都有其对应类型
Java中的数据类型
a)基本数据类型|简单数据类型:整数,小数,字符,布尔 8种
b)引用数据类型|对象数据类型:字符串,数组,对象
1.整数类型
类型 | 字节 | 取值范围(二进制) | 取值范围(十进制) |
---|---|---|---|
byte | 1字节 | -2^7 - 2^7-1 | -128-127 |
short | 2字节 | -2^15 - 2^15-1 | -32768-32767 |
int | 4字节 | -2^31 - 2^31-1 | -2147483648-2147483647 |
long | 8字节 | -2^63 - 2^63-1 |
字面值:一个变量的值。byte: -128~127之间的任何一个数都可以作为byte的字面直.
注意:int为整数的默认类型,如需为long类型变量赋值,需在值的后面加L/l,建议L
2. 小数/浮点数
类型 | 字节 | 精度 |
---|---|---|
float | 4字节 | 单精度 |
double | 8字节 | 双精度 |
注意:浮点数的默认类型为double,如需为float类型的变量赋值,需要在值得后面加上F/f;可以使用科学计数法,float取值范围比int,long大
3. 字符类型
类型 | 字节 | 取值范围 | 字符编码 |
---|---|---|---|
char | 2字节 | 0~65535 | Unicode字符集(万国码) |
Unicode字符集同样支持ASCII编码(美国标准信息交换码)
Unicode中每一个字符对应着一个十进制的整数,从而可以使用多种方式赋值
a)定义方式:
4. 字符赋值:char 变量名 = ‘字符’; 通过 ‘’ 描述为字符赋值
5. 整数赋值:char 变量名 = 整数;(整数是十进制的数)
6. 进制赋值:char 变量名 = ‘16进制表示方式’;
b)转义字符 \
转义字符 | 含义 |
---|---|
\’ | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
\n | 换行 |
\t | 缩进 |
4.布尔类型
类型 | 字面值 | 含义 |
---|---|---|
boolean | true/false | 仅描述真或假 |
可以直接赋值true/false
也可以赋值一个结果为true/false的表达式
注意:不能参与算数运算
5.引用数据类型(String)
类型 | 字面值 | 含义 |
---|---|---|
String | 任何“”引起来的字面值 | Unicode字符编码 |
三、类型转换
自动类型转换
a) 两种类型相互兼容
b) 目标类型大于源类型
目标类型:要转换成的数据类型
源类型:原始的类型
目标类型的取值范围大于源类型的取值范围。
自动类型转换可以直接转换。
short s = 123;//short:源类型
int a = s;//int :目标类型
强制类型转换
a) 两种类型相互兼容
b)目标类型小于源类型
目标类型 变量名2 = (目标类型)源类型的变量名1;
强制类型转换规则
a) 整数长度足够,数据完整
例:short s = 120; byte b = (byte)s; //b = 120
b) 整数长度不够,数据截断
例如;short s = 132; byte b = (byte)s; //b=-124
c)小数强转为整数,小数部分截断
例如:double d = 1.5; int a = (int)d; //a=1;
d) 字符整数转换成int,数据完整
例: char c = 65; int i = c; //i=65;
注意:数字类型的取值范围
byte —> short ----> int —> long —> float ----> double
char —> int ----> long —> float —> double
e) boolean类型取值为true/false,不可与其他类型转换
四、表达式
使用运算符连接的变量或者字面值,并且可以得到一个最终的结果。
自动类型提升
进行算数运算时:
- 如果两个操作数有一个double,计算结果提升为double
- 如果操作中没有double,有一个float,计算结果提升为float
- 如果操作中没有double,float,有一个long,计算结果提升为long
- 如果操作中没有double,float,long,有一个int,计算结果提升为int
- 如果操作中没有double,float,long,int ,均为byte或者short,计算结果提升为int
注意:任意类型与String相加时,意为拼接,其结果自动提升为String
五、运算符
1. 算数运算符:两个操作数进行计算
操作符 | 含义 |
---|---|
+ | 求和 |
- | 求差 |
* | 求积 |
/ | 求商 |
% | 取模 |
2. 一元运算符(只有一个操作)
操作符 | 含义 |
---|---|
++ | 递增 变量值+1 |
– | 递减 变量值-1 |
a++与++a的区别
a++ :先将a的值赋值给表达式(a++),然后再给a的值+1;先使用后+1
++a :先将a的值+1,然后赋值给表达式(++a);先+1再使用
3. 赋值运算符:等号右边的值赋值等号左边
操作符 | 含义 |
---|---|
= | 直接赋值 |
+= | 求和之后再赋值 |
-= | 求差之后再赋值 |
*= | 求积之后再赋值 |
/= | 求商之后再赋值 |
%= | 求模(取余数)之后再赋值 |
注意:a+=1;相当于a=a+1;但是a=a+1可能会造成类型的提升,不建议使用,而a+1;不会造成类型提升。
4. 关系运算符:两个操作数据进行比较,结果为boolean类型
操作符 | 含义 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 判断两值是否相同 |
!= | 不等于 判断两值是否不相同 |
5. 逻辑运算符:两个boolean类型的操作数据或者表达式进行逻辑比较
操作符 | 含义 | 描述 |
---|---|---|
&& | 与(并且) | 两个操作数据同时为true,结果为true |
|| | 或(或者) | 两个操作数据有一个true,结果为true |
& | 与 | 两个操作数据同时为true,结果为true |
| | 或 | 两个操作数据有一个为true,结果为true |
! | 非(取反) | 一个操作数取反,真既是假,假既是真 |
&&与&的区别
&&:短路运算符;前者如果为false,后者不再判断,结果就是false
&:非短路运算符;前者如果为false,后者接着判断,结果还是false
6.三元运算符:将判断后的结果赋值给变量
操作符 | 语法 | 描述 |
---|---|---|
?: | 布尔表示式?结果1:结果2 | 当表达式结果为true,取结果1;当表达式的结果为false,取值2 |