Java基础编程 - 2、基础语法

1 关键字与保留字

关键字(keyword)的定义和特点

  • 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
  • 特点:关键字中所有字母都为小写
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    用于定义数据类型的关键字
    class interface enum byte short
    int long float double char
    boolean void
    用于定义流程控制的关键字
    if else switch case default
    while do for break continue
    return
    用于定义访问权限修饰符的关键字
    private protected public
    用于定义类,函数,变量修饰符的关键字
    abstract final static synchronized
    用于定义类与类之间关系的关键字
    extends implements
    用于定义建立实例及引用实例,判断实例的关键字
    new this super instanceof
    用于异常处理的关键字
    try catch finally throw throws
    用于包的关键字
    package import
    其他修饰符关键字
    native strictfp transient volatile assert
    * 用于定义数据类型值的字面值
    true false null

    保留字(reserved word)

  • Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使
    用。自己命名标识符时要避免使用这些保留字 goto 、const

2 标识符(Identifier)

标识符:

  • Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符
  • 技巧:凡是自己可以起名字的地方都叫标识符。

    定义合法标识符规则:

  • 由26个英文字母大小写,0-9 ,_或 $ 组成
  • 数字不可以开头。
  • 不可以使用关键字和保留字,但能包含关键字和保留字。
  • Java中严格区分大小写,长度无限制。
  • 标识符不能包含空格。

    Java中的名称命名规范:

  • 包名:多单词组成时所有字母都小写:xxxyyyzzz
  • 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
  • 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

3 变量

变量的概念:

  • 内存中的一个存储区域
  • 该区域的数据可以在同一类型范围内不断变化
  • 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值

    变量的作用:

  • 用于在内存中保存数据

    使用变量注意:

  • Java中每个变量必须先声明,后使用
  • 使用变量名来访问这块区域的数据
  • 变量的作用域:其定义所在的一对{ }内
  • 变量只有在其作用域内才有效
  • 同一个作用域内,不能定义重名的变量

声明变量

  • 语法:<数据类型> <变量名称>  例如:int var;
    ① 变量必须先声明,后使用
    ② 变量都定义在其作用域内。在作用域内,它是有效的。换句话说,出了作用域,就失效了
    ③ 同一个作用域内,不可以声明两个同名的变量

    变量的赋值

  • 语法:<变量名称> = <值>  例如:var = 10;

    声明和赋值变量

  • 语法: <数据类型> <变量名> = <初始化值>  例如:int var = 10;

变量的分类-按数据类型

  • 基本数据类型:
    整型:byte \ short \ int \ long
    浮点型:float \ double
    字符型:char
    布尔型:boolean
  • 引用数据类型:
    类(class)
    接口(interface)
    数组(array)

变量的分类-按声明的位置的不同

  • 在方法体外,类体内声明的变量称为成员变量。
  • 在方法体内部声明的变量称为局部变量。

基本数据类型之间的运算规则

前提:这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的。

  1. 自动类型提升:
    结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
    byte 、char 、short –> int –> long –> float –> double
    特别的:当byte、char、short三种类型的变量做运算时,结果为int型
  2. 强制类型转换:见VariableTest3.java
    说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量

强制类型转换:自动类型提升运算的逆运算。

1.需要使用强转符:()
2.注意点:强制类型转换,可能导致精度损失。

计算机中不同进制的使用说明

对于整数,有四种表示方式:

二进制(binary):0,1 ,满2进1.以0b或0B开头。
十进制(decimal):0-9 ,满10进1。
八进制(octal):0-7 ,满8进1. 以数字0开头表示。
十六进制(hex):0-9及A-F,满16进1. 以0x或0X开头表示。此处的A-F不区分大小写。
如:0x21AF +1= 0X21B0

4 运算符

算术运算符

          • / % (前)++ (后)++ (前)– (后)– +

            赋值运算符

            = += -= *= /= %=

            比较运算符(关系运算符)

            == != > < >= <= instanceof
            结论:

1.比较运算符的结果是boolean类型
2.区分 == 和 =

逻辑运算符

& && | || ! ^
说明:
1.逻辑运算符操作的都是boolean类型的变量

位运算符

  1. 位运算符操作的都是整型的数据

  2. << :在一定范围内,每向左移1位,相当于 * 2

    :在一定范围内,每向右移1位,相当于 / 2

三元运算符

1.结构:(条件表达式)? 表达式1 : 表达式2
2. 说明
① 条件表达式的结果为boolean类型
② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
如果表达式为true,则执行表达式1。
如果表达式为false,则执行表达式2。
③ 表达式1 和表达式2要求是一致的。
④ 三元运算符可以嵌套使用

  1. 凡是可以使用三元运算符的地方,都可以改写为if-else
    反之,不成立。

  2. 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    /*
    基本数据类型之间的运算规则:

    前提:这里讨论只是7种基本数据类型变量间的运算。不包含boolean类型的。

    1. 自动类型提升:
    结论:当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
    byte 、char 、short --> int --> long --> float --> double

    特别的:当byte、char、short三种类型的变量做运算时,结果为int型

    2. 强制类型转换:见VariableTest3.java


    说明:此时的容量大小指的是,表示数的范围的大和小。比如:float容量要大于long的容量
    */

5 流程控制

顺序结构

程序从上到下逐行地执行,中间没有任何判断和跳转。

分支结构

根据条件,选择性地执行某段代码。
有if…else和switch-case两种分支语句。

分支结构之一 if…else (条件判断结构)

  • 第一种:
1
2
3
if(条件表达式){
执行表达式
}
  • 第二种:二选一
1
2
3
4
5
if(条件表达式){
执行表达式1
}else{
执行表达式2
}
  • 第三种:n选一
1
2
3
4
5
6
7
8
9
10
11
if(条件表达式){
执行表达式1
}else if(条件表达式){
执行表达式2
}else if(条件表达式){
执行表达式3
}
...
else{
执行表达式n
}

分支结构之二:switch-case

1
2
3
4
5
6
7
8
9
10
11
12
switch(表达式){
case 常量1:
执行语句1;
//break;
case 常量2:
执行语句2;
//break;
...
default:
执行语句n;
//break;
}

① 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。 当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。

② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构

③ switch结构中的表达式,只能是如下的6种数据类型之一:byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)

④ case 之后只能声明常量。不能声明范围。

⑤ break关键字是可选的。

⑥ default:相当于if-else结构中的else. default结构是可选的,而且位置是灵活的。

循环结构

根据循环条件,重复性的执行某段代码。
有while、do…while、for三种循环语句。
注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。

循环结构:for

For循环结构的使用
一、循环结构的4个要素
① 初始化条件
② 循环条件 —>是boolean类型
③ 循环体
④ 迭代条件

二、for循环的结构

1
2
3
4
for(①;②;④){

}
执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②

循环结构 - While 循环的使用

While 循环的使用
一、循环结构的4个要素
① 初始化条件
② 循环条件 —>是boolean类型
③ 循环体
④ 迭代条件

二、while循环的结构

1
2
3
4
5
6
7

while(②){
③;
④;
}

执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②

1.写while循环千万小心不要丢了迭代条件。一旦丢了,就可能导致死循环!
2.我们写程序,要避免出现死循环。
3.for循环和while循环是可以相互转换的! 区别:for循环和while循环的初始化条件部分的作用范围不同。

嵌套循环

  1. 嵌套循环:将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环
  2. 外层循环:循环结构B 内层循环:循环结构A
  3. 说明
    ① 内层循环结构遍历一遍,只相当于外层循环循环体执行了一次
    ② 假设外层循环需要执行m次,内层循环需要执行n次。此时内层循环的循环体一共执行了m * n次
  4. 技巧: 外层循环控制行数,内层循环控制列数

do-while循环的使用

一、循环结构的4个要素
① 初始化条件
② 循环条件 —>是boolean类型
③ 循环体
④ 迭代条件

二、do-while循环结构:

1
2
3
4
5
6

do{
③;
④;
}while(②);
执行过程:① - ③ - ④ - ② - ③ - ④ - ... - ②

说明:
1.do-while循环至少会执行一次循环体!
2.开发中,使用for和while更多一些。较少使用do-while

break和continue关键字的使用

使用范围 循环中使用的作用(不同点) 相同点
break: switch-case循环结构中 结束当前循环 关键字后面不能声明执行语句
continue: 循环结构中 结束当次循环 关键字后面不能声明执行语句