java基礎(chǔ)的詳細(xì)了解第六天
1、this關(guān)鍵字
首先需要提醒的是,在整個(gè)Java之中,this是最麻煩的一個(gè)關(guān)鍵字,只要是代碼開(kāi)發(fā),幾乎都離不開(kāi)this。在Java中this可以完成三件事情:表示本類(lèi)屬性、表示本類(lèi)方法、表示當(dāng)前對(duì)象(只介紹概念)。
1.1 “this.屬性”表示本類(lèi)屬性
在講解著一操作之前首先觀察如下程序:
class Person{
private String name;
private int age;
public Person(String n,int a){
name = n;
age = a;
}
public String getInfo(){
return "姓名:"+name+","+"年齡:"+age;
}
}
public class ThisText{
public static void main(String args[]){
Person per = new Person("張三",20);
System.out.println(per.getInfo());
}
}
這個(gè)時(shí)候的構(gòu)造方法的兩額參數(shù)的目的是為了類(lèi)中的name和age兩額屬性初始化,可是這個(gè)方法上的兩個(gè)參數(shù)一個(gè)是字母n一個(gè)是字母a,什么意思?那么最好的做法,既然構(gòu)造方法的兩個(gè)參數(shù)是為了類(lèi)中name和age初始化使用,那么最好將其參數(shù)名稱(chēng)也定義為name和age才最為直觀。
public Person(String name,int age){
name = name;
age = age;
}
此時(shí)構(gòu)造方法中參數(shù)的名稱(chēng)變得有意義了,但是這樣一來(lái)就出現(xiàn)問(wèn)題了,發(fā)現(xiàn)屬性沒(méi)有內(nèi)容了!因?yàn)樵诔绦蛑惺遣捎谩皗}”作為分界,采用就近的取用原則,所以現(xiàn)在為了明確指定要操作的是類(lèi)中屬性的話(huà),那么應(yīng)該采用“this.屬性”的形式完成,代碼應(yīng)該變?yōu)椋?/p>
public Person(String name,int age){
this.name = name; //this.name 表示類(lèi)中的屬性name
this.age = age;
}
提示:在日后的所有開(kāi)發(fā)過(guò)程之中,如果要調(diào)用類(lèi)中屬性的話(huà),都要使用“this.屬性”的方式來(lái)調(diào)用。
1.2“this”表示調(diào)用本類(lèi)方法
對(duì)于一個(gè)類(lèi)之中的方法分為兩種:
1、普通方法:之前強(qiáng)調(diào)過(guò),如果現(xiàn)在要調(diào)用的是本類(lèi)之中的方法,則可以使用“this.方法()”調(diào)用。
2、構(gòu)造方法:調(diào)用其他構(gòu)造使用“this ()”調(diào)用。
例如:現(xiàn)在一個(gè)類(lèi)之中存在了三個(gè)構(gòu)造方法(無(wú)參、有一個(gè)參數(shù)、有兩個(gè)參數(shù)),但是不管使用何種構(gòu)造方法,都要求在實(shí)例化對(duì)象產(chǎn)生的時(shí)候輸出一行提示信息:“歡迎光臨”。
class Person{
private String name;
private int age;
public Person(){
System.out.println("-----歡迎光臨-----");
}
public Person(String name){
System.out.println("-----歡迎光臨-----");
this.name = name;
}
public Person(String name,int age){
System.out.println("-----歡迎光臨-----");
this.name = name;
this.age = age;
}
public String getInfo(){
return "姓名:"+name+","+"年齡:"+age;
}
}
public class ThisText1{
public static void main(String args[]){
Person per = new Person();
System.out.println(per.getInfo());
}
}
不過(guò),遺憾的是按照之前的知識(shí)來(lái)講,此時(shí)的程序之中會(huì)出現(xiàn)大量的重復(fù)代碼,而這樣的方法不是最優(yōu)的。
這種情況下就可以利用this()來(lái)完成
class Person{
private String name;
private int age;
public Person(){
System.out.println("-----歡迎光臨-----");
}
public Person(String name){
this(); //調(diào)用無(wú)參構(gòu)造方法
this.name = name;
}
public Person(String name,int age){
this(name); //調(diào)用有一個(gè)參數(shù)的構(gòu)造方法
this.age = age;
}
public String getInfo(){
return "姓名:"+name+","+"年齡:"+age;
}
public class ThisText1{
public static void main(String args[]){
Person per = new Person();
System.out.println(per.getInfo());
}
}
使用this()就完成了構(gòu)造方法之間的互相調(diào)用。
**注意:**在使用this()調(diào)用構(gòu)造方法的時(shí)候有以下問(wèn)題:
1、所有的構(gòu)造方法實(shí)在對(duì)象實(shí)例化的時(shí)候被默認(rèn)調(diào)用,而且是在調(diào)用普通方法之前調(diào)用,所以使用“this()”調(diào)用構(gòu)造方法的操作,一定要放在構(gòu)造方法的首行;
2、如果一個(gè)類(lèi)之中存在了多種構(gòu)造方法的話(huà),并且這些構(gòu)造方法都使用this()相互調(diào)用,那么至少要保證一個(gè)構(gòu)造方法沒(méi)有調(diào)用其他構(gòu)造,以作程序的出口。
1.3“this”表示當(dāng)前對(duì)象
class Dx{
public void fun(){
System.out.println("當(dāng)前對(duì)象:" + this);
}
}
public class Ob{
public static void main(String args[]){
Dx dx = new Dx();
System.out.println(dx);
dx.fun();
Dx dx1 = new Dx();
System.out.println(dx1);
dx1.fun();
}
}

1.4引用傳遞進(jìn)階分析
程序一
class Message{
private String num;
public void setNum(String num){
this.num = num;
}
public String getNum(){
return num;
}
}
public class TestDemo1{
public static void main(String args[]){
Message message = new Message();
message.setNum("100");
fun(message);
//30
System.out.println(message.getNum());
}
public static void fun(Message temp){ //引用傳遞
temp.setNum("30");
}
}

程序二
public class TestDemo2{
public static void main(String args[]){
String str = "hello";
fun(str);
//hello
System.out.println(str);
}
public static void fun(String temp){
temp = "world";
}
}
本程序的關(guān)鍵是:String的內(nèi)容一旦聲明則不可改變,改變的是內(nèi)存的地址指向。

1.5對(duì)象比較
對(duì)象的比較實(shí)際就是對(duì)象屬性的比較。
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
public class TestDemo3{
public static void main(String args[]){
Person per1 = new Person("張三",20);
Person per2 = new Person("張三",20);
//false
System.out.println(per1==per2); //比較兩個(gè)對(duì)象的地址
//是同一個(gè)對(duì)象
if(per1.getName().equals(per2.getName())&&per1.getAge() == per2.getAge()){
System.out.println("是同一個(gè)對(duì)象");
}
else{
System.out.println("不是同一個(gè)對(duì)象");
}
}
}
對(duì)象比較的操作一定是一個(gè)類(lèi)自己本身所具備的功能,而且對(duì)象比較的操作特點(diǎn):
- 本類(lèi)接收自己的引用,而后與本類(lèi)當(dāng)前對(duì)象(this)進(jìn)行比較;
- 為了避免NullPointerException的產(chǎn)生,應(yīng)該增加一個(gè)null的判斷;
- 為了防止浪費(fèi)性能的情況出現(xiàn),可以增加地址數(shù)值的判斷,相同的對(duì)象地址相同;
- 之后與屬性依次進(jìn)行比較,如果屬性全部相同,則返回true,否則返回false。
1.6引用傳遞實(shí)際應(yīng)用
//電腦
class Computer{
private View [];
private Host;
}
//顯示器
class View{
}
//主機(jī)
class Host{
private Board;
}
//主板
class Board{
private Cpu [];
private Memory[];
private Disk[];
}
//CPU
class Cpu{
}
//內(nèi)存
class Memory{
}
//硬盤(pán)
class Disk{
}
public class TestDemo3{
public static void main(String args[]){
}
}
重點(diǎn) 1.7數(shù)據(jù)表與簡(jiǎn)單Java類(lèi)(一對(duì)多)
利用此關(guān)系模型,表示出emp和dept的關(guān)系,使用字段:
**emp表:**empno、ename、job、sal、comm、mgr、deptno;
**dept表:**deptno、dname、loc。
第一步 編寫(xiě)實(shí)體類(lèi)
class Emp{
private int empno;
private String ename;
private String job;
private double sal;
private double comm;
public Emp(int empno,String ename,String job,double sal,double comm){
this.empno = empno;
this.ename = ename;
this.job = job;
this.sal = sal;
this.comm = comm;
}
public String getEmpInfo(){
return "【Emp】 empno = " + this.empno +
",ename = " + this.ename +
",job; = " + this.job +
",sal = " + this.sal +
",comm = " + this.comm;
}
}
class Dept{
private int deptno;
private String dname;
private String loc;
public Dept(int deptno, String dname, String loc){
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public String getDept(){
return "deptno = " + this.deptno +
",dname = " + this.dname +
",loc = " + this.loc;
}
}
public class Exam1_7{
public static void main(String args[]){
}
}
第二步 進(jìn)行關(guān)系設(shè)計(jì)
一個(gè)雇員屬于一個(gè)部門(mén),需要追加部門(mén)引用
一個(gè)雇員有一個(gè)領(lǐng)導(dǎo),領(lǐng)導(dǎo)一定是自身關(guān)聯(lián)
一個(gè)部門(mén)有一個(gè)雇員,需要一個(gè)對(duì)象數(shù)組來(lái)描述多個(gè)雇員信息
class Emp{
private int empno;
private String ename;
private String job;
private double sal;
private double comm;
private Emp mgr; //描述雇員的領(lǐng)導(dǎo)
private Dept dept; //描述雇員的部門(mén)
public Emp(int empno,String ename,String job,double sal,double comm){
this.empno = empno;
this.ename = ename;
this.job = job;
this.sal = sal;
this.comm = comm;
}
public void setMgr(Emp mgr){
this.mgr = mgr;
}
public Emp getMgr(){
return this.mgr;
}
public void setDept(Dept dept){
this.dept = dept;
}
public Dept getDept(){
return this.dept;
}
public String getEmpInfo(){
return "【Emp】 empno = " + this.empno +
",ename = " + this.ename +
",job; = " + this.job +
",sal = " + this.sal +
",comm = " + this.comm;
}
}
class Dept{
private int deptno;
private String dname;
private String loc;
private Emp [] emps; //一個(gè)部門(mén)有多個(gè)雇員
public Dept(int deptno, String dname, String loc){
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public void setEmps(Emp [] emps){
this.emps = emps;
}
public Emp [] getEmps(){
return this.emps;
}
public String getDept(){
return "deptno = " + this.deptno +
",dname = " + this.dname +
",loc = " + this.loc;
}
}
public class Exam1_7{
public static void main(String args[]){
}
}
此時(shí)基本類(lèi)定義完成。
第三步 開(kāi)發(fā)需求
主函數(shù)main
public class Exam1_7{
public static void main(String args[]){
//第一步、設(shè)置類(lèi)對(duì)象的關(guān)系
//1.分別創(chuàng)建各自對(duì)象實(shí)例化
Dept dept = new Dept(10,"市場(chǎng)部","New York");
Emp ea = new Emp(7345,"Rock","CLERK",800.0,0);
Emp eb = new Emp(7567,"Joker","MANAGER",3050.0,0);
Emp ec = new Emp(7825,"Ben","PRESIDENT",10000.0,0);
//2.設(shè)置雇員和領(lǐng)導(dǎo)的關(guān)系
ea.setMgr(eb);
eb.setMgr(ec); //ec沒(méi)有領(lǐng)導(dǎo) 自己就是最大的領(lǐng)導(dǎo)
//3.設(shè)置雇員和部門(mén)的關(guān)系
ea.setDept(dept);
eb.setDept(dept);
ec.setDept(dept);
//4.設(shè)置部門(mén)的雇員
dept.setEmps(new Emp[]{ea, eb, ec});
//第二步、進(jìn)行數(shù)據(jù)的取得
//一個(gè)部門(mén)有多個(gè)雇員
/*
【Emp】 empno = 7345,ename = Rock,job = CLERK,sal = 800.0,comm = 0.0
【Emp】 empno = 7567,ename = Joker,job = MANAGER,sal = 3050.0,comm = 0.0
【Emp】 empno = 7825,ename = Ben,job = PRESIDENT,sal = 10000.0,comm = 0.0
*/
for(int i = 0; i < dept.getEmps().length; i++){
System.out.println(dept.getEmps()[i].getEmpInfo());
}
System.out.println();
//一個(gè)雇員有一個(gè)領(lǐng)導(dǎo)
//【Emp】 empno = 7567,ename = Joker,job = MANAGER,sal = 3050.0,comm = 0.0
System.out.println(ea.getMgr().getEmpInfo());
//【Emp】 empno = 7825,ename = Ben,job = PRESIDENT,sal = 10000.0,comm = 0.0
System.out.println(eb.getMgr().getEmpInfo());
//Exception in thread "main" java.lang.NullPointerException
//沒(méi)有設(shè)置關(guān)系 所以自己是老板 顯示空指針異常
//System.out.println(ec.getMgr().getEmpInfo());
System.out.println();
//一個(gè)雇員屬于同個(gè)部門(mén)
//deptno = 10,dname = 市場(chǎng)部,loc = New York
System.out.println(ea.getDept().getDeptInfo());
//deptno = 10,dname = 市場(chǎng)部,loc = New York
System.out.println(eb.getDept().getDeptInfo());
//deptno = 10,dname = 市場(chǎng)部,loc = New York
System.out.println(ec.getDept().getDeptInfo());
}
}
在上面的代碼基礎(chǔ)上進(jìn)行改進(jìn)
//一個(gè)部門(mén)有多個(gè)雇員,一個(gè)雇員有一個(gè)領(lǐng)導(dǎo),一個(gè)雇員屬于同個(gè)部門(mén)
/*
【Emp】 empno = 7345,ename = Rock,job = CLERK,sal = 800.0,comm = 0.0
該雇員所屬的領(lǐng)導(dǎo)【Emp】 empno = 7567,ename = Joker,job = MANAGER,sal = 3050.0,comm = 0.0
該雇員所屬的部門(mén)deptno = 10,dname = 市場(chǎng)部,loc = New York
------------------------------------------------------------------
【Emp】 empno = 7567,ename = Joker,job = MANAGER,sal = 3050.0,comm = 0.0
該雇員所屬的領(lǐng)導(dǎo)【Emp】 empno = 7825,ename = Ben,job = PRESIDENT,sal = 10000.0,comm = 0.0
該雇員所屬的部門(mén)deptno = 10,dname = 市場(chǎng)部,loc = New York
------------------------------------------------------------------
【Emp】 empno = 7825,ename = Ben,job = PRESIDENT,sal = 10000.0,comm = 0.0
自己就是領(lǐng)導(dǎo)
------------------------------------------------------------------
*/
for(int i = 0; i < dept.getEmps().length; i++){
System.out.println(dept.getEmps()[i].getEmpInfo());
if(dept.getEmps()[i].getMgr() != null){
System.out.println("該雇員所屬的領(lǐng)導(dǎo)" +
dept.getEmps()[i].getMgr().getEmpInfo());
System.out.println("該雇員所屬的部門(mén)" +
dept.getEmps()[i].getDept().getDeptInfo());
System.out.println("------------------------------------------------------------------");
}
else{
System.out.println("自己就是領(lǐng)導(dǎo)");
System.out.println("------------------------------------------------------------------");
}
}
1.8數(shù)據(jù)表與簡(jiǎn)單Java類(lèi)(多對(duì)多)
利用此關(guān)系模型,表示出student和course的關(guān)系,使用字段:
**student表:**stuid、name、age。
**course表:**cid、name、credit。
關(guān)系表:學(xué)生編號(hào)、課程編號(hào)、成績(jī)
要求:
可以找到一門(mén)課程,參加此次課程的所有學(xué)生信息和成績(jī)
可以根據(jù)一個(gè)學(xué)生,找到所參加的所有課程和沒(méi)門(mén)課程的一個(gè)成績(jī)
第一步 編寫(xiě)實(shí)體類(lèi)
class Student{
private int stuid;
private String name;
private int age;
public Student(int stuid, String name, int age){
this.stuid = stuid;
this.name = name;
this.age = age;
}
public String getStuInfo(){
return "【Student】stuid = " + this.stuid +
",name = " + this.name +
",age = " +this.age ;
}
}
class Course{
private int cid;
private String name;
private double credit;
public Course(int cid, String name, double credit){
this.cid = cid;
this.name = name;
this.credit = credit;
}
public String getCouInfo(){
return "【Course】cid = " + this.cid +
",name = " + this.name +
",credit = " + this.credit;
}
}
class StudentCourse{//學(xué)生選課
private Student student;
private Course course;
private double score;
public StudentCourse(Student student, Course course, double score){
this.student =student;
this.course = course;
this.score = score;
}
public Student getStudent(){
return this.student;
}
public Course getCrouse(){
return this.course;
}
public double getScore(){
return this.score;
}
}
第二步 進(jìn)行關(guān)系設(shè)計(jì)
class Student{
private int stuid;
private String name;
private int age;
private StudentCourse studentCourses [];
public Student(int stuid, String name, int age){
this.stuid = stuid;
this.name = name;
this.age = age;
}
public void setStudentCourses(StudentCourse []studentCourses){
this.studentCourses = studentCourses;
}
public StudentCourse[] getStudentCourses(){
return this.studentCourses;
}
public String getStuInfo(){
return "【Student】stuid = " + this.stuid +
",name = " + this.name +
",age = " +this.age ;
}
}
class Course{
private int cid;
private String name;
private double credit;
private StudentCourse studentCourses[];
public Course(int cid, String name, double credit){
this.cid = cid;
this.name = name;
this.credit = credit;
}
public void setStudentCourses(StudentCourse []studentCourses){
this.studentCourses = studentCourses;
}
public StudentCourse[] getstudentCourses(){
return this.studentCourses;
}
public String getCouInfo(){
return "【Course】cid = " + this.cid +
",name = " + this.name +
",credit = " + this.credit;
}
}
class StudentCourse{//學(xué)生選課
private Student student;
private Course course;
private double score;
public StudentCourse(Student student, Course course, double score){
this.student =student;
this.course = course;
this.score = score;
}
public Student getStudent(){
return this.student;
}
public Course getCrouse(){
return this.course;
}
public double getScore(){
return this.score;
}
}
第三步 開(kāi)發(fā)需求
主函數(shù)main
public class Exam1_8{
public static void main(String args[]){
//第一步、設(shè)置類(lèi)對(duì)象的關(guān)系
//1.分別創(chuàng)建各自對(duì)象實(shí)例化
Student stu1 = new Student(107,"Rock",13);
Student stu2 = new Student(108,"Joker",18);
Student stu3 = new Student(109,"Perke",22);
Course ca = new Course(1,"數(shù)據(jù)結(jié)構(gòu)",4.0);
Course cb = new Course(2,"計(jì)算機(jī)操作系統(tǒng)",2.0);
Course cc = new Course(3,"SSM框架集合",3.0);
//2.設(shè)置學(xué)生和課程的關(guān)系
stu1.setStudentCourses(new StudentCourse[]{
new StudentCourse(stu1,ca,78.0),
});
stu2.setStudentCourses(new StudentCourse[]{
new StudentCourse(stu2,ca,87.0),
new StudentCourse(stu2,cb,79.0)
});
stu3.setStudentCourses(new StudentCourse[]{
new StudentCourse(stu3,ca,90.0),
new StudentCourse(stu3,cb,95.0),
new StudentCourse(stu3,cc,99.0)
});
//3.設(shè)置課程和學(xué)生的關(guān)系
ca.setStudentCourses(new StudentCourse[]{
new StudentCourse(stu1,ca,78.0),
new StudentCourse(stu2,ca,87.0),
new StudentCourse(stu3,ca,90.0)
});
cb.setStudentCourses(new StudentCourse[]{
new StudentCourse(stu2,cb,79.0),
new StudentCourse(stu3,ca,90.0)
});
cc.setStudentCourses(new StudentCourse[]{
new StudentCourse(stu3,cc,99.0)
});
//第二步、進(jìn)行數(shù)據(jù)的取得
//可以找到一門(mén)課程,參加此次課程的所有學(xué)生信息和成績(jī)
/*
【Course】cid = 1,name = 數(shù)據(jù)結(jié)構(gòu),credit = 4.0
學(xué)生名單:【Student】stuid = 107,name = Rock,age = 13,成績(jī):78.0
學(xué)生名單:【Student】stuid = 108,name = Joker,age = 18,成績(jī):87.0
學(xué)生名單:【Student】stuid = 109,name = Perke,age = 22,成績(jī):90.0
*/
System.out.println(ca.getCouInfo());
for(int i = 0 ;i < ca.getStudentCourses().length ; i++){
System.out.print("學(xué)生名單:"+ ca.getStudentCourses()[i].getStudent().getStuInfo());
System.out.println(",score = "+ ca.getStudentCourses()[i].getScore());
}
System.out.println("--------------------------------------------------------------------");
//可以根據(jù)一個(gè)學(xué)生,找到所參加的所有課程和沒(méi)門(mén)課程的一個(gè)成績(jī)
/*
【Student】stuid = 109,name = Perke,age = 22
選課列表:【Course】cid = 1,name = 數(shù)據(jù)結(jié)構(gòu),credit = 4.0,score = 90.0
選課列表:【Course】cid = 2,name = 計(jì)算機(jī)操作系統(tǒng),credit = 2.0,score = 95.0
選課列表:【Course】cid = 3,name = SSM框架集合,credit = 3.0,score = 99.0
*/
System.out.println(stu3.getStuInfo());
for(int i = 0; i < stu3.getStudentCourses().length ; i++){
System.out.print("選課列表:" + stu3.getStudentCourses()[i].getCourse().getCouInfo());
System.out.println(",score = "+ stu3.getStudentCourses()[i].getScore());
}
}
}
總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
使用@Autowired注解引入server服務(wù)層方法時(shí)報(bào)錯(cuò)的解決
這篇文章主要介紹了使用@Autowired注解引入server服務(wù)層方法時(shí)報(bào)錯(cuò)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
JAVA隨機(jī)數(shù)隨機(jī)字母的實(shí)現(xiàn)(微信搶紅包小練習(xí))
這篇文章主要介紹了JAVA隨機(jī)數(shù)隨機(jī)字母的實(shí)現(xiàn)(微信搶紅包小練習(xí)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
java開(kāi)發(fā)_圖片截取工具實(shí)現(xiàn)原理
本文將詳細(xì)介紹java開(kāi)發(fā)_圖片截取工具實(shí)現(xiàn)原理,需要了解的朋友可以參考下2012-11-11
Java編程中二維數(shù)組的初始化和基本操作實(shí)例
這篇文章主要介紹了Java編程中二維數(shù)組的初始化和基本操作實(shí)例,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10
SpringBoot集成Swagger2構(gòu)建在線(xiàn)API文檔的代碼詳解
這篇文章主要介紹了SpringBoot集成Swagger2構(gòu)建在線(xiàn)API文檔,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
四個(gè)Java常見(jiàn)分布式鎖的選型和性能對(duì)比
當(dāng)涉及到分布式系統(tǒng)中的并發(fā)控制和數(shù)據(jù)一致性時(shí),分布式鎖是一種常見(jiàn)的解決方案,本文將對(duì)幾種常見(jiàn)的分布式鎖實(shí)現(xiàn)原理、實(shí)現(xiàn)示例、應(yīng)用場(chǎng)景以及優(yōu)缺點(diǎn)進(jìn)行詳細(xì)分析,需要的可以參考一下2023-05-05
基于JDK8-lambda表達(dá)式四種forEach性能對(duì)比
這篇文章主要介紹了基于JDK8-lambda表達(dá)式四種forEach性能對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
解決swagger主頁(yè)訪(fǎng)問(wèn),返回報(bào)錯(cuò)500問(wèn)題
在使用Swagger時(shí)遇到500錯(cuò)誤,通過(guò)仔細(xì)的debug發(fā)現(xiàn)問(wèn)題源于注解使用不當(dāng),具體表現(xiàn)為一個(gè)接口的入?yún)⒈诲e(cuò)誤地注解了三個(gè)參數(shù),而實(shí)際上只有兩個(gè),這導(dǎo)致了Swagger在解析時(shí)拋出了NullPointerException異常,解決方法是刪除錯(cuò)誤的第三個(gè)參數(shù)的注解2024-09-09

