Day02
变量的分类
按数据类型
- 基本数据类型(primitive type)
-
- 数值型
-
- 整型(byte<1>,short<2>,int<4>,long<8>)
- 浮点型(float<4>,double<8>)
- 整型(byte<1>,short<2>,int<4>,long<8>)
- 字符型(char<2>)
- 布尔型(boolean)
- 引用数据类型(reference type)
-
- 类(class)
- 接口(interface)
- 数组([])
tips: boolean 被编译为int类型,占4字节
boolean数组,编码为byte数组,每个boolean占 1字节
long型常量通常在后面加上 l 或者 L,java默认整型常量为 int 型
浮点型变量表示形式 有:十进制(必须有小数点),科学计数法(带E)
float:-3.403E38~3.403E38
double:-1.798E308~1.798E308
ps:float 类型常量后面是否必须加 f √,否则认为是double类型的常量,然后无法转换成float
对于整型常量,默认为int
对于浮点型常量,默认为double
字符编码
ASCII码
8位码,共计 128 个字符,包括 32 个不能打印的控制字符,只占用 后7位,第一位统一规定为0。
缺点:不能表示所有;不同语言表示的不同。
UNICODE码
UTF-8
类型转换
自动类型提升
-
byte,char,short -> int -> long -> float -> double
-
byte,short,char 三者任意两个做运算,结果总是int型
-
上述三个相同类型的任意两个做运算,结果亦为int,比如char+char,又比如byte+byte
long l = 123123;// 此处自动类型提升
long l2 = 123123123123;// 报错
long l3 = 123123123123L;// 正常
强制类型转换
(类型)变量名 // 与C语言类似
- 无精度损失
- 有精度损失
整型和浮点型内部从高到低的类型转换总是不被允许
整型和浮点型之间的类型转换会发生类型提升或者降低
Boolean类型无法转换为double!!
String字符串
声明
使用双引号:“”;
定义
可以接受其他各种类型的数据(对么?)(可以与八种基本数据类型进行运算且运算只能是连接运算)
实例1
"hello" + 3 + 4 // hello34
3 + 4 + "hello" // 7hello
注意
不能用一般方法把String转换为其他类型,可以使用某些特殊的方法
关于进制
所有数字在计算机底层都以二进制存储
- 二进制(binary):常量 以 0b 或 0B 开头。
- 十进制(decimal)
- 八进制(octal):常量以 0 开头。
- 十六进制(hex):常量以 0x 或 0X 开头,A-F不区分大小写。
运算符
- 算术
- 赋值
- 比较
- 逻辑
- 位
- 三元
与C语言类似
位运算符(直接对整数的二进制进行的运算)
- << 左移(在一定范围内,左移1位相当于 *2)
- >> 右移(在一定范围内,右移1位相当于 /2)
- >>> 无符号右移
- & 与
- | 或
- ^ 异或
- ~ 取反
Attention:无<<<
Attention:如果移位运算的另一个操作数为负值,则结果总是 0
eg:2 << -1 ~ 0
三元运算符
(条件表达式)?(表达式1):(表达式2)
其基本用法与C语言类似,可以嵌套
运算符的优先级
下附图,仅供查阅
单目运算符,三元运算符,赋值运算符 从右向左运算
小括号的优先级最高
程序的流程控制
顺序
整体上,程序是顺序执行的
分支
- if-else(条件判断结构)(类似与C语言中的使用)
- switch-case
循环
- while
- do-while
- for
- foreach(jdk1.5 方便遍历数组,集合)
上述为基本流程结构