数据类型
1 基本数据类型
1 byte = 8 bit 计算机最小的存储单位
数值型 byte[1] short[2] int[4] long[8] 存放整数
字符型 char[2] 存放单个字符
必须使用单引号
字符串使用双引号
char的本质是一个整数,在输出时,是unicode码对应的字符
可以对char直接赋值一个整数,输出的是对应字符
Char类型是可以进行运算的,相当于一个整数
字符编码表
ASCII | Unicode | Utf-8 | gbk | Gb2312 |
一个字节表示,一个128字符,实际上也可以表示256个字符 | 固定大小的编码,使用两个字节表示字符,字母和汉字统一占用两个字节 | 大小可变的编码,字母使用一个字节,汉字使用三个字节 | 可以表示汉字,字母使用一个字节,汉字使用两个字节 | 感觉….不如gbk |
浮点型 float[4] double[8]
浮点数 = 符号位 + 指数位 + 尾数位
尾数部分可能损失,造成精度损失
java浮点型常量默认为double型 声明为float常量 后加'f'或'F'
两种表示形式
十进制数形式 | 5.12 | 512.0f | .512(必须有小数点) |
科学计数法形式 | 5.12e2 (5.12*10的2次方) | 5.12E-2 (5.12/10的2次方) |
通常情况应使用double,因为他比float更精确
Num1 = 8.1/3 = 2.69999999…..
Num2 = 2.7
运算结果为小数进行相等判断时,应该以两数的差值的绝对值,在某个精度范围内判断
If(Math.abs(num1-num2) < 0.00000001{Sout 相等}
布尔型 boolean[1] 存放true false
只占一个字节
不可以用0或非0来代替true和false,与C语言不同
基本数据类型转换
当java程序进行赋值或者运算时,精度小的类型自动转化为精度大的数据类型
数据类型按精度(容量)大小排序
Char -> int -> long -> float -> double
Byte -> short -> int -> long -> float -> double
有多种数据类型混合运算时,系统先自动将所有数据转化成容量最大的那种数据类型进行计算
Byte short 和 char 之间不会互相自动转换
强制类型转换
使用时加上强制转换符() 会造成精度降低或者溢出
Int I = (int) 1.9;
强转符号只对于最近的操作数有效,往往使用小括号提升优先级
byte和short类型进行运算时,当作int类型处理
基本数据类型和String类型的转换
基本类型转为String类型
将基本类型加 + ""即可
String str1 = n1 + ""
String类型转为基本数据类型
调用parseXX方法
Integer.parseInt("123")
Double.parseDouble("123.1")
……
2 引用数据类型
类 class
接口 interface
数组 []
3 运算符
算术运算符
10 % -3 == 1
-10 % -3 == -1
A % b == a - a / b * b
逻辑运算符
短路与 && 短路或 || 取反!
逻辑与 & 逻辑或 | 逻辑异或 ^
赋值运算符
复合赋值运算符会进行类型转换
三元运算符
条件表达式 ? 表达式1 : 表达式2;
如果条件表达式为True 运算后结果为表达式1
如果条件表达式为False 运算后结果为表达式2
关系运算符
位运算符
4 标识符
自己起名字
5 关键字 保留字(goto,var等不能用!)
6 键盘输入语句
需要一个扫描器(对象)Scanner(Scanner类表示 简单文本扫描器)
导入该类所在的包 java.util.*
创建该类对线(声明变量)
调用里面的功能
7 进制
二进制 0 1 以0b或0B开头
十进制
八进制 以0开头
十六进制 以0x或0X开头 A-F不区分大小写
二进制转十进制
从最低位开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和
八进制转十进制
从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和
十六进制转十进制
从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和
十进制转二进制
除以2直到商为0,倒序输出余数
十进制转八进制
除以8直到商为0,倒序输出余数
十进制转十六进制
除以16直到商为0,倒序输出余数
二进制转八进制
先转十进制,再转八进制
二进制转十六进制
先转十进制,再转十六进制
八进制转二进制
十六进制转二进制
8 原码 反码 补码
二进制的最高位是符号位:0表示正数 1表示负数
正数的原码 反码 补码都一样
负数的反码 == 它原码符号位不变,其他位取反
负数的补码 = 它的反码+1
负数的反码 = 负数的补码 - 1
0的反码,补码都是0
java没有无符号数,即所有的数都是有符号的
计算机运算的时候,都是以补码的方式来运算的
看运算结果时,要看它的原码
9 位运算符
直接进行一个略过
10 控制结构
顺序控制
java中定义变量时采用合法的向前引用
单分支 双分支 多分支
分支控制 if-else:让程序有选择地执行
Switch(){
Case 常量1:执行语句块1; break;
Case 常量2:执行语句块2; break;
Default:default语句块; break;
}
Switch 表达式数据类型,应该和case后面的常量类型一致 或者是可以自动转换成相互比较的类型
default子句是可选的,当没有匹配的case,执行default
break语句用来在执行完一个case分支后使程序跳出switch语句块,如果没有写break,程序会顺序执行到switch末尾
循环控制
Break
Continue
Return