一、变量的分类
1、成员变量:
写在类里面的,和主方法是平级
特点:
1)、在当前类里面,所有的方法和程序块都能使用
2)、 成员变量可以不赋值,直接使用,jvm会默认给成员变量赋值
数据类型默认值
| 数据类型 | 默认值 |
|---|---|
| 整数型 | 0 |
| 浮点型 | 0.0 |
| 字符型 | 空 |
| 布尔型 | false |
- 引用数据类型默认值都是null
- 成员变量不能重名
- 扩展:string str=null和string str=“null”区别【第一个定义了个字符串,变量为str,内容为空值。第二个定义了个string类型的变量str,并赋值了】
3)、成员变量不能重名
2、局部变量
写在主方法里面或者代码块里面
特点:
1)、只能在当前方法或者代码块里使用
2)、局部变量必须先赋值再使用,不然会报错
3)、局部变量不能重名
3、成员变量和局部变量的注意事项
- 局部变量和成员变量可以重名
- 使用的时候就近原则,从使用位置开始,先小范围查找,逐渐扩大范围
二、基础数据类型的转换
1、转换类型
-
隐式转换:类型自动提升,小的数据类型转换为大的数据类型【储存空间】
提升分为两种byte -->short -->int -->long->float->doublechar -->int -->long->float->double
把字符char赋值 给别的数据类型 ,实际是把对应的数字赋值给别的数据类型
把数字赋值给char实际是数字对应的字符赋值给char,以下输出字符为u
- 强制转换:把一个大的数据类型赋值给小的数据类型
语法:数据类型 变量名=(数据类型)值/变量名;
容易出现精度损失,比如浮点数转整数会丢掉小数部分
3、注意事项
- 强制转换有风险,可能存在精度损失。
- 精度损失:结果值和期待值不一致,小数转换到整数会出现小数全部舍弃,不存在四舍五入
4、常量的默认类型:
- 整数常量:默认类型是
int;
解决方法:
在数字后面+数据类型首字母,告诉jvm这是相关数据类型,而不是默认值
- 浮点常量:默认类型是
double
认为是大转小,通过强制转换赋值
加float告诉jvm是float值,不是double值
5、表达式
由常量和变量组成算式
// 将上面所有变量相加,得到一个表达式
// 2.当表达式中有变量类型大于 int的时候,运算后的结果以表达式中精度最高的为主
.当表达式中所有的变量类型小于 int的时候,运算后的结果都会自动提升为int类型
三、 运算符
1、数字运算
加法(+)减法(-)乘法 (*) 除法(/) 取模(%),取模也就是取余数
+的两种含义:
- 作为数学运算加法;
- 作为拼接符号,在数学的表达式里面,按照计算顺序一旦出现了字符串就不再是数学计算
2、自增自减运算
1)、 自增自减只能够用于变量【不能用于常量】,每次的改变步长为1.
- 自增运算
++作用于自身
int i=3;
i++;
++i
注意:
(1)、i++是先使用再自增,表达式里使用的就是自增前的值,不变。
(2)、++i是先自增再使用,即变量名在后面,整个表达式的值就是原,使用以后再自增,在原来的值加1
- 自增结果赋给其他变量
int i=3;
int j=i++;
3、赋值运算
把运算结果赋值变量本身的一种缩写
符号:=、+=、-=、*=、/=、%=
4、比较运算
比较运算的结果值是boolean类型的
符号: == 、>、 <、 >=、 <=、 !=
5逻辑运算
| 符号 | 描述 | |
|---|---|---|
| 与 | & | 要求两边结果都为true,结果才为true |
| 非 | ! | 取反 |
| 双与 | && | 和&意思结果一致,不同点在于具有短路效果,执行效率更高 |
- |--或:只要有一边为true,结果为true
- ||--双或:和|意思和结果一致,不同点在于具有短路效果,执行效率更高
【短路效果:当符号左边的比较运算已经能够确定整个表达式的结果,符号右边的表达式不执行】
//例子:
/* 1.小明参加2个学科的考试 java php
java考了一百分并且php考了一百分,奖励欧洲十日游
伪代码描述:java==100并且php==100
*/
6、三目运算[三元运算]
表达式:x?y:z
x:必须是一个boolean值【boolean变量,比较运算 ,逻辑运算】
y:当x的值为true整个三目运算的结果为y
z:当x的值为false整个三目运算的结果为z
例子:
- 可以将三目运算的结果赋值给一个变量接收