2.1 关键字
2.1.1 关键字定义
1)被Java语言赋予了特殊含义的字符串,关键字中所有的字母都为小写
2.1.2 关键字类型
1)用于定义数据类型的关键字:class interface enum byte short int long float
double char boolean void
2)用于定义数据类型值得关键字: true false null
3)用于定义流程控制的关键字:if else switch case default while do for break continue return
4)用于定义访问权限修饰符的关键字:private protected public
5)用于定义类,函数,变量修饰符的关键字:abstract final static synchronized
6)用于定义类与类之间关系的关键字:extends implements
7)用于定义建立实例及引用实例,判断实例的关键字:new this super instanceof
8)用于异常处理的关键字:try catch finally throw throws
9)用于包的关键字:package import
10)其他修饰符关键字:native strictfp transient volatile assert
2.1.3 保留字
1)现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标记符时要避免使用这些保留字 byValue、 cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
2.2 标识符
2.2.1 标识符
1)由自己命名的
2)由26个英文字母大小写,0-9,_或$组成
3)数字不可以开头
4)不能使用关键字和保留字,但是可以包含
5)Java严格区分大小写,长度没有限制
6)标识符中不可以含有空格
7)起名要见名知意
2.2.2 Java中的名称命名规范
1)包名:多单词组成时所有字母都小写
2)类名、接口名:多单词组成,所有单词首字母都大写
3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
4)常量名:所有字母都大写,多单词时每个单词之间用下划线连接
2.3 变量
2.3.1 变量概念
1)内存中的一个存储区域,拥有自己的名称(变量名)和类型(数据类型)
2)Java中每个变量必须先声明后使用
3)该区域的数据可以在同一类型范围内不断变化
4)变量作用域:一对{}之间,需要初始化值
5)格式为:数据类型 变量名 = 初始化值
6)变量通过使用变量名来访问这块区域
2.3.2 数据类型
1)基本数据类型:
a)整数类型:
byte 1字节
short 2字节
int 4字节
long 8字节 值得末尾加“L”或“l”
b)浮点类型:
float 4字节 值的末尾加“F”或“f”
double 8字节
c)字符型:
char 2字节 3种表现形式(单引号、转义字符、Unicode值)
d) 布尔型:
boolean (true、false、null)
2)引用数据类型:
类(class)
接口(interface)
数组([] )
3)字符串:
2.3.3 变量分类
1)成员变量(类体内声明的)
实例变量:不用static修饰
类变量:用static修饰
2)局部变量(方法体内定义的)
形参:方法名中定义的变量
方法局部变量:在方法内部定义
代码块局部变量:在代码块内定义
2.3.4 注意问题
1)字符串与基本数据类型之间的运算只能是连接运算,结果仍然是一个字符串
2)异:局部变量除了形参以外,都需要显示初始化。 同:都有生命周期。
2.3.5 基本类型转换(不考虑boolean)
1)自动类型转换:容量小的数据类型和容量大的数据类型做运算,容量小的自动转化成容量大的 (byte,short==>int==>long==>float==>double)
2)强制类型转换:容量大转成容量小的,需要使用强制类型转换符,会导致精度的丢失。
2.4 运算符
2.4.1 运算符
1)算术运算符:+、-、+、-、*、/、%、++、-- 、+
2)赋值运算符:+=、-=、*=、/=、%=
3)逻辑运算符:&、|、!、&&、|| 、^ (异或)
4)位运算符:<<、>>、>>>、&、|、~ 、^
5)三元运算符:(条件表达式)? 表达式1:表达式2;
2.4.2 十进制二进制互转
1)二转十:乘以2的幂数
2)十转二:除以2取余数
2.4.3 二进制八进制互转
1)二转八:每三位二进制转一个八进制
2)八转二:每一位八进制转三个二进制
3)二进制与十六进制同理。每4位操作
2.6 数组
2.6.1 一维数组
1)数组的声明:String[] names;
2)初始化:
静态初始化:names = new String[]{"周瑜","小乔"};
动态初始化:names = new String[2];names[0] = "周瑜";names[1] = "小乔";
3)可通过names.length知道数组的长度
4)每个一维数组初始化值都是null
5)栈stack:存放局部变量,对象的引用 堆heap:存放new出来的东西
6)一旦初始化,其长度不可变
7)数组的遍历通过循环一个个输出,常用for循环
8)数组常见的异常:
a)数组下标越界的异常
b)空指针的异常
第一种:
String[] names = new String[2];
names=null;
//names指向的地址为null
第二种:
String[] names = new String[2];
//names[0]和names[1]默认初始化值为null
System.out.println(names[1].toString());
第三种:
String[] names = new String[2][];
//name[0]和name[1]初始化值为null,找不到names[1][0]
names[1][0] = "周瑜";
2.6.2 二维数组及多维数组
1)数组中的数组
2)静态初始化:
int[][] arr = new int [][]{{1,2,3},{3,4,5},{6}};
3)动态初始化(两个格式):
1)int[][] arr = new int [3][2];
2)int[][] arr = new int[3][];
arr[0] = new int[3];arr[1] = new int[1];arr[2] = new int[2];
4)错误的方式:
int[][] arr = new int [][];
int[][] arr = new int [][2];
5)二维数组的length属性:
int[][] arr = new int [3][2];
System.out.println(arr.length);//长度是3
System.out.println(arr[0].length);//长度是2
6)可以用两个循环嵌套遍历二维数组,通常用for循环嵌套
2.6.3 数组中涉及的常见算法
1)求数组元素的最大值、最小值、平均值、总和
2)数组的复制、反转
3)数组元素的排序