------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1. Java 语言基础组成
(1)标识符 (2)关键字 (3)注释 (4)常量和变量
(5)运算符 (6)语句 (7)函数 (8)数组
2. 标识符
(1) 定义:Java中对各种变量、方法、类的命名都叫标识符(其实就是自己起的名字都叫标识符)。
(2) 组成:26个英文大小写字母、数字0~9、符号_和$。
(3) 规则:首字符不能为数字,不可使用关键字。
(4) 注意:区分大小写、提高阅读性,驼峰标志如DemoDemo。
(5) 规范:
1) 包名:多单词组成时所有字母都小写。
2) 类名接口名:多单词组成时所有单词首字母大写。
3) 变量名和函数名:多单词组成时第一个单词小写,后面单词首字母大写。
4) 常量名:所有字母都大写,单词间用下划线连接。
3. 关键字
(3) 被Java语言赋予了特殊含义的单词。
(4) 特点:关键字中所有字母都为小写。
(5) goto和const虽然从未使用,但也作为 Java 关键字保留,记住保留字也是不能当作标识符.
(6) java中是没有sizeof这个关键字的
4. 注释
(1) 注解说明代码的,用于给人看的。
(2) 注释的分类
*单行注释 //
*多行注释 /* */
*文档注释 /** */
(3) 注释的用途:注解说明文字;用于调试代码。
5. 常量
(1) 整数常量:所有整数
(2) 小数常量:所有小数
(3) 布尔型常量:较为特殊,只有两个数值。true false boolean
(4) 字符常量:将一个数字字母或者符号用单引号('')标识。'中'char c=3;
(5) 字符串常量:将一个或者多个字符用双引号标识 "abc" "a" ""
(6) null常量:只有一个数值就是:null.
补充:进制
1.就是进位制,是人们规定的一种进位方法。对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位
2. java语言中整数的表现形式
A:八进制
**逢八进一
**所能表示的数据有:0-7
**用0开头表示
B:十进制
**逢十进一
**所能表示的数据有:0-9
C:十六进制
**逢十六进一
**所能表示的数据有:0-9,A-F(10-15)
**用0x或者0X开头表示
D:二进制
**逢二进一
**所能表示的数据有:
**用0b表示这是1.7的新特性,可以直接求出二进制的对应的十进制
6. 变量
(1) 概念:是内存中一个区域,用于存储数据,该区域有自己的名称(变量
名)和类型(数据类型),在程序的运行过程中,其值在指定范围内变化的值
(2) 作用:用来不断的存放同一类型的常量,并可以重复使用。
(3) 变量的定义格式:
A:数据类型 变量名 = 初始化值;
B: 数据类型 变量名 ;
(4) 变量在使用的时候
A:第一种,在声明的时候,就初始化值
**数据类型 变量名 = 初始化值;
**举例:byte b = 100; System.out.println(b);
B:第二种 在使用前,赋值
**声明
**赋值
**使用
**举例 byte b2;
b2 = 100; System.out.println(b2);
(5) 注意:作用范围(一对{}之内,);初始化值。
(6) 分类:
1) 按声明的位置划分:
局部变量:方法或语句块内部定义的变量,必须赋值,否则编译错误。
成员变量:方法外部类的内部定义的变量,可以不用赋值,因为虚拟机会给成员变量赋默认值。
注意:类外面于类对应的大括号外面不能定义变量。
2) 按所属的数据类型划分:
基本数据类型变量
引用数据类型变量
补充:数据类型
1. 分类:基本数据类型;引用数据类型(类、接口、数组);
2. 基本数据类型:四类八种
四类:整型、浮型、布尔型、字符型
*整数默认int 小数默认double
3. 类型转换
1). 自动类型转换(隐式类型转换):虚拟机自动将容量小的数据类型转成容量大的类型。
2). 强制类型转换(显式类型转换):通过语句件容量大的数据类型转成容量小的类型(注意溢出)
7. 运算符
(1) 算数运算符:+,-,*,/,%,++,--,+(字符串相加)
(2) 赋值运算符:=,+=,-=,*=,/=,%=
(3) 比较运算符:==,!=,>,<,<=,>=,instanceof(检查是否类的对象)
(4) 逻辑运算符:&,|,!,&&,||,^(异或于|不同的是,若两边为true
时结果为false)
(5) 位运算符:>>,<<,>>>,&,|,^(异或可用于加密),~(反码) 位运算是
直接对2进制码进行运算。
(6) 三元运算符:(条件表达式)?表达式1:表达式2;
8. 程序流程控制
顺序结构、选择结构、判断结构、循环结构
9. 判断结构
(1) if 语句
格式一:
if(条件表达式){
执行语句;
}
格式二:
if(条件表达式){
执行语句;
}else{
执行语句;
}
格式三:
if(条件表达式){
执行语句;
}else if (条件表达式){
执行语句;
}else{
执行语句;
}
(2) switch语句
格式:
int x = 10;
switch (表达式){//byte,short,int,char,String
case 表达式里对应的值:
执行语句;
//break;
case 表达式里对应的值:
执行语句;
break;
......
default:
执行语句;
break;//最后一句的break可写可不写,因为程序已经执行到了末尾
}
重点:switch 结束只有两种情况
1,当程序执行过程中遇到了break
2,当程序执行到了末尾处
应用 switch需要注意的两个细节
1,当switch表达式的值与其中一个case匹配的时候,这个case里没有写break;语句,那么程序会继续执行下个case里的执行语句,不会再对case值进行判断,应用于当几个case里的值所要执行的语句都一样的时候,我们可以不写break
2,当我们把 default 不是写在最后,default 里面还没有写break的是时候,switch里的表达式与各个case里的值都不匹配的时候,上面两个条件同时满足的话,程序在default里执行完了还会再去执行case里的语句
switch和 if 的区别:
1,如果对几个具体的值进行判断,可以使用switch,也可以使用if,但是建议使用switch效率会更高一些。
2,如果是对区间进行判断或者boolean结果的判断,只能用if。因为switch里面不接收boolean的值。
10. 循环结构
(1) while语句
格式一:
while (条件表达式){
循环体;
控制循环次数;
}
格式二:
do{
循环体;
控制循环次数
}
while (条件表达式);
(2) for语句
格式:
for(初始化表达式;循环条件表达式2;循环后的操作表达式4){
执行语句;(循环体)3
}
continue和break
a,这两个语句离开应用范围,存在是没有意义的。
b,这两个语句单独存在下面都不可以有语句,因为执行不到。
c,continue语句是结束本次循环继续下次循环。
d,标号的出现,可以让这两个语句作用于指定的范围。
11、 函数
(1) 定义:函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法。
(2) 格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...){
执行语句;
return 返回值;
}
在定义一个函数时需要确定的:
1). 返回值类型:函数运行后的结果的数据类型。
2). 参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该函数运算后的结果,该结果会返回给调用者。
(3) 函数的特点
1). 定义函数可以将功能代码进行封装
2). 便于对该功能进行复用
3). 函数只有被调用才会被执行
4). 函数的出现提高了代码的复用性
5). 对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句,可以省略不写。如果写的话就是return;
注意:
? 函数中只能调用函数,不可以在函数内部定义函数。
? 定义函数时,函数的结果应该返回给调用者,交由调用者处理。
? 函数只为实现他所需功能,不要实现不需要的功能。
? 输出语句只能对有返回值类型的函数调用后打印,不能对没有返回值类型的函数(void)进行打印。
? 学习了函数后,再写代码,就不要将代码都放在main函数里,main函数的作用,用于调用你定义的函数,并测试该功能是否可用。
(4) 函数的应用
1). 两个明确:
① 明确要定义的功能最后的结果是什么?明确返回值类型。
② 明确在定义该功能过程中,是否需要未知内容参与运算,明确参数列表。
2). 实例:
需求:定义一个功能功能,可以实现两个整数的加法运算。
分析:
Ⅰ.该功能的运算结果是什么?两个数的和,也是一个整数(int)
Ⅱ.在实现该功能的过程中是否有未知内容参与运算?加数和被加数是不确定的。(两个参数int,int)
Ⅲ.代码:
int getSum(int x,int y){
return x+y;
}
(5) 函数的重载
1).概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
2).特点:与返回值类型无关,只看参数列表。参数个数和参数类型,参数的顺序
3).好处:方便阅读,优化了程序设计。
(6) 参数传递问题
1) 按值传递的数据类型:8中基本数据类型和String.
2) 按址传递的数据类型:除String以外的所有符复合数据类型,包括数组、类和接口。
12、 数组
(1) 概念:同一种类型数据的集合,其实数组就是一个容器,它的好处是可
以从0
开始编号,方便操作这些元素。
数组是一个变量,存储相同数据类型的一组数据。
声明一个变量就是在内存空间划出一块合适的空间。
声明一个数组就是在内存空间划出一串连续空间。
(2) 作用:当我们定义一个变量是可以使用一个变量名表示,但是如果出现
很多的变量我们分别起名字代替表示存储就比较麻烦了,为了解决这样的问题我们采用数组的形式存储,使用下标表示每个变量。
(3) 初始化:
1) 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
示例:int[] arr = new int[]{3,5,1,7};
2) 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5]; //创建数组实体的关键字
(4) 数组的使用
使用数组分四部走
1) 声明数组 int[] arr;
2) 分配空间 arr = new int[5];
3) 赋值 arr[0] = 5;
4) 处理数据 arr[0] = arr[0]*10;
/* 此处可以思考关于面向对象的知识,联系思考:声明、内存分配、初始化、引用等。*/
(5) 数组内存结构剖析
l int[] arr = new int[3];//arr是引用类型变量,指向堆内存中的一个
实体;
arr[0] = 15;//给零角标位置赋值
arr = null;//没有任何实体指向
l 栈内存特点:存储局部变量,在方法执行完会随方法弹栈.会自动释放空间
l 堆内存特点:存储的是数组和对象,凡是用new建立的实体都存在与堆中
1,每一个实体都有内存地址值
2,每一个实体都有默认初始化值
int--->0; double--->0.0; boolean--->false;
char----->'\u0000';
3,当实体不被使用时将被视为垃圾,java有一个垃圾回收机制,对垃圾进行回收,对堆内存进行释放.
13、 二维数组
(1)二维数组的初始化
1). 动态初始化:
格式一:参数类型[][] 名称 = new 参数类型[第一维度][第二维度];
实例:int[][] arr = new int[3][2];
l 定义了名称为arr的二维数组
l 二维数组中有3个一维数组
l 每一个一维数组中有2个元素
l 一维数组的名称分别为arr[0], arr[1], arr[2]
l 给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
格式二:参数类型[][] 名称 = new 参数类型[第一维度][];
实例:int[][] arr = new int[3][];
l 二维数组中有3个一维数组
l 每个一维数组都是默认初始化值null
l 可以对这个三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
2).静态初始化
参数类型[][] 名称 = new 参数类型[][] {{元素,元素},{元素,元素},{元素,元素},};
实例:int[][] arr = new int[][] {{3,8,2},{2,7},{9,0,1,6}};
l 定义一个名称为arr的二维数组
l 二维数组中的有三个一维数组
l 每一个一维数组中具体元素也都已初始化
l 第一个一维数组 arr[0] = {3,8,2};
l 第二个一维数组 arr[1] = {2,7};
l 第三个一维数组 arr[2] = {9,0,1,6};
l 第三个一维数组的长度表示方式:arr[2].length;
注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。