数据类型转换
自动转换:
小转大 由精度低的自动转换为精度高的
byte char short int long float double
byte与char char与short不能自动转换 因为char没有负数的范围
boolean不能与其他7种类型转换
特例:
byte b=12;
表达式结果的类型是表达式中最高的精度类型,如:
double d='A'+4+4.8;//结果也为double类型
强制转换:
大转小
格式:数据类型 变量名 = (数据类型)值或变量;
float f = (float)2.9;
常量
固定不变的值:
整型常量 浮点数常量 字符常量 布尔常量 字符串常量
变量
官方描述:计算机分配一块用来存储数据的内存地址
通俗描述:存放数据的容器
分类:按照 作用域 作用范围 声明的位置
1.成员变量:
声明在类中 整个类中都可以使用 有默认值
2.局部变量:
声明在方法或代码块中 作用在声明的方法或者代 码块中 没有默认值 使用之前需要赋予初始值
注:如果成员变量与局部变量重名的时候 取值采取就近原则
static作用:jvm优先加载
声明方式:
1.声明同时赋值
int a=99;
2.先声明后赋值
int a;
a=99;
3.同时声明多个同种类型的变量
int a=1;b=2,c=3;
表达式
由常量 变量 运算符 括号组成的按照一定规则得到一定结果,如:
double a = 1.8+1+'aaa';
注:括号可以提高优先级
运算符
算术运算符
加 | 减 | 乘 | 除 | 取模(求余数) |
---|---|---|---|---|
+ | - | * | / | % |
注:如果是整数用来相除 不会保留小数 10/3=3
赋值运算符
= | += | -= | *= | /= | %= |
a=1; | a+=1;//a=a+1 | a-=1;//a=a-1 | a*=1;//a=a*1 | a/=1;//a=a/1 | a%=1;//a=a%1 |
比较运算符
用来比较两个常量或者变量 结果为布尔类型
等于 | 不等于 | 大于等于 | 小于等于 | 小于 | 大于 |
---|---|---|---|---|---|
== | != | >= | <= | < | > |
逻辑运算符
用来计算两个布尔类型的值或者表达式 结果也为布尔类型
| || 两个表达式中 由一个为true 逻辑运算为true
& && 两个表达式 同时为true的时候 逻辑运算为true
! 取反
^ 两个表达式不同的情况才为true
||或者&&都具有短路,即:如果前面的结果可以确定整体的结果,则后面的不在执行
位运算
& | ^ ~ << >>>>>
位运算就是 二进制的位进行运算。
示例:比如计算 125+176 ,从数学的角度是怎么计算的?
同理,位运算也类似,比如 3&4
可以把1看成是true,把0看成是false
\1. & :与 位运算,两边为1,结果为1
\2. | :或 位运算,有一个为1,结果为1
\3. ^ : 异或,两边不一样,就为1,否则为0
\4. ~ : 取反,1变成0 ,0 变成1 ~(-5)结果4
\5. << : 向左位移动,例如1<<3 结果8
\6. >>: 向右位移动,例如8>>2
\7. >>>: 无符号向右移动
三目运算符
由?和:分割的三个表达式组成 X?Y:Z;
X为布尔类型的值或者表达式
如果X为true 三目运算的结果为Y
如果X为false 三目运算的结果为Z
Y和Z最好同种类型
自增自减
自增是表示对变量在原来的基础之上增加1
语法: i++ 或 ++i
i++ 或 ++i是一个表达式 是一个整体
1.都会对i的值增加1
2.表达式的值
i++这种变量名在++的前面 i++表达式的值等于i自增之前的值
++i这种变量名在++的后面 ++i表达式的值等于i自增之后的值