一、关键字
1、关键字
Java内置的有特殊含义的单词。
注意:
-
const,goto这两个词也是关键词,但没有任何功能,是java的预留关键字。
-
开发工具对于关键字会有特殊颜色的标识
用于定义数据类型的关键字 | |||||||
---|---|---|---|---|---|---|---|
class | interface | byte | short | int | long | ||
float | double | char | boolean | void | enum | ||
用于定义数据类型值的关键字 | |||||||
true | false | null | |||||
用于定义流程控制的关键字 | |||||||
if | else | switch | case | default | while | ||
do | for | break | continue | return | |||
用于定义访问权限修饰符的关键字 | |||||||
private | protected | public | |||||
用于定义类、函数、变量修饰符的关键字 | |||||||
abstract | final | static | synchronized | ||||
用于定义类与类之间关系的关键字 | |||||||
extends | implements | ||||||
用于定义建立实例、判断实例的关键字 | |||||||
new | this | super | instanceof | ||||
用于异常处理的关键字 | |||||||
try | catch | finally | throw | throws | |||
用于包的关键字 | |||||||
package | import | ||||||
其他修饰符关键字 | |||||||
native | strictfp | transient | volatile | assert |
二、标识符
1、定义
我们给包、类、接口、方法、变量等起名字的字符序列
2、组成规则
中文字符 、英文大小写字母 、$、 _ 以及数字组成
注意事项
-
_不能单独作为标识符,否则编译报错
-
数字不能开头
-
建议尽量不要使用中文
-
严格区分大小写
3、命名规则
见名知义
驼峰规则
-
包:
单个单词, 所有英文字母均小写
多个单词 , 每个单词字母均小写,单词之间要用.隔开
-
类和接口:
单个单词首字母大写;
多个单词构成 PersonDemo , 每个单词的首字母均大写,其他小写
-
方法和变量:
单个单词,字母全部小写 main a
多个单词构成 addAge,第一个单词字母均小写,从第二个开始,首字母均大写,其他小写
-
常量:
单个单词,字母均大写
多个单词,每个字母均大写,单词之间_分隔 , PI= 3.14
三、进制
1、进制的概念
数字在累计时,进位的机制称之为进制。
- 十进制
满十进一
0 1 2 3 4 5 6 7 8 9 10 11 12 19 20
- 二进制
满二进一
基于计算机硬件实现的便利性考虑,计算机底层存储和处理数据都是以二进制的形式进行的。
0 1 10 11 100 101 110 111………
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
- 八进制
满八进一
0 1 2 3 4 5 6 7 10 11 12….
- 十六进制
满十六进一
0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a ….
2、进制之间的转换
- 十进制转二进制
234 12
234/10=23 4 12/2=6 0
23/10=2 3 6/2=3 0
2/10=0 2 3/2=1 1
1/2=0 1
二进制:1100
用十进制数除2取余,直至商为0;余数反转,即为二进制数
十进制:19
19/2=9 1
9/2=4 1
4/2=2 0
2/2=1 0
1/2=0 1
二进制:10011
- 二进制转十进制
1011
=1*2^3 + 0*2^2 + 1*2^1 +1*2^0
=11
用二进制的位数乘以2的相应的幂次求和的结果为十进制;
从右到左,依次加1,起始为0
- 八进制转二进制
八进制:34256
3 4 2 5 6
011 100 010 101 110
二进制:011100010101110
将每一位八进制数转成相应的二进制数,从左向右连起来即为最终的二进制数。
- 二进制转八进制
二进制:
011 010 101 011 110 001 111
3 2 5 3 6 1 7
八进制:3253617
从右往左,三个二进制组成一组;本组求得数,就是相应的八进制数;
连起来就是最终的八进制
- 十六进制转二进制
十六进制:
a b c d 6 e
1010 1011 1100 1101 0110 1110
二进制:101010111100110101101110
- 二进制转十六进制
二进制:
1011 1101 1100 0110
b d c 6
十六进制:bdc6
3、二进制的单位
在计算机的内部,每一位的二进制称之为一个比特位(bit),简称比特,也称之为二进制位。而每八位二进制组合在一起,称之为一个字节(Byte);
在计算机内部,最基本单位是Byte
每1024个Byte,称之为一个KB,每1024个KB,称之为一个MB,
每1024个MB,称之为一个GB,每1024个GB,称之为一个TB,
每1024个TB,称之为一个PB
1Byte = 8bit 2^8
1KB=1024Byte
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
四、计算机中的数据表示形式
1、信息的二进制表示方式
计算机可以处理很多不同类型的数据 - 数字、文本、图片、音频、视频…,但是计算机无论处理什么数据,都是将数据转换为二进制来进行存储和处理的。
计算机需要将不同的数据按照不同方式转换为二进制后才可以处理
2、码表
码表就是字符到二进制的映射关系。
世界上有很多码表,通常由国家或国际标准化组织定义,在一定范围内使用。
Latin-1 也叫ASCII或ISO8859-1 | 只有英文、数字、常见符号 历史上出现最早的码表 | 一个字符占用一个字节 | <<ASCII码对照表.mht>> |
---|---|---|---|
GB2312 | 兼容Latin-1 在Latin-1的基础上增加了常用汉字 由中国国家标准定义 | 一个字符占用两个字节 | 略 |
GBK | 兼容GB2312,增加了更多的汉字 由中国国家标准定义 | 一个字符占用两个字节 | 略 |
unicode编码 | 是一种映射规则,将全世界所有的字符都对应到一个数字上 | 只是为每个符号指定了一个编码,并没有指定如何映射成二进制 | <<Unicode编码表(全).pdf>> |
Utf-16/utf-32 | 兼容latin1 是unicode编码的实现,占用2/4个字节 | 将unicode定义的符号对应的数字转为定长二进制来代表该符号 java语言的底层使用utf-16来代表字符 | 略 |
Utf-8 | 兼容latin1 是unicode编码的实现,是一种变长的编码形式,用1至4个字节来表示符号,常用符号用1个字节表示,次常用符号用2个字节,非常用符号用3个字节表示,极特殊符号用4个字节表示。 其中汉字在utf-8码表中占3个字符。 | 将unicode定义的符号对应的数字转为变长二进制来代表该符号,节省空间,通常在将数据写出磁盘 通过网络发送等操作时优先使用utf-8 | <<彻底弄懂 Unicode 编码 - hezh1994的博客 - CSDN博客.mht>> |
五、变量
1、变量概述
在程序中,值会在一定范围之内变化的量。
2、变量定义格式
数据类型 变量名 = 初始化值;
变量定义的格式是固定的,记住格式,以不变应万变。
数据类型 变量名; //先声明
变量名 = 初始值; //再赋值
注意:
1、变量要先定义再使用
2、变量要赋初始值才能被使用
在同一作用域中,变量名不能重复
3、变量作用域
- 局部变量:定义再方法内部或方法上的变量
从定义变量的位置开始生效,在后边整个方法内都可以使用
- 全局变量:定义再类中方法外的变量
在整个类中都可以使用
如果没有赋初始值,可以使用;会自动赋值默认值
整数类型:默认值 0
浮点型:默认值0.0
布尔类型:默认值false
六、java语言-数据类型
1、直接量(字面量)
- 数字直接量
整数可以用二进制、八进制、十进制、十六进制表示;但是不同的进制需要
有不同的前缀表示。
十进制:123
二进制:0b111
八进制:010
十六进制:0xa
小数直接用 3.14
- 字符直接量
1、用单引号括起来 表示单个字符
注意: 只能表示单个字符,‘ab’不对
2、也可以表示中文字符
3、不允许出现空字符
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\ | 代表一个反斜线字符’’' | 092 |
’ | 代表一个单引号(撇号)字符 | 039 |
" | 代表一个双引号字符 | 034 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
****uxxxx | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
- 布尔直接量
true 真的
false 假的
2、数据类型的概述
基本数据类型:四类八种
引用数据类型(复杂):类 接口 数组
3、基本数据类型
- 整数型:4种
byte | 字节型 | 1字节 | -27-27-1 -128-127 |
---|---|---|---|
short | 短整型 | 2字节 | -215-215-1 -32768~32767 |
int | 整型 | 4字节 | -231-231-1 |
long | 长整型 | 8字节 | -263-263-1 |
直接量:整数默认为int类型
Long类型:如果数值超过了int的范围,则需要在数值后加L或l表示long类型
- 浮点型:2种
float | 单精度 | 4字节 |
---|---|---|
double | 双精度 | 8字节 |
默认小数的直接量是double类型;如果要赋值给float,需要在数值后边加F f表示float类型
- 字符型:1种
char | 字符型 | 2字节 |
---|---|---|
- 布尔型:1种
boolean | 布尔类型 | 1字节 |
---|---|---|
4、类型的转换
java中数据具有类型。这些类型是可以互相进行转换的。
byte ----> short ----> int ---->long ----> float ---->double
|
|
char
- 自动类型转换
-
六个和数字相关的基本类型,可以自动由小到大进行类型转换。但从大到小编译报错。
byte -> short -> int -> long -> float -> double
char类型可以根据ASCii码表自动转换为int类型。数值类型在ASCii码表有效字符范围内也可以自动转为char
char -> int->long->float->double
- 强制类型转换
由大转小,则需要强制类型转换
格式:
数据类型 变量名 = (数据类型)要强制转换的值;
注意:
1、强制类型转换可能会有精度损失
2、浮点型转整形,直接舍弃小数位
3、大转小,大数大于小类型可以表示的最大范围,则直接截取大数中最后的需要的字节作为小类型数据使用。
经典面试题
如果byte short char类型参与运算,则会先自动提升为int类型
byte b1=3,b2=4,b;
b = b1 + b2;//编译报错
解决方案:b = (byte)(b1+b2);
b=3+4;//编译不会报错,因为编译期会对求和的结果判断是否在byte的范围之内,如果在,则没问题;如果超出范围则编译报错;