1.java变量
1.在jvm内存中开辟了一块空间,用来存储数据
2.变量使用前:
1)声明/定义: 类型 + 变量
int a;
2)初始化: 第一次赋值
a = 10;
a = 20;//再次赋值
2.类型: 基本数据类型 + 引用数据类型
进制:二进制/十进制/八进制/十六进制
超过10 用小写字母小时 a表示10 f表示15
二进制(符号位):二进制中只能存放数字的0和1
最高位表示符号位:
0表示正数,正1表示负数
原码:符号位0表示正数,正1表示负数,剩下数字位表示数字本身
反码:正数的反码和原码相同,负数的反码符号位不变,其他位按位取反
补码:正数的补码和原码相同,反码+1[负数的补码符号位不变,其他位按位取反再+1]
原码 补码 反码
正数 正数 正数 正数
负数 负数 反码+1 符号位不变,其他位按位取反
补码:1 000 0000
反码:借位减1 -> 1 1000 0000 -> 1 111 1111
原码:1 111 1111 -> 1 1000 0000 -> -128
基本数据类型:8种
整型:byte/short/int/long
浮点型:double/float
字符型:char
布尔类型:boolean
返回 true 或 false
-1
原码: 1 000 0001
反码: 1 111 1110
补码: 1 111 1111
-2:
原码: 1 000 0010
反码: 1 111 1101
补码: 1 111 1110
-3:
原码: 1 000 0011
反码: 1 111 1100
补码: 1 111 1101
-4
原码: 1 000 0100
反码: 1 111 1011
补码: 1 111 1100
最小值推算:
补码:1 000 0000
反码:借位减1 -> 1 1000 0000 -> 1 111 1111
原码:1 111 1111 -> 1 1000 0000 -> -128
byte -> short -> int -> long -> float -> double
整型:
整型的默认直面量/直接量是int类型
byte: 1字节 = 8位
byte的最大值: 0 111 1111 -> 2^7-1 = 127
btye的最小值: 1 000 0000 -> 2^7
取值范围: -128 ~ 127
-1 ~ -128 0~127
short:2字节 = 16位
取值范围: -2^15 ~ 2^15-1
int:4字节 = 32位
取值范围: -2^31 ~ 2^31-1
long:8字节 = 64位
取值范围: -2^63 ~ 2^63-1
使用long类型:必须用L/l标记
long = 0时,格林威治时间的 1970年1月1日 00:00:00
浮点型:
浮点型的默认字面量/直接量就是double
float: 32位
符号位 指数位 尾数位
1 8(^127) 23
必须使用f/F标记是float类型
double: 64位
符号位 指数位 尾数位
1 11(^1023) 52
客观存在问题:
精度缺失,两个浮点型就不能用来判断是否相等
字符型: 32位
取值范围: 0 ~ 2^32-1 = 65535
'\u0000' ~ '\uffff'
ASCII码中特殊的值:
48 = 字符0
97 = a
65 = A
0 = 表示空字符
运算符
1.算数运算符
+ - * \ %(取余)
2.赋值运算符
+= -= *= = =
3.逻辑运算符
& | ! ^ && ||
& &&: 一假即假 -> 只要出现一个结果是false那就是false
| ||: 一真即真 -> 只要出现一个结果是.true那么就是true
&& 表示短路操作:
一旦出现结果,就不再继续执行下去
4.比较运算符
>= <= == != > <
结果返回的是: boolean类型(要么是ture要么是false)
5.位运算符 -> 二进制的计算有关
&: 0 和 1 &上,全是0
|: 0 和 1 |上,全是1
^: 相同为0,不同为1
6.位移运算符 -> 二进制的计算有关
<< >> >>>
>>: 补符号位,符号位是正则补0,符号位是负则补1
>>>: 永远只补0,所以得到的永远都是正数,并且是一个正大数
7.三目(三元)运算符
boolean类型表达式[结果返回ture或false] ? 值1 : 值2
结果返回ture,则得到结果 值1
结果返回false,则得到结果 值2
作用:做比较判断
逻辑控制语句
1.顺序结构
2.条件分支结构
如果xxx 就xxx : if
如果xxx 就xxx, 否则 就xxx : if .. else
如果xxx 就xxx, 否则如果xx 就xx, 否则如果.....否则 if - else if - else if .... - else
switch() - case:仅适用于判断是否相等的情况int\char\short\byte
JDK1.7之后,也支持字符串 String "" ;
3.循环结构
for: 有规律,或者知道次数
while(条件): 当...的时候, 就...
特点: 不确定循环次数
先随机生成一个1~1000的整数, 用户猜数字[控制台输入]
打印结果:大了还是小了
do-while(条件): 做.. 直到...
在一定程度上,两种循环可以互相替换
特殊: 在第一次循环条件就不满足的时候