后端培训0心得
本人主要依照课件的框架来写自己的心得,在很多表述上为追求准确会对课件方面进行较大程度的模仿,但是内容大都是个人已经有一定理解的,并且自己手敲的捏。
一、OOP
面向对象编程:面向对象会把事物抽象为对象概念,给对象赋予属性和方法,然后让每个对象根据自身的属性去执行方法。
举例:我们可以新建一个对象,赋予它name,fur,age等属性并给他赋予eat,bark,run等方法。
二、基本语法
1. 注释
//单行注释,只注释
/*这是多行注释
可以
注释
多行
*/
2. 标识符
标识符是用来给类,方法,变量,常量等进行命名的。
命名规则
- 标识符有数字,美元符号,下划线和unicode字符集(Unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。 码位就是可以分配给字符的数字。cv来的,我也不是很懂捏😋)
- 识别符各符号之间没有空格
- 标识符第一个字符不能为数字
- 识别符不能为关键字和保留字
-
关键字
对java编译器有特殊意义的字符,用来表示数据类型或者一种结构等
-
保留字
为java预留的关键字,当前版本之不是关键字,但在后续升级版本中可能成为关键字
-
- 标识符的命名最好能反映其作用。如:num,sum,add
命名规范-驼峰命名法
- 类名、接口名:首字母大写,后面每个单词首字母大写 例:
public class Student{ }
- 变量名、方法名:首字母小写,后面每个单词首字母大写
public String studentName(){ }
- 常量名:全部大写,单词与单词之间用下划线连接 例如:
CUR_TERM
变量
变量是在内存中开辟的存储空间,用于存放运算过程中需要用到的数据
局部变量:在方法体中声明的变量;没有默认值,必须初始化;方法结束后就会自动销毁。
实例(成员)变量:在类中但是在方法体外声明的变量,成员变量定义了类的属性;在对象创建时创建,在对象销毁时销毁;可以被访问;byte short int long
默认值为0,float double
为0.0,String
为null。
静态变量:由所有类实例共享。对于类的所有对象,只存在一个静态变量实体。随着类的加载而加载,随着类的销毁而销毁。有默认值,不必初始化。
变量必须先声明后使用。
相同变量只能声明一次。
3. 运算符
(1)算术运算符
设a为10,b为20 操作符 |
描述 | 例子 |
---|---|---|
+ | 加法:将运算符两侧的值相加 | a+b等于30 |
- | 减法:左操作数减去右操作数 | a-b等于-10 |
* | 乘法:操作符两侧相乘 | a*b等于200 |
/ | 除法:左操作符除以右操作符 | b/a等于2 |
% | 取余:左操作符除以右操作符的余数 | b%a等于0 |
++ | 自增:操作数的值增加1 | b++或者++b等于21 |
-- | 自减:操作数的值减少1 | a--或者--a等于9 |
(2)关系运算符
表格中实例整数变量a的值为10,变量b的值为20 运算符 |
描述 | 例子 | ||
---|---|---|---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真 | (a==b)为假 | ||
!= | 检查两个操作数的值是否相等,如果不相等则条件为真 | (a!=b)为真 | ||
> | 检查左操作数是否大于右操作数,如果是则条件为真 | (a>b)为假 | ||
< | 检查左操作数是否小于右操作数,如果是则条件为真 | (a= | 检查左操作数是否大于等于右操作数,如果是则条件为真 | (a>=b)为假 |
<= | 检查左操作数是否小于等于右操作数,如果是则条件为真 | (a数组也是一种对象 |
1.定义一个数组:
- 数组也有属性,如长度,维度等
- 数组创建之后长度不可改变
- 定义多维数组时,第一维数组的大小必须初始化。其他维度的数组可以不初始化。但在使用其他维度的数组之前必须对要使用的数组的大小初始化。
int [][][] arr = new int [3][][];
//定义数组的方法
//方法一
int [] a = new int [10];
//方法二
int [] a;
a = new int[10];
//方法三
int [] a = {1,2,3,4,5,6,7,8,9,0}
//多维数组
int [][] a = new int [2][3];
int [][] a = {{1,2.3},{4,5,6}};
//低维数组可以不等长
int [][] a = {{1,2,3},{4,5,6,7}};
//数组可以逐级建立;
int [][] a = new int [1][];
a[0] = new int [2];
int [] a = new int [] {1,2,3};
2. for-each
for(int score:scores)
system.out.println(score);
//此for-each循环只适用于从索引0开始的所有数组元素
for(int i = 0;i<scores.length;i++){
system.out.println(scores[i]);
}
//此for-each循环不需要从索引0开始
3. 可变长度参数表
- 是一种特殊长度的形参表,使指定的方法可以接受任意数量的参数并作为数组储存起来
- 参数可以是任意类型
public double distance(int ... list){
double sum = 0;
for(int num:list){
sum = sum + num;
}
return sum;
}
- 可变参数必须写在形参表的最后,且一个方法不能有多个可变参数
public double distance(int a,int b,int c,int ... list){
}
-可以在构造方法中使用可变长度参数列表
4. 二维数组
int a [][] = new int [5][10];
//第一个中括号内是第一维数组的大小,第二个中括号内是第二维数组的大小
for(int a [] : b [][]){//遍历每一个第二维数组
for(int c : a []){
print(c);
println();
//打印数组中的每一个元素
}
}
8. 继承
继承:继承允许子类、派生类继承另一个类的属性和方法。子类可以继承父类的成员,然后扩展或修改它们。java中允许多层继承,不允许多重继承
public class Rnb extends Song{
}
修饰符
变量和属性是有区别的,变量是方法体中定义的,属性是类体中定义的。
修饰符只用于修饰属性和方法,不用来修饰变量。
方法体中定义的变量在方法调用完之后就不存在了,不需要用修饰符。
- public
类公开可见,数据方法公开可见,一个java文件中只能有一个public类,遵循封装原则,public不应该修饰数据成员。 - protected
对其子类和同一个包内的类可见,protected成员在其他包中只能通过继承的方法来使用。 - 缺省 default
整个类的访问权限是本地,对同一个包内的其他类可见,最高访问权限是缺省。 - private
私有,仅对本类或者其外部类公开 - final
禁止变量被赋值,禁止方法被覆写,禁止类被继承重写方法
方法重载:方法名相同但参数个数类型和顺序不同时会进行方法的重载,返回值的类可以不同
- 子类中方法名和参数列表与父类的方法名和参数列表一样时会发生方法重写
- 返回值类型一致
- 子类方法访问权限>=被覆盖的父类方法
- 子类不能重写父类中用final修饰的方法
- 子类不能重写父类的构造方法
- 子类不能重写父类的构造函数
- 父类被重写后子类可以通过super调用被重写前的方法
- java不支持super.super的用法
- final定义的方法可以在同一个类中被重载