Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La Clase String de C++
La Clase String de C++
LaclaseString
Cmoseobtieneinformacinacercadelstring
Comparacindestrings
Extraerunsubstringdeunstring
Convertirunnmeroastring
Convertirunstringennmero
MtodosPrincipales
Hemosaprendidoadiferenciarentreclaseyobjetos,aaccederdesdeunobjetoalosmiembrosdatosy
alasfuncionesmiembro.VamosautilizarclasesimportantesenellenguajeJavayacrearobjetosde
dichasclases.EmpezaremosporlaclaseStringunadelasmsimportantesdellenguajeJava.Ms
adelante,volveremosaestudiarotrosejemplosparaqueellectorseacostumbreacrearsuspropias
clases.
LaclaseString
DentrodeunobjetodelaclasesStringoStringBuffer,Javacreaunarraydecaracteresdeunaforma
similaracomolohaceellenguajeC++.Aestearrayseaccedeatravsdelasfuncionesmiembrodela
clase.
LosstringsuobjetosdelaclaseStringsepuedencrearexplcitamenteoimplcitamente.Paracrearun
stringimplcitamentebastaponerunacadenadecaracteresentrecomillasdobles.Porejemplo,cuando
seescribe
System.out.println("El primer programa");
JavacreaunobjetodelaclaseStringautomticamente.
Paracrearunstringexplcitamenteescribimos
String str=new String("El primer programa");
Tambinsepuedeescribir,alternativamente
String str="El primer programa";
Paracrearunstringnulosepuedehacerdeestasdosformas
String str="";
String str=new String();
Unstringnuloesaqulquenocontienecaracteres,peroesunobjetodelaclaseString.Sinembargo,
String str;
estdeclarandounobjetostrdelaclaseString,peroannosehacreadoningnobjetodeestaclase.
Cmoseobtieneinformacinacercadelstring
UnavezcreadounobjetodelaclaseStringpodemosobtenerinformacinrelevanteacercadelobjetoa
travsdelasfuncionesmiembro.
Paraobtenerlalongitud,nmerodecaracteresqueguardaunstringsellamaalafuncinmiembro
length.
String str="El primer programa";
int longitud=str.length();
Podemosconocersiunstringcomienzaconundeterminadoprefijo,llamandoalmtodostartsWith,
quedevuelvetrueofalse,segnqueelstringcomienceonopordichoprefijo
String str="El primer programa";
boolean resultado=str.startsWith("El");
Enesteejemplolavariableresultadotomarelvalortrue.
Demodosimilar,podemossabersiunstringfinalizaconunconjuntodadodecaracteres,mediantela
funcinmiembroendsWith.
String str="El primer programa";
boolean resultado=str.endsWith("programa");
Sisequiereobtenerlaposicindelaprimeraocurrenciadelaletrap,seusalafuncinindexOf.
String str="El primer programa";
int pos=str.indexOf('p');
Paraobtenerlassucesivasposicionesdelaletrap,sellamaaotraversindelamismafuncin
pos=str.indexOf('p', pos+1);
ElsegundoargumentoledicealafuncinindexOfqueempieceabuscarlaprimeraocurrenciadela
letrapapartirdelaposicinpos+1.
OtraversindeindexOfbuscalaprimeraocurrenciadeunsubstringdentrodelstring.
String str="El primer programa";
int pos=str.indexOf("pro");
Vemosqueunaclasepuededefinirvariasfuncionesmiembroconelmismonombreperoquetienen
distintonmerodeparmetrosodedistintotipo.
Comparacindestrings
Lacomparacindestringsnosdalaoportunidaddedistinguirentreeloperadorlgico==ylafuncin
miembroequalsdelaclaseString.Enelsiguientecdigo
String str1="El lenguaje Java";
String str2=new String("El lenguaje Java");
if(str1==str2){
System.out.println("Los mismos objetos");
}else{
System.out.println("Distintos objetos");
}
if(str1.equals(str2)){
System.out.println("El mismo contenido");
}else{
System.out.println("Distinto contenido");
}
Estaporcindecdigodevolverquestr1ystr2sondistintosobjetosperoconelmismocontenido.
str1ystr2ocupanposicionesdistintasenmemoriaperoguardanlosmismosdatos.
Cambiemoslasegundasentenciayescribamos
String str1="El lenguaje Java";
String str2=str1;
System.out.prinln("Son el mimso objeto "+(str1==str2);
Losobjetosstr1ystr2guardanlamismareferenciaalobjetodelaclaseStringcreado.Laexpresin
(str1==str2)devolvertrue.
Asipues,elmtodoequalscomparaunstringconunobjetocualquieraquepuedeserotrostring,y
devuelvetruecuandodosstringssonigualesofalsesisondistintos.
String str="El lenguaje Java";
boolean resultado=str.equals("El lenguaje Java");
Lavariableresultadotomarelvalortrue.
LafuncinmiembrocomapareTodevuelveunenteromenorquecerosielobjetostringesmenor(en
ordenalfabtico)queelstringdado,cerosisoniguales,ymayorquecerosielobjetostringesmayor
queelstringdado.
String str="Toms";
int resultado=str.compareTo("Alberto");
Lavariableenteraresultadotomarunvalormayorquecero,yaqueTomsestdespusdeAlbertoen
ordenalfabtico.
String str="Alberto";
int resultado=str.compareTo("Toms");
Lavariableenteraresultadotomarunvalormenorquecero,yaqueAlbertoestantesqueTomsen
ordenalfabtico.
Extraerunsubstringdeunstring
Enmuchasocasionesesnecesarioextraerunaporcinosubstringdeunstringdado.Paraeste
propsitohayunafuncinmiembrodelaclaseStringdenominadasubstring.
Paraestraerunsubstringdesdeunaposicindeterminadahastaelfinaldelstringescribimos
String str="El lenguaje Java";
String subStr=str.substring(12);
Seobtendrelsubstring"Java".
Unasegundaversindelafuncinmiembrosubstring,nospermiteextraerunsubstringespecificando
laposicindecomienzoylaelfinal.
String str="El lenguaje Java";
String subStr=str.substring(3, 11);
Seobtendrelsubstring"lenguaje".Recurdese,quelasposicionesseempiezanacontardesdecero.
Convertirunnmeroastring
ParaconvertirunnmeroenstringseemplealafuncinmiembroestticavalueOf(msadelante
explicaremosestetipodefunciones).
int valor=10;
String str=String.valueOf(valor);
LaclaseStringproporcionaversionesdevalueOfparaconvertirlosdatosprimitivos:int,long,float,
double.
Estafuncinseempleamuchocuandoprogramamosapplets,porejemplo,cuandoqueremosmostrarel
resultadodeunclculoenelreadetrabajodelaventanaoenuncontroldeedicin.
Convertirunstringennmero
Cuandointroducimoscaracteresenuncontroldeedicinavecesesinevitablequeaparezcanespacios
yaseaalcomienzooalfinal.Paraeliminarestosespaciostenemoslafuncinmiembrotrim
String str=" 12 ";
String str1=str.trim();
Paraconvertirunstringennmeroentero,primeroquitamoslosespaciosenblancoalprincipioyal
finalyluego,llamamosalafuncinmiembroestticaparseIntdelaclaseInteger(claseenvolventeque
describelosnmerosenteros)
Paraconvertirunstringennmerodecimal(double)serequierendospasos:convertirelstringenun
objetodelaclaseenvolventeDouble,mediantelafuncinmiembroestticavalueOf,yacontinuacin
convertirelobjetodelaclaseDoubleenuntipoprimitivodoublemediantelafuncindoubleValue
String str="12.35 ";
double numero=Double.valueOf(str).doubleValue();
Sepuedehacerelmismoprocedimientoparaconvertirunstringanmeroentero
String str="12";
int numero=Integer.valueOf(str).intValue();
MtodosPrincipales
ParapoderaplicarestosmtodosesnecesariocrearunobjetoString.Ademsdeestosmtodos,laclase
Stringcuentaconotrosmuchos.ConsultarlaAPIparamsinformacin.
intlength():devuelvelalongituddelaString,incluyendoespaciosenblanco.Lalongitud
siempreesunaunidadmayorqueelndiceasociadoalltimocarcterdelaString.
Ejemplo:
Porconsola:
4
intindexOf(Stringstr,intindice):devuelveelndiceenelqueapareceporprimeravezla
Stringdelprimerargumentoenlaqueseaplicaelmtodo,apartirdelndiceespecificadoenel
segundoargumento.RecordarqueunaStringestindexada.Sielndiceapartirdelqueseinicia
labsquedanoexisteolaStringnoaparece,devuelve1.MUYUSADO.
Ejemplo:
Porconsola:
1porquelabsquedaseiniciaapartirdeunndicequenoexisteyaqueel
ndicemayoreslalongituddelaString1.
intindexOf(charch):devuelveelndiceenelqueapareceporprimeravezelcarcterquesele
pasaalargumento.Sinoseencuentraelcarcterdevuelve1.Seobservaqueelnombredeeste
mtodoesigualalanterioraunquesunmerodeargumentosesdistintoademsdesutipo.A
esto,enJava,selellamasobrecargademtodos:mismonombreperodistintonde
argumentosodistintotipodeargumentosodistintoorden.IralaAPIparacomprobarque
haymsconestemismonombre.Esteconceptosetratarmsenprofundidadentemas
posteriores.
Stringreplace(charviejoChar,charnuevoChar):cambiaelcarcterasociadoalprimer
argumentoporelqueselepasaalsegundo,delaStringsobrelaqueseaplicaelmtodo
generandounanueva.LaStringsobrelaqueseaplicaelmtodonocambia,simplementese
creaotranuevaenbasealaStringsobrelaqueseaplicaelmtodo.
Ejemplo:
Porconsola:
cucu
coco
StringtoLowerCase():devuelveunanuevaStringconvirtiendotodosloscaracteresdela
Stringsobrelaqueseaplicaelmtodo,enminsculas.
StringtoUpperCase():devuelveunanuevaStringconvirtiendotodosloscaracteresdelaString
sobrelaqueseaplicaelmtodo,enmaysculas.
booleanequals(Stringstr):investigasidosStringtienenlosmismoscaracteresyenelmismo
orden.Siesasdevuelvetrueysinofalse.MUYUSADO
booleanequalsIgnoreCase(Stringstr):investigasidosStringtienenlosmismoscaracteresy
enelmismoordensintenerencuentalasmaysculas.Siesasdevuelvetrueysino
false.MUYUSADO
booleanstartsWith(Stringstr):devuelvetruesilaStringsobrelaqueseaplicacomienzapor
ladelargumento;falsesiestonoocurre.
booleanstartsWith(Stringstr,intindice):devuelvetruesilaStringsobrelaqueseaplica
comienzaporladelargumentoapartirdeundeterminadondiceasociadoalsegundo
argumento;falsesiestonoocurre.
booleanendsWith(Stringstr):devuelvetruesilaStringsobrelaqueseaplicaacabaenladel
argumento;falsesiestonoocurre.
Stringtrim():devuelveunaStringenbasealaqueselepasaalargumento,perosinespacios
enblancoalprincipionialfinal.Noeliminalosespaciosenblancosituadosentrelaspalabras.
Ejemplo:
Porconsola:
14
12
Stringsubstring(intindiceIni,intindiceFin):devuelveunaStringobtenidaapartirdelndice
inicialincluidoydelndicefinalexcluido;esdecir,secomportacomounintervalosemiabierto
[indiceIni, indiceFin). Si el ndice final sobrepasa la longitud de la String, lanza una
IndexOutOfBoundsException.MUYUSADO.
Ejemplo:
Porconsola:
rrucu
charcharAt(intindice):devuelveelcarcterasociadoalndicequeselepasacomo
argumentodelaStringsobrelaqueseaplicaelmtodo.Sielndicenoexisteselanzauna
StringIndexOutOfBoundsExceptionqueheredadeIndexOutOfBoundsException.MUY
USADO.