Bom, garantindo que a data inicial sempre sera menor que a data final (e isso é facil de fazer), é só validar a data inicial da segunda faixa de datas, se essa data for maior que a data final da primeira faixa de datas, então ela não esta entre:
publicstaticvoidmain(String[]args){try{valida("01/05/2006","10/05/2006","11/05/2006","26/05/2006");}catch(ParseExceptione){e.printStackTrace();}}publicstaticvoidvalida(Dated1Ini,Dated1Fim,Dated2Ini,Dated2Fim){if(d2Ini.getTime()>d2Fim.getTime())thrownewIllegalArgumentException("Data final da segunda faixa que data inicial.");if(d1Ini.getTime()>d1Fim.getTime())thrownewIllegalArgumentException("Data final da primeira faixa que data inicial.");if(d2Ini.getTime()>d1Fim.getTime()){System.out.println("fora");}else{System.out.println("entre");}}publicstaticvoidvalida(Stringsd1Ini,Stringsd1Fim,Stringsd2Ini,Stringsd2Fim)throwsParseException{SimpleDateFormatsdf=newSimpleDateFormat("dd/MM/yyyy");Dated1Ini=sdf.parse(sd1Ini);Dated1Fim=sdf.parse(sd1Fim);Dated2Ini=sdf.parse(sd2Ini);Dated2Fim=sdf.parse(sd2Fim);valida(d1Ini,d1Fim,d2Ini,d2Fim);}