## 关键字
概述:被java赋予特定含义单词
class:定义类
public:表示权限公共的
注意:
1、关键字都是小写的
2、在开发工具例如eclipse idea对于关键字由特殊标识
3、goto const是特殊的关键字,又称为保留字;目前还没有特殊含义;
标识符
概念:给类 接口 方法 变量 常量等起名字的字符序列
组成规则:必须遵守,如果不满足则编译会报错
1、英文大小写字母,中文汉字 HelloWorld
2、数字 Demo1
3、$ _
注意:
1、除了以上三类其他字符都不能用于组成标识符
2、不建议使用中文汉字
3、数字不能开头也不能单独使用
4、$ _有特殊的场景 不建议随便使用
5、标识符不能和关键字冲突
6、Java严格区分大小写
组成规范:建议遵守,如果不满足仍然可以正常执行
为了提高程序的可读性
见名知意 Person Animal Dog
驼峰规则
小驼峰:
从第二个单词开始首字母大写
方法:main addUser queryUserById queryUserByNameAndPasswd
变量: age idCard
大驼峰:
每个单词首字母都要大写
类:HelloWorld Demo
接口 枚举
进制
概念:
计数时进位的机制
分类:
十进制 二进制 八进制 十六进制
十进制:满十进一 0-9
0 1 2 … 9 10 11 12 … 19 20 …
二进制:满二进一 0、1
0 1 10(2) 11(3) 100(4) 101(5) 110(6) 111(7)…
八进制:满八进一 0-7
0 1 2… 7 10(8) 11(9) 12(10)…
0:000
7:111
十六进制:满十六进一 0-9 a-f(A-F)
a(10) b(11) … f(15) 10(16) 11(17) 12(18)… 19 1a 1b…
十进制和二进制:
十进制-》二进制:
总结:
将十进制数不停的除2取余,直到商为0,将余数反转组合,即得到对应的二进制数;
练习:
8-》1000
15-》1111
二进制-》十进制:
总结:
二进制每一位上的数字乘以2的相应的幂次并求和,得到的就是十进制数
幂次:
从最低位-》最高位 +1
最低位:最右边 0
最高位:最左边 位数-1
二进制和八进制转换:
三位二进制数组成了一位八进制数
二进制-》八进制:
二进制:11101
011 101
3 5
八进制:35
总结:将二进制数从最低位开始三位一组,如果不足三位,在左侧补0;将每一组转为0-7中的某一个数,将转换完的数字组合即得到八进制数
八进制-》二进制:
八进制:35
3 5
011 101
二进制:011101—11101
总结:将八进制数的每一位的数字转为三位二进制数,如果不足三位,左侧补0,按照顺序组合即得到二进制数,组合之后最左侧的0 可以省略
二进制和十六进制转换:
四位二进制数组成了一位十六进制数
二进制-》十六进制:
二进制:11101
0001 1101
1 d
十六进制:1d
总结:将二进制数从最低位开始四位一组,如果不足四位,在左侧补0;将每一组转为0-9 a-f中的某一个数,将转换完的数字组合即得到十六进制数
十六进制-》二进制:
十六进制:1d
1 d
0001 1101
二进制:00011101—11101
总结:将十六进制数的每一位的数字转为四位二进制数,如果不足四位,左侧补0,按照顺序组合即得到二进制数,组合之后最左侧的0 可以省略
扩展:
2^0=1 2^1=2 2^2=4 2^3=8 2^4=16 2^5=32
2^6=64 2^7=128 2^8=256 2^9=512 2^10=1024
67=64+3=64+2+1
=126+1*21+12^0
=126+0*25+024+0*23+022+1*21+12^0
=1000011
129=128+1
=10000001
二进制的单位
计算机上的数据存储都是基于二进制的;
无论是图片 音频 视频 字符等都需要转为二进制来存储;
bit:比特位 二进制位
0 1
一位二进制
Byte:字节
1Byte=8bit
00000000->0
11111111->255
共256个可能性
KB:1KB=1024Byte 2^10=1024
MB:1MB=1024KB
GB:1GB=1024MB
TB:1TB=1024GB
PB:1PB=1024TB
大数据处理的量级最少在上百GB
码表 字符编码
字符在计算机中都需要转为二进制来进行存储和计算
需要将字符和整数编码进行映射,存储和计算都是使用该字符的整数编码值;
ASCII:
早期码表
英文大小写字母 数字 常用字符等
占用一个字节来存储一个字符
a:97
GB2312:
中国的码表
兼容ASCII码表
加入了常用的中文汉字字符
占用两个字节来存储一个字符
GBK:
兼容ASCII码表
增加了更多的中文汉字字符
占用两个字节来存储一个字符
Windows系统是中国版本的 则默认码表就是GBK
Unicode编码规则:
兼容ASCII码表
几乎包含了全世界的字符
规定了每个字符和整数值的映射关系,但是没有指定使用多少个字节来存储一个字符
UTF-16:
基于unicode编码规则实现的
使用两个字节来存储一个字符
能表示的字符数较少但是占用的空间较小
UTF-32:
基于unicode编码规则实现的
使用四个字节来存储一个字符
能表示的字符数较多但是占用的空间较大
UFT-8:
基于unicode编码规则实现的
变长的字节数来存储字符
常用的字符 1个字符使用1个字节来存储
较为常用的字符 1个字符使用2个字节来存储
一般常用的字符 1个字符使用3个字节来存储
不常用的字符 1个字符使用4个字节来存储
建议项目中最好使用UTF-8
其中,中文汉字一个字符占用3个字节
乱码问题:
编码:字符转为二进制的过程
解码:将二进制转为字符的过程
编码和解码使用的码表不一致
以下案例中,编码使用的是UTF-8码表,一个中文汉字占用3个字节;解码时则使用的时GBK的码表,一个中文汉字占用2个字节;
案例:
人
GBK 2个字节
11011101 10111010
01101000
UTF-8 3个字节
人:11011101 10111010 01101000
ANSI:
当前系统的默认码表
字面值
在Java程序可以直接使用的值称为字面值,又称为直接量
分类:
数值型字面值
字符型字面值
字符串字面值 :“Hello World”
布尔型字面值
数值型字面值:
整数:100 88 -50
不同进制:
二进制:0b10
八进制:010
十六进制:0x10
也支持大写
浮点数:小数
1.5 1.22223
+0.5
-0.02
字符型字面值:
通过一对单引号引起来的一个字符
‘a’ ‘A’ ‘+’ ‘中’ ’ ’
转义字符:
格式:\字符
’ --’
\-- \
\t – 制表符 缩进对齐
\r–回车
\n–换行
不同操作系统回车换行对应的转义字符不同
在Windows中通常\r\n表示回车换行
字符串字面值
通过双引号引起来表示多个字符
“hello”
“\r\n” 表示换行
“a”–字符串
‘a’–字符
" "–空字符串
布尔型字面值
对 正确的 true
错误的 false
补充知识点:
System.out.println(“hello”);–先输出hello字符串,再输出换行
System.out.print(“hello”);–直接输出hello字符串
引用
通过一个名字指向一个具体的数据值
格式:数据类型 引用名称 = 初始化值;
例如:int x = 8;
注意:
数据类型–int–整数类型
分类:
变量:引用可以发生变化的量
常量:引用不可以发生变化的量
常量:
格式:final 数据类型 常量名 = 初始化值;
常量名:
所有字母必须全部大写
多个单词之间通过_分隔
特点:
引用不可以发生变化的量
注意:
final是关键字 最终的
变量:
存储数据的最小的容器
格式:数据类型 变量名 = 初始化值;
例如:int age = 18;
先声明再赋值
数据类型 变量名;–声明一个变量
变量名 = 初始化值;–给声明的变量进行赋值
这样不占用空间 声明不会申请空间 (赋值才申请空间)
特点:
引用可以发生变化的量
注意:1、变量必须要先定义再使用
2、基于目前学习的内容,要求变量名不能重复