Está en la página 1de 5

15/8/2015

Gestindecadenasenjava

GESTINDECADENAS
ProgramacinenJava
ndice
Introduccin
StringyStringBuffer
Creacindecadenas
Usodecadenas
StringBuffer
Conversindeobjetosa
Strings
EnlacesyBibliografa

Introduccin
Unacadenaesunasecuenciadecaracteres.Lascadenassonunapartefundamentaldelamayoradelosprogramas,aspuesJavatiene
variascaractersticasincorporadasquefacilitanlamanipulacindecadenas.Java tiene una clase incorporada en el paquete java.lang
queencapsulalasestructurasdedatosdeunacadena.Estaclase,llamadaStringeslarepresentacincomoobjetodeunamatrizde
caracteres que no se puede cambiar. Hay una clase que la acompaa, llamada StringBuffer, que se utiliza para crear cadenas que
puedensermanipuladasdespusdesercreadas.

Subir

StringyStringBuffer
Elpaquetejava.langcontienedosclasesdecadenas:StringyStringBuffer.LaclaseStringseutilizacuandosetrabajaconcadenasque
no pueden cambiar. Por otro lado, StringBuffer, se utiliza cuando se quiere manipular el contenido de una cadena. El entorno de
desarrollo Java proporciona dos clases para manipular y almacenar datos del tipo carcter: String, para cadenas constantes, y
StringBuffer,paracadenasquepuedencambiar.

Comosonconstantes,losStringssonmseconmicos(utilizanmenosmemoria)quelosStringBuffersypuedersercompartidos.Poreso
esimportanteutilizarStringsiemprequeseaapropiado.

Subir

Creacindecadenas
MuchosStringssecreanapartirdecadenasliterales.Cuandoelcompiladorencuentraunaseriedecaracteresentrecomillas("y"),crea
unobjetoStringcuyovaloreselpropiotexto.Elesquemageneraleselsiguiente:Stringnombre="cadena"Cuandoelcompilador
encuentralasiguentecadena,creaunobjetoStringcuyovaloresHolaMundo.

"HolaMundo"
otambin

Strings="HolaMundo"
TambinsepuedencrearobjetosStringcomoseharaconcualquierotroobjetoJava:utilizandonew.

Strings=newString("HolaMundo.");
Elconstructoranterioresequivalenteperoesmuchomseficienteelprimermtodoyaque,elsegundomtodocreadosobjetosString
envezdeslouno.

SepuedenutilizarcadenasliteralesencualquierlugardondesepuedautilizarunobjetoString.Porejemplo,System.out.println()acepta
unargumenteoString,poresosepuedeutilizarunacadenaliteralensulugar:

System.out.println("HolaMundo!");
Subir

Usodecadenas
Concatenacindecadenas
Java permite concatenar cadenas facilmente utilizando el operador +. El siguiente fragmento de cdigo concatena tres cadenas para
producirsusalida:

"Laentradatiene"+contador+"caracteres."
Dos de las cadenas concatenadas son cadenas literales: "La entrada tiene " y " caracteres.". La tercera cadena la del medio es

http://dis.um.es/~lopezquesada/documentos/IES_1213/IAW/curso/UT3/ActividadesAlumnos/15/index.html

1/5

15/8/2015

Gestindecadenasenjava
realmenteunenteroqueprimeroseconvierteacadenayluegoseconcatenaconlasotras.

Longituddecadenas
unodelosmtodosmashabitualesqueseutilizanenunStringeslength,quedevuelveeln.decaracteresdeunacadena:

Strings="abc";
System.out.println(s.length());
Elresultadodeejecutarelcdigoanterior,seralaimpresinde3,quesecorrespondeconlalongitudllamadas.

UnpuntointeresanteenJavaesquesecreaunainstanciadeobjetoparacadaliteralString,porloquesepuedellamaralosmtodos
directamenteconunacadenaentrecomillas,comosifueraunareferenciaaobjeto,conesteejemplosevolveraaimprimirun3:

Strings="abc";
System.out.println("abc".lenght());

Extraccindecaracteres
Para extraer un nico carcter de una cadena, se puede referir a un carcter indexado mediante el mtodo charAt, la sintaxis es la
siguienteObjeto_cadena.charAt(ndice)

"abc".charAt(1)
Devolver'b'

Sisenecesitaextraermsdeuncarcteralavez,puedeutilizarelmtodogetChars,quelepermiteespecificarelndicedelprimer
carcterydelltimomsunoquesedeseancopiar,ademsdelamatrizchardondesedeseancolocardichoscaracteres.

Strings="Estonoesunacancin";
charbuf[]=newchar[2];
s.getChars(5,7,buf,0);
bufahoratendrelvalor'no'

TambinexisteunafuncintilllamadatoCharArray,quedevuelveunamatrizdecharquecontienelacadenacompleta.

Comparacindecadenas
Si se desean comparar dos cadenas para ver si son iguales, puede utilizar el mtodo equals de String. Devolver true si el nico
parmetro est compuesto de los mismos caracteres que el objeto con el que se llama a equals. Una forma alternativa de equals
llamadaequalsIgnoreCaseignorasiloscaracteresdelascadenasquesecomparanestnenmaysculasominsculas.

Objeto_cadena1.equals(Objeto_cadena2);
Objeto_cadena1.equalsIgnoreCase(Objeto_cadena2);
Veamosahoraunejemplo:

Stringcadena1="pepe";
Stringcadena2="juan";
if(cadena1.equals(cadena2))
{
//Ambascadenassoniguales(noeselcaso)
}
{
//Ambascadenassoniguales(eselcaso)
}
Igualdad
El mtodo equals y el operador = = hacen dos pruebas completamente diferentes para la igualdad. Mientras que el mtodo equals
comparaloscaracterescontenidosenunaString,eloperador==comparadosreferenciasdeobjetoparaversiserefierenalamisma
instancia. Por tanto, no podemos usar el signo == por que esta sera una comparacin binaria de punteros a memoria y no nos
devolveraelvalorcorrecto

ComparacinconCompareTo
Siloquequeremosescompararcadenasparaordenarlas,unaopcinesusarelmtodocompareTo()delaclaseString.Estemtodo
devuelve0siambascadenastienenelmismocontenido,negativosielStringesmenorvaantesqueelparmetroqueselepasay

http://dis.um.es/~lopezquesada/documentos/IES_1213/IAW/curso/UT3/ActividadesAlumnos/15/index.html

2/5

15/8/2015

Gestindecadenasenjava
positivosiesmayor.Esdecir:

if(cadena1.compareTo(cadena2)==0)
System.out.println("cadena1ycadena2soniguales");
else
if(cadena1.compareTo(cadena2)<0)
System.out.println("cadena1vaantesquecadena2");
else
if(cadena1.compareTo(cadena2)>0)
System.out.println("cadena2vadespusquecadena1");

Bsquedaenlacadena
Presentalossiguientesmtodosparabuscarcaracteresosubcadenasenlacadena,ydevuelvenelndicequehanencontradooelvalor
1silabsquedanohasidosatisfactoria:

intindexOf(charch,intstart):Devuelveelndicecorrespondientealaprimeraaparicindelcarcterchenlacadena,comenzando
abuscardesdeelcarcterstart(sinoseespecificasebuscadesdeelprincipio).
intindexOf(Stringstr):Devuelveelndicecorrespondientealcarcterenqueempiezalaprimeraaparicindelasubcadenastr.
int lastIndexOf( char ch, int start ): Devuelve el ndice correspondiente a la ltima aparicin del carcter ch en la cadena,
comenzandoabuscardesdeelcarcterstart(sinoseespecificasebuscadesdeelfinal).
intlastIndexOf(Stringstr):Devuelveelndicecorrespondientealcarcterenqueempiezalaltimaaparicindelasubcadenastr.

Objeto_cadena.indexOf(carcter);
Objeto_cadena.indexOf(cadena);
Objeto_cadena.lastIndexOf(carcter);
Objeto_cadena.lastIndexOf(cadena);

Conversindeminsculasamayusculasdeunacadena
Objeto_cadena.toLowerCase();//Loconvierteaminsculas.
Objeto_cadena.toUpperCase();//Loconvierteamaysculas.
Subir

StringBuffer
StringBuffer es una clase gemela de String que proporciona gran parte de la funcionalidad de la utilizacin habitual de las cadenas.
StringBuffer representa secuencias de caracteres que se pueden ampliar y modificar. Java utiliza ambas clases con frecuencia, pero
muchos programadores slo tratan con String y permiten que Java manipule StringBuffer por su cuenta mediante el operador
sobrecargado'+'.

Creacin

StringBuffernombre=newStringBuffer(cadena);
CapacidadReserva16espaciosaunqueyatengamosalgoescrito.Conlasegundalnealoquehacesesindicarelnumerodeespacios
quevasareservar.

Objeto_cadena.capacity();
Objeto_cadena.ensureCapacity(n);
ModificarPermitemodificaruncarcterenunadeterminadaposicin.

Objeto_cadena.SetcharAt(posicin,nuevocarcter);
InsertarAadeenunadeterminadaposicinuncarcterounacadena.

Objeto_cadena.insert(posicion,carcter);
Objeto_cadena.insert(posicion,cadena);
Ejemplo:

StringBuffersb=newStringBuffer("BebeCaliente!");
sb.insert(6,"Java");
System.out.println(sb.toString());

http://dis.um.es/~lopezquesada/documentos/IES_1213/IAW/curso/UT3/ActividadesAlumnos/15/index.html

3/5

15/8/2015

Gestindecadenasenjava
Elejemploanteriorimprimira:

BebeJavaCaliente!
Espaciosi/noParasabersielcontenidodeunavariableesunespacio.Devuelvetrueencasodeserunespacio.

Character.IsSpace(objeto_carcter);
NmeroocarcterParasabersielcontenidodeunavariableesunnmeroouncarcter.Devuelvetruecuandoesunnmero.

Character.isDigit(variable_char);
AlmtodoappenddeStringBufferselellamaamenudoatravsdeloperador+.Tieneversionessobrecargadasparatodoslostipos.
SellamaaString.valueOfparacadaparmetroyelresultadoseaadealStringBufferactual.Cadaversindeappenddevuelveelpropio
buffer.

Acontiuacinvemosunejemplodelamodificacindeunstringbufferconelmtodoappend:

classReverseString{
publicstaticStringreverseIt(Stringsource){
inti,len=source.length();
StringBufferdest=newStringBuffer(len);
for(i=(len1);i>=0;i){
dest.append(source.charAt(i));
}
returndest.toString();
}
}
El mtodo reverseIt() utiliza el mtodo append() de StringBuffer para aadir un carcter al final de la cadena de destino: dest. Si la
adiccin de caracteres hace que aumente el tamao de StringBuffer ms all de su capacidad actual, el StringBuffer asigna ms
memoria.Comolaasignacindememoriaesunaoperacinrelativamentecara,debemoshaceruncdigomseficienteinicializandola
capacidad del StringBuffer de forma razonable para el primer contenido, as minimizaremos el nmero de veces que se tendr que
asignarmemoria.Porejemplo,elmtodoreverseIt()construyeunStringBufferconunacapacidadinicialigualaladelacadenafuente,
asegurndose slo una asignacin de memoria para dest. La versin del mtodo append() utilizado en reverseIt() es slo uno de los
mtodosdeStringBufferparaaadirdatosalfinaldeunStringBuffer.Existenvariosmtodosappend()paraaadirvariostipos,como
float,int,boolean,einclusoobjetos,alfinaldelStringBuffer.Eldato

Subir

ConversindeobjetosaStrings
toString()
AvecesesconvenienteonecesarioconvertirunobjetoaunacadenaoStringporquesenecesitarpasarloaunmtodoquesloacepta
Strings. Por ejemplo, System.out.println() no acepta StringBuffers, por lo que necesita convertir el StringBuffer a String para poder
imprimirlo. El mtodo reverseIt() utiliza el mtodo toString() de StringBuffer para convertirlo en un String antes de retornar.return
dest.toString()

classReverseString{
publicstaticStringreverseIt(Stringsource){
inti,len=source.length();
StringBufferdest=newStringBuffer(len);
for(i=(len1);i>=0;i){
dest.append(source.charAt(i));
}
returndest.toString();
}
}
Todas las clases heredan toString() desde la clase Object y muchas clases del paquete java.lang sobreescriben este mtodo para
proporcionar una implementacin ms acorde con la propia clase. Por ejemplo, las clases Character, Integer, Boolean, etc..
sobreescribentoString()paraproporcionarunarepresentacinenStringdelosobjetos.

valueOf
Comoesconveniente,laclaseStringproporcionaunmtodoestticovalueOf().Sepuedeutilizarestemtodoparaconvertirvariablesde
diferentestiposaunString.Porejemplo,paraimprimirelnmeropi:

System.out.println(String.valueOf(Math.PI));
Convertircadenasanmeros
La clase String no porporciona ningn mtodo para convertir una cadena en un nmero. Sin embargo, cuatro clases de los "tipos
envolventes"(Integer,Double,Float,yLong)proporcionanunosmtodosdeclasellamadosvalueOf()queconviertenunacadenaenun

http://dis.um.es/~lopezquesada/documentos/IES_1213/IAW/curso/UT3/ActividadesAlumnos/15/index.html

4/5

15/8/2015

Gestindecadenasenjava
objetodeesetipo.AqutenemosunpequeoejemplodelmtodovalueOf()delaclaseFloat:

StringpiStr="3.14159";
Floatpi=Float.valueOf(piStr);
Subir

Enlacesdeintersybibliografa

ManualBsicodejava

Wikipediadelenguajesdeprogramacin

Cadenasenjava

Cdigosdeejemplosconcadenas

Subir

PedroReverteGmez|ImplantacindeAplicacionesWeb|2ASIR

http://dis.um.es/~lopezquesada/documentos/IES_1213/IAW/curso/UT3/ActividadesAlumnos/15/index.html

5/5

También podría gustarte