- Java语言中的注释
程序员最讨厌的两件事
1*写注释
2*别人不写注释
单行注释
//只会注释一行
多行注释
/*
第一行
第二行
*/
文档注释
/**
*注释部分
*/
- Java的关键字
定义:关键字是SUN公司事先定义的,有特别意义的字符序列 java保留字
系统已经占用了这些单词,我们不能再去对它们有别的定义
特点:在 Java 中关键字都是小写的
组成:
注意:关键字不要求大家强记
- 标识符
定义:标识符可以标识类名,接口名,变量名,方法名
标识符就是我们用来起名字的
命名规则:
a) 标识符是由,数字,字母,下划线和美元符号构成,其他符号不可以
b) 必须以字母、下划线或美元符号开头,不能以数字开头
特点:
a) 关键字不能作为标识符
b) 标识符区分大小写,标识符是大小写敏感的
c) 标识符理论上没有长度限制
示例:
合法标识符 不合法标识符
_123Test 123Test
HelloWorld Hello-World
HelloWorld HelloWorld#
public1 public
HelloWord Hello World
命名 Java 标识符, 最好 见名知意 set get guoMaLu setStringToText()
定义变量和方法名 整个标识符首字母小写之后每遇到一个单词,首字母都大写
- 数据类型
Java中数据类型有两个大类
- 基本数据类型(本身就定义好的)
数值类型
整数型(byte,short,int,long)
浮点型(float,double)
字符类型(char)
布尔类型(boolean,只能取值 true 和 false)
2.引用数据类型(我们可以自己定义的)
数组 类 接口
隐式类型转换
Java编译器拿到的数值,默认类型是int,如果赋值给范围小于int的类型,编译器会自行判断,如果当前的数值超过了赋值目标的范围,这时就会报错,否则会自行转换成目标类型
变量是内存中用来存放特定数据类型数据的一块内存空间,它的值是可以改变的。Java中的变量有四个基本属性:变量名,数据类型,存储单元和变量值
变量名:合法的标识符
变量的数据类型:可以是基本类型和引用类型(必须包含类型)
存储单元:存储单元大小是由数据类型决定的,如:int 为4个字节32位
变量值:在存储单元中存放的值
变量的声明格式:
类型 变量名;
类变量:独立于方法之外的变量,用 static 修饰。作用范围是整个类
实例变量:独立于方法之外的变量,不过没有 static 修饰。作用范围是实例化后的对象
局部变量:类的方法中的变量。使用前必须初始化 作用范围是方法内
运算符种类 符号
赋值运算符 =、 +=、 -=、 *=、 /=、 %=
算术运算符 ++、--、+、-、*、/、%
++自增 --自减 注意前置和后置
关系(比较)运算符 > 、 < 、 >= 、 <=、 ==、 !=
逻辑运算符 &&(且)有短路功能、||(或)有短路功能、!(非)、&(且) 没有短路功能、|(或)
真 && 假 && 真 假
假 && 真 && 真 假
三目运算符 a?b:c
条件判断 ?语句1:语句2
如果条件为真返回1,条件为假返回2
class(类)是最外层的结构
class包含变量和方法
方法中包含语句
顺序
从上到下按照顺序执行
选择(分支)
if分支结构
if(判断句)
{ 语句a;}
if(判断句)
{ 语句a;}
else
{语句b;}
if(判断句)
{语句a;}
else if(判断句)
{语句b;}
else
{语句c;}
2.switch分支语句
利用if...else可以实现多条件的验证,而switch只能进行多数值的判断,而且switch支持的判断数据类型(一直在发展):
最初:int JDK1.5:加入枚举类型 JDK1.7:加入String类型
语法:
switch (表达式){
case 值1 :
语句1 break;
case 值2 :
语句2 break;
...
default :
语句n break;
}
循环
1.while循环
while(boolean表达式){
循环体语句;
}
先判断后执行
2.do...while循环
do{
循环体语句;
}while(boolean表达式);
先执行一遍再判断,至少会执行一遍
3.for循环
for(表达式1;表达式2;表达式3){
循环体语句;
};
表达式1:初始表达式,表达式2;boolean表达式,表达式3:增量表达式
跳转结构:
1.return;会跳出整个方法
2.continue;跳过后面的语句直接进行下一次循环
3.break;跳出当前整个循环,执行循环后面的语句
语句的集合就是方法
方法定义包括方法头和方法体。
方法头:
修饰符 返回值类型 方法名称(参数)
方法体:{ }之中的内容
1- 访问控制修饰符
public (公有的)对所有的类都可见,使用位置:变量 方法 类 接口
protected(受保护的)对同一包内的类和所有子类可见 使用位置:变量 方法 内部类
default(默认的)在同一包内可见,不用写修饰符,使用位置:变量 方法 类 接口
private(私有的)只在同一类可见,使用位置:变量 方法 内部类
修饰符 | 当前类 | 同包内 | 子孙类 | 其他包 |
public | 是 | 是 | 是 | 是 |
protected | 是 | 是 | 是 | 否 |
default | 是 | 是 | 否 | 否 |
private | 是 | 否 | 否 | 否 |
2- 非访问控制修饰符
static 静态的 使用位置:变量 方法
声明静态变量 静态变量也叫类变量 局部变量不能声明为static变量
类中所有的对象都可以使用,并且只有一份
静态方法 静态方法不能使用非静态变量
final 常态的
final变量 也就是常量 只能初始化一次,之后值不能被改变
final常和static搭配来声明类的常量
final方法 主要目的是防止方法的内容被修改(子类继承)
final类 不能被继承的类
abstract 抽象的
递归就是方法自己调用自己
递归也是一种重复运算
可以递归的问题判断:可以划分为一个或多个子问题,而处理子问题的规则与处理原问题的规则是一样的。
递归需要满足两个条件才会使用
递归算法设计时,需要首先考虑以下两个问题:
递归的效率要低于普通循环,所以设计程序的时候优先考虑使用循环结构,实在没有更好的办法时再使用递归
- 基本数据类型间的转换
- 基本数据类型间的转换
-
Boolean型不能和其他的基本类型相互转换
byte char short int long float double
1 2 2 4 8 4 8
Bit
00000000 00000000 00000011 11101000
00000000 00000000 00000000 11101001 233
11101001 10010111
01111111 11111111 11111111 11111111
01111111 11111111 11111111 11111111
11111111 11111111 11111111 11111110
代码中的整型数值默认为int类型
代码中的浮点型数值默认为double类型
char类型本身是无符号
所以byte不能自动提升到char类型
char也不会自动提升到short
byte可以直接提升到short
- 自动类型提升
- 强制类型转换
- 变量
- 变量类型(变量作用范围)
- 运算符
- 程序和语句
- Java中的方法
- 修饰符
- 递归(下节讲)
- 有反复执行的过程(调用自身)
- 有跳出反复执行的条件(递归出口)
- 确定递归公式。把规模大的、较难解决的问题变成规模较小、易解决的具有重复性同一问题,这是递归问题的难点。
- 确定边界(终了)条件。在什么情况下需要停止递归?就是问题的边界条件及边界值的确定。