1、注释

注释分为单行注释、多行注释、和文档注释。

  1. // 单行注释
  2. /*
  3. 多行注释
  4. */
  5. /**
  6. 文档注释
  7. */

注释不会参与编译与运行。

2、关键字

java的关键字都是小写,例如public、void、static等。
main不是关键字,但是程序中必须要有main方法。

3、常量

在程序运行中不会发生改变的量叫常量。
常量的分类:

常量类型 说明 举例
字符串常量 用双引号括起来的内容 “Hello World”
整数常量 所有整数 45
小数常量 所有小数 12.2
字符常量 用单引号括起来的内容 ‘a’
布尔常量 布尔值,表示真假 true false
空常量 一个特殊的值,空值 值是:null

4、变量

变量是内存中的的一块储存空间,在空间中储存着经常发生改变的值。
变量的定义格式:数据类型 变量名 = 值;
注意:
1、变量名不能重复定义。
2、一条语句可以定义多个变量,但需要用逗号分割。
3、变量在使用前必须赋值。
4、定义float变量时,需要在值的后面加上f或者F。定义long变量时,需要在值的后面加上l或者L,但是建议L大写。
5、变量的作用域:只在变量所在的大括号里有用,在定义变量语句之后才能调用。

5、数据类型

Java是一种强类型语言。所以必须为每一个变量声明数据类型。

数据类型 关键字 内存占用(字节) 取值范围
整型 byte 1 -128~127
short 2 -32768~32767
int(默认) 4
long 8
浮点数 float 4
double(默认) 8
字符值 char 2 0~65535
布尔值 boolean 1 true false

6、键盘录入

分为三个步骤:

  1. import java.util.Scanner; //1、导入Scanner对象
  2. public class Demo1Scanner {
  3. public static void main(String[] args) {
  4. //2、创建对象
  5. Scanner sc = new Scanner(System.in);
  6. //3、定义变量接收输入
  7. int a = sc.nextInt();
  8. System.out.println(a);
  9. }
  10. }

7、标识符

是有字母,数字,下划线,美元符号组成,并且数字不能是开头。
命名规则:
1、小驼峰命名法:用于变量和方法
(1)在一个单词的时候首字母小写:student
(2)在多个单词的时候首字母小写,后面的单词首字母全部大写:funnyMan
2、大驼峰命名法:用于类
(1)在一个单词的时候首字母大写:Student
(2)在多个单词的时候所有的首字母都大写:FunnyMan

8、类型转换

1、隐式类型转换:

数值范围大小:
基础语法 - 图1
将数值范围小的数和数值范围大的数进行计算时,会将小的数的类型提升为大的数的类型。
byte、short、char三种在运算时,直接提升为int型进行运算。

2、强制类型转换:

将数值范围大的数或者变量,赋值给数值范围小的数或者变量,会发生精度损失。
格式:目标数据类型 数据名 = (目标数据类型)数据名
范例:int a = (int)88.88

  1. public class Demo1 {
  2. public static void main(String[] args) {
  3. byte a = 3;
  4. byte b = 4;
  5. byte c = (byte)(a + b);
  6. byte d = 3 + 4;
  7. }
  8. }

1、byte在进行运算过程中会自动转化为int类型。
2、但是java中有常量优化功能:会先计算出3+4的结果,并且判断是否在取值范围内,如果在取值范围内,则会编译通过,如果不在取值范围内,就不会编译通过。

9、运算符

1、算数运算符

有+ - * / %。
除法运算时:两个整数相除得到整数,如果想要得到小数,需要有浮点数参与。

2、字符的 + 操作

char类型会被转化为int类型,字母会通过ASCII码表来进行转化为数字。

3、字符串的 + 操作

(1)当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算。

  • "baidu" + 666

(2)在“+”操作中,如果出现了字符串就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。

  • 1 + 3 + "baidu"

    4、综合案例

    ```java import java.util.Scanner; // 输入一个三位数,输出它的个位、十位、百位 public class case1 { public static void main(String[] args) {

    1. Scanner sc = new Scanner(System.in);
    2. System.out.println("请输入一个三位数");
    3. int num = sc.nextInt();
    4. System.out.println(num + "的百位数是:" + (num / 10 / 10 % 10));
    5. System.out.println(num + "的十位数是:" + (num / 10 % 10));
    6. System.out.println(num + "的个位数是:" + (num % 10));

    }
    }

<a name="QA1tc"></a>
### 5、自增自减运算符
(1)单独使用时:<br />“++”或者“--”放在变量前面还是后面,效果是一致的。<br />(2)参与操作时:<br />“++”或者“--”在变量前面时候,先进行自增或自减,然后参与操作。<br />“++”或者“--”在变量后面时候,先进行操作,然后进行自增或者自减。
<a name="zNAZY"></a>
### 6、赋值运算符
(1)基础赋值运算符:将“=”右边的值赋值给左边。<br />(2)扩展赋值运算符(+=、-=、*=、/=、%=):将右边的值和左边的值进行(+、-、*、/、%)操作后将赋值给左边。<br />注意:扩展赋值运算符,自带强制数据类型自动转化。
<a name="sJywO"></a>
### 7、关系运算符
有**">","<",">=","<=","==","!="**。返回的结果是true或者flase。
<a name="IHpvM"></a>
### 8、逻辑运算符
作用:连接关系表达式的运算符,也可以直接连接布尔类型的常量或者变量。<br />有"&"与,"|"或,"!"非,"^"异或。<br />"&"与:有假则假,全真则真。<br />"|"或:有真则真,全假则假。<br />"!"非:取反。<br />"^"异或:相同为假,不同为真。
<a name="gUgY8"></a>
### 9、短路逻辑运算符
"&&"与:左边为假则右边不执行,直接输出为假。<br />"||"或:左边为真则右边不执行,直接输出为真。<br />"&"与和"|"或:左右两边的表达式都要执行。
<a name="b19Hq"></a>
### 10、三元运算符
关系表达式 ?表达式1 : 表达式2<br />执行流程:如果关系表达式为真,则输出表达式1的值。<br />    如果关系表达式为假,则输出表达式2的值。
<a name="FeQoK"></a>
## 10、流程控制
<a name="i6NcY"></a>
### 1、顺序结构
程序从上到下,从左到右依次执行。
<a name="an63J"></a>
### 2、If语句
(1)格式1:
```java
if(关系表达式){
    语句体;
    }

当关系表达式为真时,执行语句体。否则不执行语句体,继续执行后面的语句内容。
(2)格式2:

if (关系表达式){
    语句体1;
}else{
    语句体2;
}

当关系表达式为真时,执行语句体1,否则执行语句体2。
(3)格式3:

if (判断条件1){
    语句体1;
}else if (判断条件2){
    语句体2;
}else if (判断条件3){
    语句体3;
}
...
else{
    语句体n+1;
}

如果判断条件1为真,则执行语句体1。
如果判断条件2为真,则执行语句体1。
……
如果全部判断条件都为假,则执行语句体n+1。

3、switch语句

格式:

switch (表达式){
    case 值1:
        语句体;
        break;
    case 值2:
        语句体;
        break;
    case 值3:
        语句体;
        break;
    .....
    default:
        语句体n+1;
        break;


}

先计算表达式的值,然后将表达式的值和case 后面的值进行比较,如果一样,执行后面的内容,如果所有的case都没有一样的就执行default 后面的语句。
注意:case 后面的值必须是常量,并且不能重复。
案例:

import java.util.Scanner;

public class case3{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入星期几:");
        int week = sc.nextInt();

        switch (week){
            case 1:
                System.out.println("跑步");
                break;
            case 2:
                System.out.println("走路");
                break;    
            case 3:
                System.out.println("动感单车");
                break;    
            case 4:
                System.out.println("爬山");
                break;  
            case 5:
                System.out.println("游泳");
                break;  
            case 6:
                System.out.println("打羽毛球");
                break;  
            case 7:
                System.out.println("吃一顿");
                break;  
            default:
                System.out.println("输入有误");

        }
}
}

case穿透现象:
在switch语句中,如果case控制的语句体后面不跟break语句,就会出现case穿透现象。
当case穿透现象发生后,后续的case不会具有匹配效果,内部的语句都会执行,直到遇到break语句或者switch语句结束。
应用场景:当发现switch语句中,多个case的语句体重复时,可以考虑使用case穿透现象优化代码。

4、for循环语句

格式:

for (初始化语句;条件判断语句;条件控制语句){
    循环体语句;
}

执行流程:

  1. 执行初始化语句。
  2. 进行条件判断语句:true,继续执行,false,退出循环。
  3. 执行循环体语句。
  4. 执行条件控制语句。
  5. 执行第2步。

    5、while循环语句

    格式:

    初始化语句;
    while(条件判断语句){
     循环体语句;
     条件控制语句;
    }
    

    执行流程:

  6. 执行初始化语句。

  7. 进行条件判断语句:true,继续执行,false,退出循环。
  8. 执行循环体语句。
  9. 执行条件控制语句。
  10. 执行第2步。

在不知道循环次数的时候需要使用while。

6、do…while循环

格式:

初始化语句;
do{
    循环体语句;
    条件控制语句;

}while(条件判断语句);

执行流程:

  1. 执行初始化语句。
  2. 执行循环体语句。
  3. 执行条件控制语句。
  4. 进行条件判断语句:true,继续执行,false,退出循环。
  5. 回到第2步。

这种循环,循环体至少执行一次。

7、三种循环的区别

三种循环的区别:

  • for循环和while循环先判断条件是否成立,然后决定是否执行循环体。(先判断,后执行)
  • do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体。(先执行,后判断)

for和while的区别:

  • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了。
  • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可及继续使用。

三种循环的场景:

  • 明确循环次数,推荐使用for循环。
  • 不明确循环次数,推荐使用while循环。
  • do…while循环,很少使用。

    8、死循环

    格式: ```java for(;;){}

while(true){}

do{}while(true);

最常用的是while死循环。
<a name="b2ClD"></a>
### 9、跳转控制语句

- continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行。
- break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前循环。
- break和continue只能跳出、跳过自己所在地那一层关系,如果想要跳出指定的一层可以加入标号。
```java
标号名:while(true){
        switch(表达式){
            case 1:
                break 标号名;
        }

}

11、Random的基本使用

作用:产生随机数
1、导包。
2、创建对象。
3、获取随机数。

//导包
import java.util.Random

// 创建对象
Random r = new Random();

//获取随机数
int number = r.nextInt(10);//获取数据范围[0,9),0-9不包括10