标识符
java标识符定义
1.包名、类名、方法名、参数名、变量名等,这些符号被称为标识符。
2.标识符可以由字母、数字、下划线_和美元符号$组成。
3.标识符不能以数字开头、不能是java中的关键词。
4.首字符之后可以是字母、下划线_、美元符号$或数字的任何字符。
5.java区分大小写,因此myvar和MyVar是两个不同的标识符。
6.不可以使用关键词和保留字作为标识符,但标识符中可以包含关键字和保留字。
7.标识符不能包含空格。
例如:
- 合法标识符:date、$abc、D$date、myint等
- 不合法的标识符:123com、for、87等
java标识符规则
- 包名所有字母必须。例如:cn.com.text
- 类名和接口名每个单词的首字母都要大写。例如:ArrayList
- 常量名所有的字母都大写,单词之间用下划线连接。例如:DAY_OF_MONTH
- 变量名和方法名的第一个单词首字母小写,从第二个单词开始,每个单词首字母大写。例如:lineName、getLingNumber
- 在程序中,应该尽量使用有意义的英文单词来定义标识符,使得程序便于阅读。例如:使用userName表示用户名,password表示密码。
java关键字
java语言目前定义了51个关键字,这些关健字不能作为变量名、类名和方法来使用。以下对这些关键字进行分类
关键字 | |
数据类型 | boolean、int、long、short、byte、float、double、char、class、interface、enum、void |
流程控制 | If、else、do、while、for、switch、case、default、break、continue、return |
异常处理 | try、catch、finally、throw、throws |
修饰符 | public、protected、private、final、void、static、strict、abstract、transient、 synchronized、volatile、native |
类与类之间关系 | extends、implements |
建立实例及引用实例 | this、supper、instanceof、new |
导包 | package、impor |
保留字
保留字:Java版本尚未使用,但以后版本可能会作为关键字使用。
在命名标记符时要避免使用这些保留字
goto、const、byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var
注意:
- java中true、false、friendly和null不属于关键字,也不是保留字,它们只是显式常量值,但是你在程序中不能使用它们作为标识符。
- java关键字和保留字都是小写。即null是关键字,NULL不是关键字;TRUE、FALSE也不是关键字。
- sizeof 是 C/C++ 中的方法,Java 中并没有这个方法,也没有该关键字 或 保留字
运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套的运算符来操纵变量。我们可以把运算符分为以下几组:
- 算术运算符
-
关系运算符
- 位运算符
- 逻辑运算符
- 赋值运算符
- 其他运算符
流程控制
在java程序中,JVM默认总是顺序执行以分号结束的语句,但是,在现实的代码中,程序经常需要做条件判断、循环,因此,需要有多种流程控制语句,来实现程序的跳转和循环等功能。
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。
其流程控制方法采用结构化程序设计中规定的三种基本流程结构,即: 顺序结构 分支结构 循环结构
顺序结构
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数代码都是这样执行的。
总的来说:程序按照从上到下的顺序执行。
分支结构
根据条件,选择性地执行某段代码。
有if...else和switch-case两种分支语句。
if单分支语句
语法: if(条件表达式){ 语句块; }
解释: 条件表达式结果为boolean类型,当表达式结果为true,则执行语句块;否则什么都不执行!
当语句块只有一条执行语句时,一对{}可以省略,但建议保留。
if双分支语句
语法:
if(条件表达式){
语句块A;
}else{
语句块B;
}
解释:
条件表达式结果为boolean类型,当表达式结果为true,则执行语句块A;否则执行语句块B。
if-else语句结构,根据需要可以嵌套使用。
if多分支语句
语法:
if(条件表达式A){
语句块A;
}else if(条件表达式B){
语句块B;
}...
else if(条件表达式N){
语句块N;
}else{
语句块N+1
}
解释:
所有的条件表达式结果都是boolean类型。
如果条件表达式A结果为true,则执行语句块A,否则去判断条件表达式B;
如果条件表达式B结果为true,则执行语句块B,否则去判断条件表达式C;
....
如果所有的条件表达式结果都为false,则执行语句块N+1
else是可选的,根据需要可以省略
嵌套if
语法参考:
if(条件1) {
if(条件2) {
代码块1
} else {
代码块2
}
} else {
代码块3
}
为了使 if 结构更加清晰、避免执行错误,应该把每个 if 或 else 包含的代码块都用大括号括起来;
相匹配的一对 if 和 else 应该左对齐;
内层的 if 结构相对于外层的 if 结构要有一定的缩进;
switch语句
语法:
switch(表达式){
case 值1:
语句块1;
break;
.....
case 值N:
语句块N;
break;
default:
语句块default;
}
循环结构
顺序结构或分支结构的程序语句只能被执行一次。如果你要同样的操作执行多次,就需要使用循环结构。
循环语句分类
while循环、do-while循环、for循环、单层for循环、双层for循环、增强for循环(foreach)、嵌套循环
循环语句的四个组成部分
初始化部分
循环条件部分
循环体部分
迭代部分
while循环
语法:
①初始化部分
while(②循环条件部分){
③循环体部分;
④迭代部分;
}
执行过程:
①-②-③-④-②-③-④-②-③-④-...-②
解释:
条件表达式返回值类型为boolean类型,只要条件表达式的结果为true,则一直执行语句块。
特点:先判断,再执行
do…while循环
语法:
①初始化部分;
do{
③循环体部分
④迭代部分
}while(②循环条件部分);
执行过程:
①-③-④-②-③-④-②-③-④-...②
解释:
先执行do对应的语句块,然后再判断循环条件,只要循环条件满足,则一直执行循环体,否则结束循环。
特点:先执行,再判断;do-while循环至少执行一次循环体。
while和do while的区别?
执行次序不同:
while先判断,再执行;do while先执行,再判断
初始情况不满足循环条件时:
while循环一次都不会执行
do-while循环不管任何情况都至少执行一次
循环嵌套
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环或内层循环。
实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n次。
流程跳转
break 用于do-while、while、for、switch中时,可跳出循环而执行循环后面的语句
continue 用在循环中,跳过本次循环,执行下一次循环.
break
语法:
循环(…) {
……
break;
……
}
解释:
break语句用于终止某个语句块的执行
break通常在循环中与条件语句一起使用
continue
语法:
循环(...){
....
continue;
....
}
解释:
continue只能使用在循环结构中
continue语句用于跳过其所在循环语句块的一次执行,继续下一次循环
continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环
多层循环跳转
嵌套循环时: 内循环可以使用外循环中的变量,外循环每循环一次,内循环都会重新循环,并循环完内循环的所有次。
break/continue 只会控制当前的循环,可以使用给循环设定标签的形式来控制循环.
label1: { ……
label2: { ……
label3: { ……
break label2;
……
}
}
}
return
return:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return语句时,这个方法将被结束。
与break和continue不同的是,return直接结束整个方法,不管这个return处于多少层循环之内。
三者对比
break和continue对比:
使用场合不同
break可用于switch结构和循环结构中。
continue只能用于循环结构中。
作用不同(循环结构中)
break语句终止某个循环,程序跳转到循环块外的下一条语句。
continue跳出本次循环,进入下一次循环。
注:很多语言都有goto语句,goto语句可以随意将控制转移到程序中的任意一条语句上,然后执行它。但使程序容易出错。Java中的break和continue是不同于goto的
continue、break、return三者对比:
continue:
跳过本次循环,继续下一次循环
break:
结束所在的循环。
return:
结束整个方法
Java 数组
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
Java 语言中提供的数组是用来存储固定大小的同类型元素。
你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99。
声明数组变量
首先必须声明数组变量,才能在程序中使用数组。
语法:
dataType[] arrayRefVar; // 首选的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
创建数组
Java语言使用new操作符来创建数组
语法:
arrayRefVar = new dataType[arraySize];
上面的语法语句做了两件事:
- 使用 dataType[arraySize] 创建了一个数组。
- 把新创建的数组的引用赋值给变量 arrayRefVar。
数组变量的声明,和创建数组可以用一条语句完成
语法:
dataType[] arrayRefVar = new dataType[arraySize];
Java 方法
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
方法的优点
- 使程序变得更简短而清晰。
- 有利于程序维护。
- 可以提高程序开发的效率。
- 提高了代码的重用性。
方法的命名规则
1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。
2.下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test<MethodUnderTest>_<state>,例如 testPop_emptyStack。
类和对象
类的介绍
首先Java里面的类由关键字class定义,类中的元素称为:成员属性。类中的函数称为:成员方法。
一个类可以包含以下类型变量:
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。
一个类可以拥有多个方法,在上面的例子中:eat()、run()、sleep() 和 name() 都是 Dog 类的方法。
构造方法
每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
下面是一个构造方法示例:
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 这个构造器仅有一个参数:name
}
}
创建对象
对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:
- 声明:声明一个对象,包括对象名称和对象类型。
- 实例化:使用关键字 new 来创建一个对象。
- 初始化:使用 new 创建对象时,会调用构造方法初始化对象。