一,java基础知识

1.1 注释

注释就是在程序指定的位置添加说明性的信息,就是对代码的一种解释。

注释分为:

  • 单行注释

    格式://注释信息

  • 多行注释

    格式:/*注释信息*/

  • 文档注释

    格式:/**注释信息*/

1.2 关键字

被 java 赋予了特定含义的英文单词,关键字全部小写,在常用编译器中关键字会高亮显示的。

例如:class 关键字:用于定义,创建一个类,类是 java 最基本的组成单元。

1.3 字面量

告诉程序员,数据在程序中的书写格式

字面量的分类:

  • 整数类型:不带小数点的数字
  • 小数类型:带小数点的数字
  • 字符串类型:用双引号括起来的内容
  • 字符类型:用单引号括起来,内容有且只有一个
  • 布而类型:布尔值,表示真假,true,false
  • 空类型:一个特殊值,空值,null(null类型的字面量无法字节打印出来)

特殊字符

  • \t 制表符,在打印的时候会把前面字符串长度补齐到8或8的倍数
  • \n 换行符
  • \r 回车符

二,变量

变量:计算机内开辟的一个小空间,空间内存储数据值。

  • 变量的定义格式数据类型 变量名字 = 数据值;

  • 数据类型:限制变量能存储数据的类型

  • 变量名:存储空间的名字,指针

  • 等号:给指定变量名的空间赋值

变量使用的注意事项:

  • 一个变量只能存一个数据值

  • 变量名不能重复

  • 一条语句可以定义多个变量int a,b,c

  • 变量使用前要赋值

  • 变量有作用域和范围(变量根据所处位置不同分为局部变量成员变量

    • 局部变量:写在方法体中的变量(局部变量的作用范围只在这个方法体中,不能用static,final,public等关键字修饰)
  • 成员变量:写在成员位置中的变量


数据类型:数据类型分为基本数据类型引用数据类型

基本数据类型:

  • 整数类型
    • byte 取值范围-128~127 ,在内存中占用1字节
    • short 取值范围 -32768~32767, 在内存中占用2字节
    • int 取值范围 -2147483648~21471483647 ,在内存中占用4字节,整数类型默认使用int
    • long 取值范围-9223372036854772808~9223372036854772807 ,在内存中占用8字节,需要在赋值的数字最右边加上L标识
  • 浮点数类型
    • float 取值范围 -3.401298e-38~3.402823e+38, 在内存中占用4字节,需要在赋值的数字最右边加上F标识
    • double 取值范围 -4.9000000e-324~1.797693e+308 ,在内存中占用8字节,浮点数类型默认使用double
  • 字符类型
    • char 取值范围 0~65535 ,在内存中占用2字节
  • 布尔类型
    • boolean 取值范围 true,flase ,在内存中占用1字节

整数和小数取值范围大小关系:

double>float>long>int>short>byte


标识符:在代码中的类名,方法名,变量名统称标识符

  • 取名规则:
    1. 由数字,字母,下划线,美元符号组成
    2. 不能以数字开头
    3. 不能是关键字
    4. 区分大小写
  • 取名标准:
    1. 小驼峰命名法:给方法,变量取名用小驼峰命名法
      • 标识符是一个单词的时候全部小写
      • 标识符有多个单词组成时,第一个单词首字母小写,其他首字母大写
    2. 大驼峰命名法:类名
      • 标识符是一个单词的时候,首字母大写
      • 标识符由多个单词组成的时候,每个单词首字母大写
    3. 取名要见名知意

三,运算符

运算符:对字面量或变量进行操作的符号

表达式:用运算符把字面量或变量连接起来,符合 java 语法的式子

3.1运算符分类

  • 算数运算符

    符号说明
    =
    -
    *
    /
    %取余
  • 自增,自减运算符

    ++ 和 --,作用是变量 +1 和变量 -1,可以放在变量的前面或后面,所代表的意义也是不一样的!

    放前面代表先进行 ++ 或 -- 再进行其他运算,后面就是先进行其他运算,最后再进行 ++ 或 --

  • 赋值运算符

    符号作用说明
    =赋值int a=10,把10赋值给a
    +=加后赋值a+=b,a=a+b
    -=减后赋值a-=b,a=a-b
    *=乘后赋值a*=b,a=a*b
    /=除后赋值a/=b,a=a/b
    %=取余后赋值a%=b,a=a%b
  • 关系运算符 / 比较运算符

    符合说明
    ==a==b,判断a是否等于b,成立返回true,不成立返回false
    !=a!=b,判断a是否不等于b,成立返回true,不成立返回false
    >a>=b,判断a是否大于b,成立返回true,不成立返回false
    <a<b,判断a是否小于b,,成立返回true,不成立返回false
    >=a>=b,判断a是否大于等于b,成立返回true,不成立返回false
    <=a<=b,判断a是否小于等于b,成立返回true,不成立返回false

    关系运算符结果都是 boolean 类型

  • 短路逻辑运算符

    符号作用
    &&短路与 俩边都为真结果才为真
    ||短路或 俩边只要有一个为真结果就为真

    如果表达式左边部分就可以确定整个表达式的结果,那么右边部分就不会执行

  • 三元运算符

    是 if 的一种缩写

    格式:关系表达式?表达式1:表达式2,如果关系表达式结果为真就执行 1,否则执行 2

  • 运算符的优先级

    小括号优先于所有,&& 优先级大于 ||

3.2类型转换

数字进行运算的时,数据类型不一样是不能运算的,这个时候需要类型转换,类型转换分为俩种:

  • 强制类型转换:(大 --> 小)

    如果把一个取值范围大的数值,赋值给取值范围小的变量,是不允许直接赋值的。如果一定要赋值,就需要强制类型转换

    格式:目标数据类型 变量名 =(目标数据类型) 被强制转换的值

  • 隐式类型转换:自动类型提升(小 --> 大 )

    1. 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
    2. byte,short,char三种类型数据运算时,会先提升为int再运算

字符串中的加号运算符:当 "+" 操作中出现字符串时,这个时候表示字符串的拼接,会将前后俩个数据拼接在一起产生一个新的字符串

运算顺序:变量,数据之间的运算表达式,是从左到右依次执行的。如 1+99+"abc"="100abc"

字符的运算操作:当出现字符 + 字符,字符 + 数字的时候,先把字符通过 ASCII 表查到对应的数字再进行计算!

ASCII 码表记:

a-->97

A-->65

注:如果是整数之间操作只能得到整数,多出小数部分会被删掉。

四,流程控制语句

顺序结构语句是 java 程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。

4.1 IF语句

  1. 格式

    if(关系表达式){
    	语句体;
    }
    
  2. 格式:

    if(关系表达式){
        语句体;
    }else{
        语句体
    }
    
  3. 格式

    if(关系表达式1){
        语句体;
    }else if(关系表达式2){
        语句体;
    }else{
        语句体;
    }
    
  • 如果表达式内是一个布尔类型变量判断,不需要用 ==

  • 如果语句体只有一行代码,不需要大括号(建议加上)

  • 格式 3 可以有多个 else if

4.2 switch语句

格式 1:

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

格式 2:

switch(表达式){
        case 值1->{
            语句体;
        }
        case 值2->{
            语句体
        }
        case 值3->{
            语句体;
        }
        default ->{
            语句体;
        }
}

注意:

  1. case的值只能为字面量不能为变量
  2. case值不能重复
  3. break表示中断,用来结束switch语句
  4. default可以不写,default可以不写在最下面,但是不建议
  5. if用来进行范围判断,switch用来对精确的值进行判断

4.3 循环结构

  • for 循环

    //for(初始化语句;条件判断语句;条件控制语句)
    for(int i=0;i<n;i++){
        //语句;
    }
    
  • while 循环

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

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


do while会先执行大括号内部命令一次再判断

- **死循环**

```java
while(true){
    
}
do{
    
}while(true);
for(;;){
    
}
  • 循环的俩个关键字

    1. continue:结束本次循环,开启下次循环
    2. break:结束循环

五,数组

数组指的是一种容器,可以用来存储同种数据类型的多个值。

5.1 数组的定义

//数据类型[] 数组名
int[] array;
//数据类型 数组名[]
int array[]

数组的初始化:在内存中为数组容器开启空间,将数据存入容器的过程

完整格式

//数据类型[] 数组名=new 数据类型[]{值列表};,这个是数组的静态初始化
int[] array=new int[]{1,2,3,4};
//数据类型[] 数组名=new 数据类型[10],这个是数组的动态初始化
//这样是创建一个空数组,容量为10
int[] array=new int[10];
//数据类型[][] 数组名=new 数据类型[][]={{},{},{}};这种就是多维数组的创建
int[] arry={1,2,3};

数组名:是数组容器在内存中的地址值,可以打印出来

5.2数组元素访问

//数组名 [索引]
array[10];
//索引是数组的下标,用来对数组内元素的访问,其中索引从0开始,到n-1

在 java 中有一个方法求数组长度:数组名.length

六,方法

方法是程序中最小的执行单元,main 方法是程序运行的入口

方法可以提高代码的复用性,可维护性

重复的代码,具有独立功能的代码可以抽取到方法中

6.1方法的定义与调用

//把一些代码打包到一起,该过程成为方法的定义
public static 返回值的数据类型 方法名(形参列表){
    方法体;
    return 返回值(需要和方法返回值的数据类型一样);
}
//方法定义后需要手动调用,这个过程叫方法的调用
方法名(实参列表);
//形参:指的是方法中定义的参数
//实参:指的是方法调用中的参数
//方法调用时形参和实参必须一一对应,名字可以不一样数据类型必须一一对应。

注意:

  1. 方法和方法间是平级的,不能相互嵌套定义
  2. 方法的编写顺序和执行顺序无关
  3. 方法返回值类型void表示方法没有返回值,可以不写return
  4. retrun下面不能写代码,因为执行不到,属于无效代码(try-catch-finally除外)

6.2 方法的重载

方法定义过程中,形参不同会构成不同的方法,这个就是方法的重载关系

//顺序不同虽然也可以构成重载但是不建议
public static int sum(int a,int b){
    
}
public static int sum(int a,int b ,int c){
    
}

基本数据类型与引用数据类型的区别

  • 基本数据类型:变量内存储的是真实的数据
  • 引用数据类型:只要是new出来的都是引用数据类型,因为此时变量存储的是其他空间的地址值

方法的值传递

  • 传递基本数据类型时,传递的是真实的数据,形参改变不影响实际参数的值
  • 传递引用数据类型时,传递的是地址值,形参的改变会影响到实参的值