前端路径 E:\sky\nginx-1.20.2
localhost:80
后端部署 1. git本地推送
常量.getBytes()是字符串转化为 字节数组的方法
1 | String password = "123456"; |
Controller控制层->service业务层->Mapper持久层->Database数据库
来补一下基础知识,参考网址
1 | public class Hello{ |
一个程序的基本单位就是class
入口方法名
1 | public class Hello{ |
类里面定义了一个方法,该方法的方法名是main,返回值是void
字符串引用
1 | String s = "hello"; |
常量
1 | final double PI = 3,14; |
var
1 | StringBulider sb = new StringBulider();//StringBulider:String类型的加强版 |
如果想忽略变量类型,用var
1 | var sb = new StringBulider(); |
移位运算
可以对整数进行移位运算。对整数7左移1位将得到整数14,左移两位将得到整数28:
1 | int n = 7; // 00000000 00000000 00000000 00000111 = 7 |
左移29位时,由于最高位变成1,因此结果变成了负数。
字符是char,字符串是String
最后用加号连接,加号外不加“”
数组
1 | public class Main{ |
获取数组大小
1 | System.out.println(ns.length); |
oop
类
1 | class Person{ |
实例
1 | Person ming = new Person(); |
创建了一个Person类的实例,并通过变量ming指向它
Person ming 定义Person类型的变量ming
new Person()创建Person实例
访问实例变量可以用 变量.实例
1 | ming.name = "xiaoming"; |
方法:class属性设置成private后外部main函数不能直接通过访问属性的方式修改内部属性,所以在class类里面添加方法
1 | public class Main{ |
因为json提交过来的数据所以加@RequestBody注解
mapper,service,controller
1 | 修饰符 返回类型 方法名(传参){ |
方法可以封装一个类的对外接口
不知道传参数量时用类型...定义
1 | class Group{ |
数组
1 | String[] fullname = new String[]{"111","222" |
构造方法
类里面创造一个和类名一样的方法名,new的时候可以同时创建对象和调用方法
如果既要想使用带参数的构造方法,又想保留不带参数的构造方法,那就创建两个对象
可以构造多个构造方法
1 | class Person{ |
一个构造方法可以调用其他构造方法,用this()
1 | class Person{ |
1 | public class Main { |
方法重载
功能类似但是参数不同:同名方法
调用同名方法就叫方法重载
1 | public class Main { |
继承
可以复用,关键字extend
1 | class Student extends Person{ |
要想成功继承,父类属性得是protect,不能是private
1 | class Person{ |
任何class的构造方法,第一行语句必须是调用父类的构造方法。如果没有明确地调用父类的构造方法,编译器会帮我们自动加一句super();
1 | class Student extends Person{ |
阻止继承
父类挂sealed和permits,子类挂final有更好的封装性
1 | public sealed class Shape permits Rect,Circle{} |
向上转型
1 | Person p = new Student(); |
向下转型
1 | public class Main{ |
组合
1 | class Student extends Person{ |
1 | public class Main { |
多态
Override要保证参数和返回值相同
加上@Override可以让编译器帮助检查是否进行了正确的覆写。希望进行覆写,但是不小心写错了方法签名,编译器会报错。
@Override不是必需的。
1 | 编译看左边 |
1 | public double totalTax(Income... incomes){//变量名是incomes,对象是income |
覆写Object方法
因为所有的class最终都继承自Object,而Object定义了几个重要的方法:
toString():把instance输出为String;equals():判断两个instance是否逻辑相等;hashCode():计算一个instance的哈希值。
抽象类
1 | class Person{ |
抽象方法无法执行,不用写{}(执行语句)
抽象类无法被实例化,无法执行抽象方法
抽象相当于规范
1 | public class Main{ |
接口
声明
1 | interface Person{ |
所谓interface,就是比抽象类还要抽象的纯抽象接口,因为它连字段都不能有。因为接口定义的所有方法默认都是public abstract的,所以这两个修饰符不需要写出来(写不写效果都一样)。
1 | class Student implements Person{ |
接口继承
1 | interface Hello{ |
静态字段和静态方法
静态字段并不属于实例
静态字段修改的是类的属性
包
不用public、protected、private修饰的字段和方法就是包作用域
1 | package hello; |
1 | package test; |
作用域
在方法内部定义的变量称为局部变量
内部类
1 | Outer.Inner inner = outer.new Inner(); |
匿名类
1 | // Anonymous Class |
静态内部类
classpath和jar
模块
声明依赖关系
在src目录下
java核心类
字符串和编码
StringBuilder
1 | delete(start, end) |
toString:把StringBulider转成String对象
如有错误,多多指教