Java 基础语法
一 关键字
关键字概述:Java 语言中有一些具有特殊用途的词被称为关键字。关键字对 Java 的编译器有着特殊的意义,在程
序中应用时一定要慎重。
关键字特点:组成关键字的字母全部小写。
关键字注意事项:goto 和 const 作为保留字存在,当前并不使用。
Java 中常用的 50 个关键字(48 个加 2 个保留字,就当背英文单词啦):
关键字 描述
abstract 抽象方法,抽象类的修饰符
assert 断言条件是否满足
boolean 布尔数据类型
break 跳出循环或者 label 代码段
byte 8-bit 有符号数据类型
case switch 语句的一个条件
catch 和 try 搭配扑捉异常信息
char 16-bit Unicode 字符数据类型
class 定义类
const 未使用
continue 不执行循环体剩余部分
default switch 语句中的默认分支
do 循环语句,循环体至少会执行一次
double 64-bit 双精度浮点数
else if 条件不成立时执行的分支
enum 枚举类型
extends 表示一个类是另一个类的子类
final 表示一个值在初始化之后就不能再改变了;表示方法不能被重写,或者一个类不能有子类。
finally 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。
float 32-bit 单精度浮点数
for for 循环语句
goto 未使用
if 条件语句
implements 表示一个类实现了接口
import 导入类
instanceof 测试一个对象是否是某个类的实例
int 32 位整型数
interface 接口,一种抽象的类型,仅有方法和常量的定义
long 64 位整型数
native 表示方法用非 java 代码实现
new 分配新的类实例
package 一系列相关类组成一个包
private 表示私有字段,或者方法等,只能从类内部访问
protected 表示字段只能通过类或者其子类访问子类或者在同一个包内的其他类
public 表示共有属性或者方法
return 方法返回值
short 16 位数字
static 表示在类级别定义,所有实例共享的
strictfp 浮点数比较使用严格的规则
super 表示基类
switch 选择语句
synchronized 表示同一时间只能由一个线程访问的代码块
this 表示调用当前实例或者调用另一个构造函数
throw 抛出异常
throws 定义方法可能抛出的异常
transient 修饰不要序列化的字段
try 表示代码块要做异常处理或者和 finally 配合表示是否抛出异常都执行 finally 中的代码
void 标记方法不返回任何值
volatile 标记字段可能会被多个线程同时访问,而不做同步
while while 循环
二 标识符
标识符概述:Java 对各种变量,类,接口,方法等起名字时使用的字符序列。
组成规则:1 英文大小写字母 2 数字字符 3 美元符($) 和下划线(_)。
使用标识符时,需要遵守几条规则:
1 标识符可以由字母、数字、下划线(_)、美元符($) 组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。比如:123name 就是不合法的。
2 标识符不能是 Java 关键字和保留字(Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以。
3 标识符是严格区分大小写的。 所以,一定要分清楚和是两个不同的标识符。
4 标识符的命名最好能反映出其作用,做到见名知意。
不合法的标识符:
合法的标识符:
标识符命名的常见类型:
1 包(其实就是文件夹,用于解决相同类名进行区分的问题),全部小写。
单级:
举例:student
多级:
举例:student.number
2 类或接口:
一个单词:单词的首字母必须大写。
举例:Student
多个单词:每个单词的首字母必须大写。
举例:HelloWorld
3 方法和变量:
一个单词:单词的首字母必须小写。
举例:main
多个单词:从第二个单词开始,每个单词的首字母必须大写。
举例:showAllName
4 常量:
一个单词:单词字母必须全部大写。
举例:PI
多个单词:每个单字母必须大写,用_隔开 。
举例:STUDENT_MAX_AGE
三注释
注释概述:在编写程序时,经常需要添加一些注释,用以描述某段代码的作用。一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 以上。因此,注释是程序源代码的重要组成部分,一定要加以重视。
Java 中注释分类及格式:
Java 中注释有三种类型:单行注释、多行注释、文档注释。
1 单行注释格式:// 注释文字
2 多行注释格式:/*注释文字*/,需要注意的是多行注释不能嵌套使用,而单行是可以的。
3 文档注释:/*注释文字 */,这个注释的作用的是被 javadoc 工具解析生成一个说明书。
注释的作用:
1 解释说明程序,提高程序的可阅读性;
2 可以帮助我们调试程序。
看一个例子:
四 常量和变量
常量概述:在程序执行的过程中其值不可以发生改变。所谓常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变。
Java 中常量分类:
1 字面值常量
A 字符串常量:用双引号括起来的内容。
举例:"hello" "world"
B 整数常量:所有的整数。
举例:100 300
C 小数常量:所有的小数。
举例:10.23
D 字符常量:用单引号括起来的常量。
举例:'A' 'C' 'O'
E 布尔常量:比较特殊,只有 true 和 false
F 空常量:null
2 自定义常量
语法格式:final 常量名 = 值;
程序中使用常量可以提高代码的可维护性。例如,在项目开发时,我们需要指定用户的性别,此时可以定义一个
常量 SEX,赋值为 "男",在需要指定用户性别的地方直接调用此常量即可,避免了由于用户的不规范赋值导致程序出
错的情况。
举例:
变量
变量概述:在程序的执行过程中,其值是可以在一定范围内发生改变的量。
在 Java 中,我们通过三个元素描述变量:变量类型、变量名以及变量值,其中变量名是标识符。
变量的定义格式:
A:数据类型 变量名 = 初始化值;
B:数据类型 变量名;
变量名 = 初始化值;
Java 语言是一种强类型语言。通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类
型。 String 是一种常见的引用数据类型,用来表示字符串。在程序开发中,很多操作都要使用字符串来完成,例如系
统中的用户名、密码、电子邮箱等。这个 String 引用类型是特殊的。
Java 中有两类数据类型:两类十一种
在 Java 的领域里,基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。这个我们以
后的学习中逐渐体会到。
基本数据类型
A:整数 占用字节数
byte 1
short 2
int 4
long 8
B:浮点数
float 4
double 8
C:字符
char 2
D:布尔
boolean 1(并不确定)
使用变量需要的注意事项:
1 作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两
个同名变量。
2 初始化值:没有初始化的值不能直接使用。
3 在一行上建议只定义一个变量,可以定义多个,但不建议。
4Java 中的变量需要先声明后使用。
5 变量中每次只能赋一个值,但可以修改多次。
6main 方法中定义的变量必须先赋值,然后才能输出。
在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换。
我们定义的变量的基本数据类型时需要注意:
1 整数默认是 int 类型,浮点数默认是 double。
2 长整数要加 L 或者 l(建议使用 L)。
3 单精度的浮点数要加 F 或者 f(建议使用 F)。
(1)boolean 类型不参与转换,因为不可以以 0 或非 0 的整数代替 false 和 true。这一点和其他的高级程序设计语言不
同,一定要注意。
(2) 默认转换
A:从小到大
B:byte,short,char -- int -- long -- float -- double
C:byte,short,char 之间不相互转换,直接转成 int 类型参与运算。
(3) 强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);
思考题和面试题
A:下面两种方式有区别吗?
float f1 = 12.345f;
float f2 = (float)12.345;
B:下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
C:下面的操作结果是什么呢?
byte a = 130;
byte b = (byte)130;
D:字符参与运算
是查找 ASCII 里面的值,查 ASCII 表即可
'a'97
'A'65
'0'48
System.out.println('a');
System.out.println('a' + 1);
E:字符串参与运算
这里其实是字符串的连接
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5+"=5+5");
上面两个题的输出输出是:
先到这里,若有错误的地方,请指正。
五 运算符
运算符是一种“功能”符号,用以通知 Java 进行相关的运算。比如,我们需要将变量 age 的值设置为 20,这时候就
需要一个"=",告诉程序需要进行赋值操作。
Java 语言中常用的运算符可分为如下几种:算术运算符,赋值运算符,比较运算符,逻辑运算符,条件运符。
(1) 算术运算符
算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。
Java 中常用的算术运算符:
其中,++和--既可以出现在操作数的左边,也可以出现在右边,但结果是不同的。
%用来求余数,也称为”取模运算符“。
(2) 赋值运算符
赋值运算符是指为变量或常量指定数值的符号。如可以使用"="将右边的表达式结果赋给左边的操作数。
Java 支持的常用赋值运算符,如下表所示:
(3) 比较运算符
比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值(true 或 false)。
Java 中常用的比较运算符如下表所示:
1)> 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型。
2)== 、!= 两边的操作数既可以是数值类型,也可以是引用类型。
(4) 逻辑运算符
逻辑运算符主要用于进行逻辑运算。Java 中常用的逻辑运算符如下表所示:
我们可以从"投票选举"的角度理解逻辑运算符:
1) 与:要求所有人都投票同意,才能通过某议题。
2) 或:只要求一个人投票同意就可以通过某议题。
3) 非:某人原本投票同意,通过非运算符,可以使其投票无效。
4) 异或:有且只能有一个人投票同意,才可以通过某议题。
当使用逻辑运算符时,我们会遇到一种很有趣的“短路”现象。
比如:(one>two)&&(one<three) 中,如果能确定左边 one>two 运行结果为 false , 则系统就认为已经没有必要执行
右侧的 one<three。
同理,在(one>two)||(one<three) 中,如果能确定左边表达式的运行结果为 true , 则系统也同样会认为已经没有必
要再进行右侧的 one<three 的执行。
(5) 条件运算符
条件运算符(? : ) 也称为 “三元运算符”。
语法形式:布尔表达式?表达式 1:表达式 2;
运算过程:如果布尔表达式的值为 true,则返回表达 1 的值,否则返回表达式 2 的值。
(6) 运算符优先级
所谓优先级,就是在表达式中的运算顺序。Java 中常用的运算符的优先级如下表所示:
六 语句
(1)Java 条件语句之 if
生活中,我们经常需要先做判断,然后才决定是否要做某件事。例如,如果考试成绩大于 90 分,则奖励一个
IPHONE 5S 对于这种“需要先判断条件,条件满足后才执行的情况”,就可以使用 if 条件语句实现。
语法:
执行过程:
如:
如果 if 条件成立时的执行语句只有一条,是可以省略大括号的;但如果执行语句有多条,那么大括号就是不可或
缺的。
(2)Java 条件语句之 if...else
if...else 语句的操作比 if 语句多了一步:当条件成立时,则执行 if 部分的代码块;条件不成立时,则进入 else 部分。
例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S ,否则罚做 500 个俯卧撑。
语法:
执行过程:
如:
(3)Java 条件语句之多重 if
多重 if 语句,在条件 1 不满足的情况下,才会进行条件 2 的判断;当前面的条件均不成立时,才会执行 else 块内的代
码。例如,如果考试成绩大于 90 分,则奖励一个 IPHONE 5S,如果成绩介于 70 分至 90 分之间,则奖励一个红米,否
则罚做 500 个俯卧撑。
语法:
执行过程:
如:
(4)Java 条件语句之嵌套 if
嵌套 if 语句,只有当外层 if 的条件成立时,才会判断内层 if 的条件。例如,活动计划的安排,如果今天是工作日,
则去上班,如果今天是周末,则外出游玩;同时,如果周末天气晴朗,则去室外游乐场游玩,否则去室内游乐场游
玩。
语法:
执行过程:
如:
(4)Java 条件语句之 switch
当需要对选项进行等值判断时,使用 switch 语句更加简洁明了。例如:根据考试的名次,给予前 4 名不同的奖品。
第一名,奖励笔记本一台;第二名,奖励 IPAD2 一个;第三名,奖励移动电源一个;最后一名奖励 U 盘一个。
语法:
执行过程:当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者
switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。
如:
注意事项:
1)switch 后面小括号中表达式的值必须是整型或字符型。
2)case 后面的值可以是常量数值,如 1、2;也可以是一个常量表达式,如 2+2;但不能是变量或带有变量的表达
式,如 a*2。
3)case 匹配后,执行匹配块里的程序代码,如果没有遇见 break 会继续执行下一个的 case 块的内容,直到遇到
break 语句或者 switc 语句块结束。不建议这样使用,如:
运行结果:
4) 可以把功能相同的 case 语句合并起来,如:
5)default 块可以出现在任意位置,也可以省略。
继续接着 Java 基础语法来: JavaSE 入门学习 5:Java 基础语法(一) 和 JavaSE 入门学习 6:Java 基础语法(二) 。
Java 常用的 3 种循环:while,do...while,for。
(5)Java 循环语句之 while
语法:
执行过程:
1) 判断 while 后面的条件是否成立(true/false)。
2) 当条件成立时,执行循环内的操作代码 ,然后重复执行 1),2),直到循环条件不成立为止。
特点:先判断,后执行。
如:
(6)Java 循环语句之 do...while
do...while 循环与 while 循环语法有些类似,但执行过程差别比较大。
语法:
执行过程:
1) 先执行一遍循环操作,然后判断循环条件是否成立。
2) 如果条件成立,继续执行 1),2),直到循环条件不成立为止。
特点: 先执行,后判断。
由此可见,do...while 语句保证循环至少被执行一次。这就是和 while 循环语句的区别。
例如,依然输出 1000 遍“我爱慕课网”,使用 do...while 的实现代码为:
(7)Java 循环语句之 for
Java 的循环结构中除了 while 和 do...while 外,还有 for 循环,三种循环可以相互替换。
语法:
执行过程:
1) 执行循环变量初始化部分,设置循环的初始状态,此部分在整个循环中只执行一次。
2) 进行循环条件的判断,如果条件为 true,则执行循环体内代码;如果为 false,则直接退出循环。
3) 执行循环变量变化部分,改变循环变量的值,以便进行下一次条件判断。
4) 依次重新执行 2),3),4),直到退出循环
特点:相比 while 和 do...while 语句结构更加简洁易读。
例如,输出 1000 遍“我爱慕课网”,使用 for 的实现代码为:
需要留心的几个小细节:
1)for 关键字后面括号中的三个表达式必须用";" 隔开,三个表达式都可以省略,但";"不能省略。
a. 省略“循环变量初始化”,可以在 for 语句之前由赋值语句进行变量初始化操作,如:
b. 省略“循环条件”,可能会造成循环将一直执行下去,也就是我们常说的“死循环”现象,如:
在编程过程中要避免“死循环”的出现,因此,对于上面的代码可以在循环体中使用 break 语句强制跳出循环。
c. 省略“循环变量变化”,可以在循环体中进行循环变量的变化,如:
2)for 循环变量初始化和循环变量变化部分,可以是使用 “,” 同时初始化或改变多个循环变量的值,如:
代码中,初始化变量部分同时对两个变量 i 和 j 赋初值,循环变量变化部分也同时对两个变量进行变化,运行结果:
3) 循环条件部分可以使用逻辑运算符组合的表达式,表示复杂判断条件,但一定注意运算的优先级,如:
代码中,必须同时满足变量 i 小于 10 ,并且 i 不等于 5 时才会进行循环,输出变量 i 的值。
(8)Java 循环跳转语句之 break 语句
生活中,我们经常会因为某些原因中断既定的任务安排。在 Java 中,我们可以使用 break 语句退出指定的循环,
直接执行循环后面的代码。
例如,使用循环输出 1--10 的数值,其中,如果数值大于 2 ,并且为 3 的倍数则停止输出。
实现代码:
运行结果:
(9)Java 循环跳转语句之 continue 语句
continue 语句的作用是跳过循环体中剩余的语句执行下一次循环。
例如,打印 1--10 之间所有的偶数,使用 continue 语句实现代码为:
运行结果:
(10)Java 循环语句之多重循环
循环体中包含循环语句的结构称为多重循环。三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重
循环。在二重循环中,外层循环每执行一次,内层循环要执行一圈。
如下所示:
例如:使用*打印长方形:
实现代码为:
执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容。此时,j 从 1 开始,循环 8 次,内
层循环结束后换行,实现第一行 8 个 * 的输出。接下来返回外层循环 i 变为 2,准备打印下一行,依此类推,直到完成
长方形的打印。
那我们再来做一个直角三角形的输出,如:
实现代码:
最后再来补充一下基本数据类型之间的转换:
基本数据类型转换
1)boolean 类型不参与转换,因为不可以以 0 或非 0 的整数代替 false 和 true。这一点和其他的高级程序设计语言不
同,一定要注意。
2) 整型,字符型,浮点型的数据类型在混合运算中相互转换,转换时遵循以下的规则:
A 默认转换
容量小的类型自动转换为容量大的数据类型,数据类型按容量大小排序为:
byte,short,char -- int -- long -- float -- double
byte,short,char 之间不相互转换,在计算时首先直接转成 int 类型参与运算。
B 强制转换
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精确度降低或溢出,使用时一定要注意。
C 有多种类型的数据混合运算时,系统首选自动的将所有的数据转成容量大的那一种数据类型,再进行计算。
实例的话参考 JavaSE 入门学习 5:Java 基础语法(一) 中最后面的面试题和思考题。
七 方法
如何定义 Java 中的方法所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。一般情况下,定
义一个方法的语法是:
其中:
1 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示
该方法可以被其他任何代码调用。
2 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void;如果方法具有返回值,则
需要指定返回值的类型,并且在方法体中使用 return 语句返回值。
3 方法名:定义的方法的名字,必须使用合法的标识符。
4 参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名
组成,以空格隔开。
根据方法是否带参、是否带返回值,可将方法分为四类:
1) 无参无返回值方法;
2) 无参带返回值方法;
3) 带参无返回值方法;
4) 带参带返回值方法;
(1) 无参无返回值方法的使用
如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法。
方法的使用分两步:
第一步,定义方法
例如:下面代码定义了一个方法名为 show,没有参数,且没有返回值的方法,执行的操作为输出"welcome to
imooc."
需要注意的事项有:
1 方法体放在一对大括号中,实现特定的操作。
2 方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式。
第二步,调用方法
当需要调用方法执行某个操作时,可以先创建类的对象,然后通过对象名.方法名() 来实现。
例如:在下面的代码中,我们创建了一个名为 hello 的对象,然后通过调用该对象的 show( ) 方法输出信息。
运行结果为:welcome to imooc.
(2) 无参带返回值方法的使用
如果方法不包含参数,但有返回值,我们称为无参带返回值的方法。
例如:下面的代码,定义了一个方法名为 calSum,无参数,但返回值为 int 类型的方法,执行的操作为计算两数之和,并返回结果。
在 calSum( ) 方法中,返回值类型为 int 类型,因此在方法体中必须使用 return 返回一个整数值。
调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其
返回值并进行处理。如:
运行结果为: 两数之和为:17
需要注意的事项有:
1 如果方法的返回类型为 void ,则方法中不能使用 return 返回值。
2 方法的返回值最多只能有一个,不能返回多个值。
3 方法返回值的类型必须兼容,例如,如果返回值类型为 int ,则不能返回 String 型值。
(3) 带参无返回值方法的使用
有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息行。我们可以通过在方法中加入参数列表接收外部传入的数据信息,参数可以是任意的基本类型数据或引用类型数据。我们先来看一个带参数,但没有返回值的方法:
上面的代码定义了一个 show 方法,带有一个参数 name,实现输出欢迎消息。调用带参方法与调用无参方法的语法类似,但在调用时必须传入实际的参数值。
例如:
运行结果为: 欢迎您,爱慕课!
很多时候,我们把定义方法时的参数称为形参,目的是用来定义方法需要传入的参数的个数和类型;把调用方法
时的参数称为实参,是传递给方法真正被处理的值。
需要注意的事项有:
1 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应。
2 调用方法时,实参不需要指定数据类型,如
3 方法的参数可以是基本数据类型,如 int、double 等,也可以是引用数据类型,如 String、数组等。
4 当方法参数有多个时,多个参数间以逗号分隔。
(4) 带参带返回值方法的使用
如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法。
例如:下面的代码,定义了一个 show 方法,带有一个参数 name,方法执行后返回一个 String 类型的结果。
调用带参带返回值的方法:
运行结果为: 欢迎您,爱慕课!
(5)Java 中方法的重载
如果同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重
载,也可称该方法被重载了。如下所示 4 个方法名称都为 show ,但方法的参数有所不同,因此都属于方法的重载:
当调用被重载的方法时, Java 会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将
被执行。如:
运行结果:
判断方法重载的依据:
1 必须是在同一个类中;
2 方法名相同;
3 方法参数的个数、顺序或类型不同;
4 与方法的修饰符或返回值没有关系;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论