<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=N%C3%BAmeros_e_cadeas</id>
	<title>Números e cadeas - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=N%C3%BAmeros_e_cadeas"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=N%C3%BAmeros_e_cadeas&amp;action=history"/>
	<updated>2026-10-25T16:10:31Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=N%C3%BAmeros_e_cadeas&amp;diff=4465&amp;oldid=prev</id>
		<title>Arribi: /* A clase Math */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=N%C3%BAmeros_e_cadeas&amp;diff=4465&amp;oldid=prev"/>
		<updated>2008-03-04T17:59:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;A clase Math&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Nesta sección verase como usar as clases &amp;lt;code&amp;gt;Number&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt;  que proporciona a API de Java. Ademais, explícase como formatar a saída de datos dun programa.&lt;br /&gt;
==Números==&lt;br /&gt;
Java ten unha clase especial que facilita o traballo con números (por exemplo o cambio de base de decimal a octal; a conversión entre tipos, por exemplo, de String a int, etc.), é a clase [http://java.sun.com/javase/6/docs/api/java/lang/Number.html Number] que está no paquete java.lang. Esta clase e as súas subclases proporcionan ferramentas para traballar con tipos numéricos. Non hai que confundila cos [[Elementos_esenciais_da_linguaxe_Java#Tipos_de_datos|tipos de datos primitivos]] que proporciona Java e que o único que permiten é declarar unha variable dun tipo de dato determinado (int, float, etc.)&lt;br /&gt;
&lt;br /&gt;
Veremos ademais a clase [http://java.sun.com/javase/6/docs/api/java/io/PrintStream.html PrintStream] que proporcionan métodos para imprimir números cun determinado formato.&lt;br /&gt;
&lt;br /&gt;
Por último, traballaremos coa clase [http://java.sun.com/javase/6/docs/api/java/lang/Math.html Math] no paquete java.lang que contén funcións matemáticas que serven de complemento dos [[Elementos_esenciais_da_linguaxe_Java#Operadores|operadores]] xa existentes na linguaxe. Esta clase ten métodos para as funcións trigonométricas, exponenciais, etc.&lt;br /&gt;
===A clase Number===&lt;br /&gt;
Cando traballamos con números normalmente usamos os tipos de datos primitivos. Por exemplo:&lt;br /&gt;
    int i = 500;&lt;br /&gt;
    float gpa = 3.65;&lt;br /&gt;
    byte mascara = 0xff;&lt;br /&gt;
&lt;br /&gt;
Non entanto, existen motivos para usar obxectos en lugar de tipos de datos primitivos, como se verá máis adiante. Java proporciona clases que &amp;#039;&amp;#039;&amp;#039;&amp;quot;envolven&amp;quot;&amp;#039;&amp;#039;&amp;#039; (wrap) cada un dos tipos de datos primitivos, permitindo traballar indistintamente cos obxectos de tipo Number ou cos tipos primitivos. Isto é transparente para o programador xa que se usamos un tipo primitivo en lugar dun obxecto da clase Number o compilador empaqueta automaticamente o tipo primitivo na clase que o envolve. Analogamente, se usamos un obxecto de tipo Number onde se espera un tipo primitivo o compilador desempaqueta o obxecto automaticamente. Vexamos un exemplo:&lt;br /&gt;
    Integer x, y; // Integer é unha subclase da clase Number para traballar con enteiros&lt;br /&gt;
    x = 12;&lt;br /&gt;
    y = 15;&lt;br /&gt;
    System.out.println(x+y);&lt;br /&gt;
&lt;br /&gt;
Cando se asignan valores a x e y o compilador empaqueta os enteiros 12 e 15 porque x e y son obxectos da clase Integer. Na sentenza println() desempaquétanse x e y para que podan sumarse como enteiros, xa que o operador + usa operandos de tipo int (tipo primitivo) e non obxectos de tipo Integer. Con todo, hai que ter en conta que un obxecto de tipo Boolean non se pode usar como un tipo primitivo boolean.&lt;br /&gt;
&lt;br /&gt;
Para cada tipo de dato primitivo hai unha clase que o envolve. Por exemplo, a clase que envolve a int e Integer; a clase que envolve a float é Float, etc. A clase que envolve o tipo de dato primitivo sempre se chame igual que o tipo primitivo pero con a primeira letra en maiúsculas, exceptuando Integer para int e Character para char que se verá máis adiante.&lt;br /&gt;
&lt;br /&gt;
Todas as clases numéricas son subclases da clase Number, que é [[Herdanza#Clases_e_m.C3.A9todos_abstractos|abstracta]]. A &amp;#039;&amp;#039;&amp;#039;xerarquía&amp;#039;&amp;#039;&amp;#039; é a seguinte:&lt;br /&gt;
[[Imagen:Objects-numberHierarchy.gif|center]]&lt;br /&gt;
Hai outras catro subclases de Number que non veremos. Estas son BigDecimal e BigInteger, usadas para cálculos de alta precisión; e AtomicInteger e AtomicLong usadas para aplicacións muti-fío (multi-threaded). &lt;br /&gt;
&lt;br /&gt;
Os &amp;#039;&amp;#039;&amp;#039;motivos&amp;#039;&amp;#039;&amp;#039; para usar obxectos de tipo Number en lugar de tipos primitivos son, principalmente, tres:&lt;br /&gt;
#A clase Number proporciona métodos para converter valores entre tipos primitivos, a cadeas ou conversións entre diferentes sistemas numéricos (decimal, octal, hexadecimal e binario).&lt;br /&gt;
#Permitir traballar cos tipos de datos primitivos coma se fosen obxectos, por exemplo, cando se manipulan conxuntos de números pode ser máis axeitado usar métodos con argumentos de tipo Number.&lt;br /&gt;
#A clase Number proporciona valores constantes, como MIN_VALUE e MAX_VALUE, que devolven os valores máis baixos e máis altos que se poden usar neste tipo de datos.&lt;br /&gt;
&lt;br /&gt;
====Construtores====&lt;br /&gt;
Os construtores das clases que envolven os tipos primitivos poden ter como argumento:&lt;br /&gt;
*Un tipo primitivo&lt;br /&gt;
*Un String que representa ao número&lt;br /&gt;
&lt;br /&gt;
Por exemplo:&lt;br /&gt;
   Integer i1 = new Integer(42);&lt;br /&gt;
   Integer i2 = new Integer(&amp;quot;42&amp;quot;);&lt;br /&gt;
Ou tamén:&lt;br /&gt;
   Float f1 = new Float(3.14f);&lt;br /&gt;
   Float f2 = new Float(&amp;quot;3.14f&amp;quot;);&lt;br /&gt;
Isto é así para todos os construtores das subclases de Number exceptuando a clase Character que só pode ter como argumento un char:&lt;br /&gt;
  Character c1 = new Character(&amp;#039;c&amp;#039;);&lt;br /&gt;
====Métodos útiles====&lt;br /&gt;
Nestas clases existen tres tipos de métodos que son especialmente útiles:&lt;br /&gt;
*Os métodos &amp;#039;&amp;#039;&amp;#039;xxxValue()&amp;#039;&amp;#039;&amp;#039;. Non teñen argumentos e devolven un tipo primitivo a partir dun obxecto de tipo Number. Por exemplo:&lt;br /&gt;
   Integer i2 = new Integer(42); //  crea un obxecto de tipo Integer (wrapper object)&lt;br /&gt;
   byte b = i2.byteValue();      //  convirte o valor de i2 ao tipo primitivo byte&lt;br /&gt;
   short s = i2.shortValue();    //  convirte o valor de i2 ao tipo primitivo short&lt;br /&gt;
   double d = i2.doubleValue();  //  convirte o valor de i2 ao tipo primitivo double&lt;br /&gt;
  //Outro exemplo:&lt;br /&gt;
   Float f2 = new Float(3.14f);  &lt;br /&gt;
   short s = f2.shortValue();    &lt;br /&gt;
   System.out.println(s);        // o resultado é 3  (truncado, non redondeado)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Os métodos &amp;#039;&amp;#039;&amp;#039;parseXxx()&amp;#039;&amp;#039;&amp;#039;. Teñen un String como argumento e devolven un tipo primitivo (xa vistos para &amp;quot;parsear&amp;quot; argmentos en liña de comandos). Permiten facer conversión entre números en base 10 a ouras bases. Por exemplo:&lt;br /&gt;
  double d4 = Double.parseDouble(&amp;quot;3.14&amp;quot;); // convirte un String a un double&lt;br /&gt;
  System.out.println(&amp;quot;d4 = &amp;quot; + d4);       // o resultado é &amp;quot;d4 = 3.14&amp;quot;&lt;br /&gt;
  //Outro exemplo&lt;br /&gt;
  long L2 = Long.parseLong(&amp;quot;101010&amp;quot;, 2); // String en binario (número 42) a long&lt;br /&gt;
  System.out.println(&amp;quot;L2 = &amp;quot; + L2);      // o resultado é &amp;quot;L2 = 42&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Os métodos &amp;#039;&amp;#039;&amp;#039;valueOf()&amp;#039;&amp;#039;&amp;#039;. Teñen un String como argumento e devolven un obxecto. Por exemplo:&lt;br /&gt;
 Double d5 = Double.valueOf(&amp;quot;3.14&amp;quot;);        &lt;br /&gt;
 System.out.println(d5 instanceof Double ); // O resultado é true&lt;br /&gt;
===As clases PrintStream e DecimalFormat===&lt;br /&gt;
Xa coñecemos os métodos &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;println&amp;lt;/code&amp;gt; que serven para imprimir cadeas pola saída estándar (pantalla) mediante &amp;lt;code&amp;gt;System.out&amp;lt;/code&amp;gt;. Os números poden converterse a cadeas, polo tanto, podemos usar &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;println&amp;lt;/code&amp;gt; tamén para imprimir números. Con todo, Java proporciona métodos adicionais que se atopan na clase PrintStream que permiten a impresión de números con formato dando ao programador maior control sobre o formato de saída cando se traballa con números.&lt;br /&gt;
&lt;br /&gt;
Por outra parte, a clase [http://java.sun.com/javase/6/docs/api/java/text/DecimalFormat.html &amp;lt;code&amp;gt;DecimalFormat&amp;lt;/code&amp;gt;] permite formatar números decimais. Non a veremos pero poden consultarse os seus detalles na ligazón anterior.&lt;br /&gt;
====Os métodos printf e format====&lt;br /&gt;
A clase &amp;lt;code&amp;gt;PrintStream&amp;lt;/code&amp;gt; do paquete &amp;lt;code&amp;gt;java.io&amp;lt;/code&amp;gt; inclúe os métodos &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;format&amp;lt;/code&amp;gt; que se poden usar no canto de &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;println&amp;lt;/code&amp;gt;. En Java, System.out é unha instancia da clase PrintStream, polo que se pode usar &amp;lt;code&amp;gt;format&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt; en calquera sitio onde anteriormente se usara &amp;lt;code&amp;gt;print&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;println&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A sintaxe é a mesma para ambos os dous métodos, &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;format&amp;lt;/code&amp;gt;:&lt;br /&gt;
    public PrintStream format(String &amp;#039;&amp;#039;&amp;#039;formato&amp;#039;&amp;#039;&amp;#039;, Object... &amp;#039;&amp;#039;&amp;#039;args&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
Onde formato é unha cadea e args é unha lista de variables a imprimir. Por exemplo:&lt;br /&gt;
    System.out.format(&amp;quot;Variable float: %f, variable enteira: %d, cadea: %s&amp;quot;, varFloat, varInt, varString);&lt;br /&gt;
&lt;br /&gt;
O primeiro parámetro, chamado formato, é o que se coñece como unha &amp;#039;&amp;#039;&amp;#039;cadea de formato&amp;#039;&amp;#039;&amp;#039; que contén texto plano e &amp;#039;&amp;#039;&amp;#039;especificadores de formato&amp;#039;&amp;#039;&amp;#039;. Os especificadores de formato son caracteres especiais que formatan as variables declaradas en Object... args. (Á notación Object... args chámaselle &amp;#039;&amp;#039;&amp;#039;varargs&amp;#039;&amp;#039;&amp;#039;, que significa que o números de argumentos é variable.)&lt;br /&gt;
&lt;br /&gt;
Os especificadores de formato comezan co carácter de porcentaxe (%). O &amp;#039;&amp;#039;&amp;#039;conversor&amp;#039;&amp;#039;&amp;#039; é un carácter que indica o tipo do argumento a ser formatado. Entre o carácter de porcentaxe (%) e o conversor pode haber opcións e especificadores adicionais. Existen moitos conversores e están documentados en  [http://java.sun.com/javase/6/docs/api/java/util/Formatter.html &amp;lt;code&amp;gt;java.util.Formatter&amp;lt;/code&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Por exemplo:&lt;br /&gt;
    int i = 461012;&lt;br /&gt;
    System.out.format(&amp;quot;O valor de i e: %d%n&amp;quot;, i);&lt;br /&gt;
&lt;br /&gt;
O especificador de formato %d indica que a variable que se vai imprimir é un enteiro. O especificador %n é un carácter de nova liña independente da plataforma. A saída é:&lt;br /&gt;
    O valor de i e: 461012&lt;br /&gt;
Os métodos &amp;lt;code&amp;gt;printf&amp;lt;/code&amp;gt; e &amp;lt;code&amp;gt;format&amp;lt;/code&amp;gt; están sobrecargados. Cada un deles ten unha versión coa seguinte sintaxe:&lt;br /&gt;
    public PrintStream format(Locale l, String formato, Object... args)&lt;br /&gt;
&lt;br /&gt;
Para imprimir números no sistema español ou francés (onde se usa unha coma en lugar dun punto para representar a parte decimal dos números en coma flotante) úsase, por exemplo, o seguinte:&lt;br /&gt;
&lt;br /&gt;
 import java.util.*;&lt;br /&gt;
 public class Formato2 {&lt;br /&gt;
  public static void main (String arg[]) {&lt;br /&gt;
    float i = 3.1416F;&lt;br /&gt;
    System.out.format(&amp;#039;&amp;#039;&amp;#039;Locale.FRANCE&amp;#039;&amp;#039;&amp;#039;, &amp;quot;O valor de i e:%f%n&amp;quot;, i);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===A clase Math===&lt;br /&gt;
Xa vimos os operadores aritméticos esenciais que se poden usar en Java: +, -, *, /, e %. A clase [http://java.sun.com/javase/6/docs/api/java/lang/Math.html &amp;lt;code&amp;gt;Math&amp;lt;/code&amp;gt;] que se atopa no paquete &amp;lt;code&amp;gt;java.lang&amp;lt;/code&amp;gt; porporciona métodos e constantes para realizar operacións matemáticas máis complexas. Estes métodos son static, polo que poden chamarse directamente co nome da clase. Por exemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
Math.cos(angulo);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Asemade, a clase Math é una clase final, polo que non se pode derivar dela.&lt;br /&gt;
====Constantes====&lt;br /&gt;
Temos dúas constantes na clase Math:&lt;br /&gt;
* Math.E, que é o [http://es.wikipedia.org/wiki/N%C3%BAmero_e número E], base dos logaritmos naturais&lt;br /&gt;
* Math.PI, que é o [http://es.wikipedia.org/wiki/N%C3%BAmero_%CF%80 número PI]&lt;br /&gt;
&lt;br /&gt;
====Métodos básicos====&lt;br /&gt;
A clase Math inclúe máis de 40 métodos. Os máis importantes explícanse a continuación.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;abs()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Este método devolve o valor abosluto do argumento. Por exemplo:&lt;br /&gt;
    x = Math.abs(99);           // saída  99&lt;br /&gt;
    x = Math.abs(-99)           // saída 99&lt;br /&gt;
O método está sobrecargado para funcionar con argumentos de tipo int, long, float, ou double. A súa &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; é a seguinte:&lt;br /&gt;
    public  static    int abs(int a)&lt;br /&gt;
    public  static    long abs(long a)&lt;br /&gt;
    public  static    float abs(float a)&lt;br /&gt;
    public  static    double abs(double a)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ceil()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Este método devolve un double que é o valor enteiro maior ou igual ao valor do argumento                                                                         . As seguintes chamadas a Math.ceil() devolven o valor de tipo double 9.0:&lt;br /&gt;
   Math.ceil(9.0)          // devolve 9.0&lt;br /&gt;
   Math.ceil(8.8)          // devolve 9.0&lt;br /&gt;
   Math.ceil(8.02)         // devolve 9.0!&lt;br /&gt;
&lt;br /&gt;
Para os números negativos é igual. Só hai que recordar que –9 é maior que –10. As seguintes chamadas ao método Math.ceil() devolven o valor double -9.0:&lt;br /&gt;
   Math.ceil(-9.0)         // devolve –9.0&lt;br /&gt;
   Math.ceil(-9.4)         // devolve –9.0&lt;br /&gt;
   Math.ceil(-9.8)         // devolve –9.0&lt;br /&gt;
O método ceil() non está sobrecargado e a súa &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; é a seguinte:&lt;br /&gt;
   public static double ceil(double a)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;floor()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
É a antítese do método anterior. Polo tanto devolve un double que é o enteiro menor ou igual ao valor do argumento. As seguintes chamadas a Math.floor() devolven o valor double 9.0:&lt;br /&gt;
   Math.floor(9.0)            // devolve 9.0&lt;br /&gt;
   Math.floor(9.4)            // devolve 9.0&lt;br /&gt;
   Math.floor(9.8)            // devolve 9.0&lt;br /&gt;
Igual que antes, hai que ter en conta que -9 é menor que -8:&lt;br /&gt;
   Math.floor(-9.0)           // devolve –9.0&lt;br /&gt;
   Math.floor(-8.8)           // devolve –9.0&lt;br /&gt;
   Math.floor(-8.1)           // devolve –9.0&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; de floor() é a seguinte:&lt;br /&gt;
   public static double floor(double a)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;max()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
O método max() devolve o maior dos seus dous argumentos. Por exemplo:&lt;br /&gt;
   x = Math.max(1024, -5000);            //    devolve 1024.&lt;br /&gt;
Este método está sobrecargado para traballar con argumentos de tipo int, long, float, ou double. Se os dous parámetros son iguais, max() o valor igual aos dous argumentos.&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; de max() é a seguinte:&lt;br /&gt;
   public  static    int max(int a, int b)&lt;br /&gt;
   public  static    long max(long a, long b)&lt;br /&gt;
   public  static    float max(float a, float b)&lt;br /&gt;
   public  static    double max(double a, double b)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;min()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
O método min() é a antítese de max(). Devolve, polo tanto, o valor menor dos dous argumentos. Por exemplo:&lt;br /&gt;
    x = Math.min(0.5, 0.0);           //   devolve        0.0&lt;br /&gt;
Este método está sobrecargado para poder traballar con argumentos de tipo int, long, float, ou double.&lt;br /&gt;
A súa &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; é a seguinte:&lt;br /&gt;
   public  static    int min(int a, int b)&lt;br /&gt;
   public  static    long min(long a, long b)&lt;br /&gt;
   public  static    float min(float a, float b)&lt;br /&gt;
   public  static    double min(double a, double b)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;round()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
O método round() devolve o enteiro máis cercano ao argumento. O algoritmo que utiliza round() é sumar 0.5 ao argumento e truncar ao enteiro equivalente. Este método está sobrecargado para traballar con argumentos float ou double. Por exemplo:&lt;br /&gt;
 Math.round(-10.5);         // devolve –10&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; de round() é a seguinte:&lt;br /&gt;
 public static int round(float a)&lt;br /&gt;
 public static long round(double a)&lt;br /&gt;
&lt;br /&gt;
====Métodos logarítmicos e exponenciais====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;sqrt()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Devolve a raíz cadrada dun double. Por exemplo:&lt;br /&gt;
  Math.sqrt(9.0) // devolve 3.0&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; do método é a seguinte:&lt;br /&gt;
    public static double sqrt(double a)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;pow()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Devolve o valor do primeiro argumento elevado ao segundo argumento. A &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; do método é a seguinte:&lt;br /&gt;
 double pow(double base, double exponente)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;log()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Devolve o logaritmo natural do argumento. A súa &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; é a seguinte:&lt;br /&gt;
 double log(double d)&lt;br /&gt;
&lt;br /&gt;
====Métodos trigonométricos====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;sin()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Devolve o seno dun ángulo. O argumento é un double representando un ángulo en radiáns. Os grados poden converterse a radiáns usando &amp;#039;&amp;#039;&amp;#039;Math.toRadians()&amp;#039;&amp;#039;&amp;#039;. Analogamente existe o método &amp;#039;&amp;#039;&amp;#039;Math.toDegrees()&amp;#039;&amp;#039;&amp;#039; Por exemplo:&lt;br /&gt;
   Math.sin(Math.toRadians(90.0)) //           devolve 1.0&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; de sin() é a seguinte:&lt;br /&gt;
public static double sin(double a)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;cos()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Devolve o coseno dun ángulo. O argumento é un double representando un ángulo en radiáns. Por exemplo:&lt;br /&gt;
   Math.cos(Math.toRadians(0.0)) // devolve 1.0&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; de cos() é a seguinte:&lt;br /&gt;
   public static double cos(double a)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;tan()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Devolve a tanxente dun ángulo. O argumento é un double representando un ángulo en radiáns. Por exemplo:&lt;br /&gt;
   Math.tan(Math.toRadians(45.0))          // devolve 1.0&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; de tan() é a seguinte:&lt;br /&gt;
   public static double tan(double a)&lt;br /&gt;
&lt;br /&gt;
====Números aleatorios====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;random()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
O método random() devolve un double aleatorio maior ou igual a 0.0 e menor que 1.0. Este método non ten parámetros:&lt;br /&gt;
 public class RandomTest {&lt;br /&gt;
  public static void main(String [] args) {&lt;br /&gt;
    for (int x=0; x &amp;lt; 15; x++)&lt;br /&gt;
      System.out.print( (int)(Math.random()*10) + &amp;quot; &amp;quot; );&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;sinatura&amp;#039;&amp;#039;&amp;#039; do método random() é a seguinte:&lt;br /&gt;
 public static double random( )&lt;br /&gt;
&lt;br /&gt;
==Caracteres==&lt;br /&gt;
Cando queremos usar un carácter nun programa normalmente empregamos o tipo primitivo char. Por exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    char ch = &amp;#039;a&amp;#039;; &lt;br /&gt;
    char uniChar = &amp;#039;\u039A&amp;#039;; // Código Unicode para el carácter griego omega&lt;br /&gt;
    char[] charArray ={ &amp;#039;a&amp;#039;, &amp;#039;b&amp;#039;, &amp;#039;c&amp;#039;, &amp;#039;d&amp;#039;, &amp;#039;e&amp;#039; }; // un array de caracteres&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Java proporciona unha clase que envolve (wrap) o tipo char nun obxecto de tipo Character, tal e como acontecía coa clase Number. Un obxecto de tipo Character ten un único atributo de tipo char. A clase [http://java.sun.com/javase/6/docs/api/java/lang/Character.html Character] proporciona unha serie de métodos útiles para manipular caracteres.&lt;br /&gt;
&lt;br /&gt;
Para crear un obxecto de tipo Character podemos instancialo usando o constructor, como se fose outro obxecto calquera:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Character ch = new Character(&amp;#039;a&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Se usamos unha variable de tipo char en lugar dun obxecto da clase Character, e viceversa, o compilador, nalgunhas situacións fará a &amp;quot;conversión&amp;quot; por nós, automaticamente. Ao primeiro chámaselle &amp;#039;&amp;#039;&amp;#039;autoboxing&amp;#039;&amp;#039;&amp;#039; e ao segundo &amp;#039;&amp;#039;&amp;#039;unboxing&amp;#039;&amp;#039;&amp;#039; (que se podería traducir por autoempaquetado e desempaquetado). Vexámolo no seguinte exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Character ch = &amp;#039;a&amp;#039;; // o tipo primitivo &amp;#039;a&amp;#039; autoempaquétase no obxecto ch de tipo Character &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A seguinte táboa lista algúns dos métodos útiles desta clase. Non é exhaustiva. Podes consultar a lista completa (máis de 50) en [http://java.sun.com/javase/6/docs/api/java/lang/Character.html java.lang.Character].&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Método&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Descrición &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;boolean isLetter(char ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;boolean isDigit(char ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Determina se o parámetro é unha letra ou un díxito.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;boolean isWhiteSpace(char ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Determina se o parámetro e un espazo en branco.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;boolean isUpperCase(char ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;boolean isLowerCase(char ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Determina se o carácter é maiúscula ou minúscula. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;char toUpperCase(char ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;char toLowerCase(char ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve o carácer en maiúsuclas ou minúculas respectivamente. &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;toString(char ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve un obxecto de tipo String a partir do carácter, é dicir, unha cadea formada por un só carácter. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
===Secuencias de escape===&lt;br /&gt;
Un carácter precedido por un &amp;#039;&amp;#039;backslash&amp;#039;&amp;#039; (\) é unha secuencia de escape é ten un significado especial para o compilador. Por exemplo, o carácter (\n) indica unha nova liña cando imprimimos con &amp;lt;code&amp;gt;System.out.println()&amp;lt;/code&amp;gt;. A seguinte táboa mostra as secuencias de escape en Java:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Secuencia de escape&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Descrición &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\t&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Tabulación do texto.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\b&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Backspace (tecla de retroceso)&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\n&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Nova liña.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\r&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Retorno de carro (enter).&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\f&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Nova liña e tabulación.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Imprime as comiñas&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;\\&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  Imprime o carácter \&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Por exemplo, se queremos imprimir a cadea:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Díxome &amp;quot;hola!&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Habería que escribir:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
System.out.println(&amp;quot;Díxome \&amp;quot;hola!\&amp;quot;.&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cadeas==&lt;br /&gt;
As cadeas de caracteres están representadas pola clase [http://java.sun.com/javase/6/docs/api/java/lang/String.html String]. Unha cadea de caracteres en Java é un obxecto.&lt;br /&gt;
===Creación de cadeas===&lt;br /&gt;
O xeito máis rápido de crear unha cadea en Java é o seguinte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String saudo = &amp;quot;Ola!&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Como unha cadea é un obxecto tamén podemos usar o palabra reservada new e un construtor para crear unha cadea. Hai 11 construtores que permiten crear cadeas. Por exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    char[] arrayOla = { &amp;#039;o&amp;#039;, &amp;#039;l&amp;#039;, &amp;#039;a&amp;#039;, &amp;#039;.&amp;#039;};&lt;br /&gt;
    String cadeaOla = new String(arrayOla);&lt;br /&gt;
    System.out.println(arrayOla);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
As cadeas son &amp;#039;&amp;#039;&amp;#039;inmutables&amp;#039;&amp;#039;&amp;#039;, polo que unha vez creadas non se poden modificar. O que os métodos da clase String fan sobre un obxecto de tipo cadea é crear e devolver unha nova cadea que contén o resultado da operación.&lt;br /&gt;
===Lonxitude dunha cadea===&lt;br /&gt;
Os métodos que se usan para acceder aos atributos dunha clase chámanse métodos accesores. Un método accesor da clase String para devolver o tamaño dunha cadea é length() (ollo, non confundir co atributo length dos arrays).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String palindromo = &amp;quot;Radar&amp;quot;;&lt;br /&gt;
int len = palindromo.length();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Un palíndromo é unha palabra simétrica, é dicir, que se deletrea igual cara adiante ou cara atrás, ignorando as maiúsculas e a puntuación. O seguinte programa dálle a volta a un palíndromo. Invoca ao método charAt(i), que devolve o carácter na posición i da cadea, empezando a contar en 0.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    public class StringDemo {&lt;br /&gt;
        public static void main(String[] args) {&lt;br /&gt;
            String palindromo = &amp;quot;Radar&amp;quot;;&lt;br /&gt;
            int len = palindromo.length();&lt;br /&gt;
            char[] tempCharArray = new char[len];&lt;br /&gt;
            char[] charArray = new char[len];&lt;br /&gt;
            &lt;br /&gt;
            // Mete a cadea nun array de caracteres&lt;br /&gt;
            for (int i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
                tempCharArray[i] = palindromo.charAt(i);&lt;br /&gt;
            } &lt;br /&gt;
            &lt;br /&gt;
            // Invirte o array&lt;br /&gt;
            for (int j = 0; j &amp;lt; len; j++) {&lt;br /&gt;
                charArray[j] = tempCharArray[len - 1 - j];&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            String reversePalindromo =  new String(charArray);&lt;br /&gt;
            System.out.println(reversePalindromo);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A saída do programa será:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
radaR&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Concatenación de cadeas===&lt;br /&gt;
Podemos usar o método concat para concatenar dúas cadeas:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
string1.concat(string2);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Isto devolve &amp;#039;&amp;#039;&amp;#039;unha nova cadea&amp;#039;&amp;#039;&amp;#039; formada pola concatenación de string1 e string2. O método concat tamén se pode usar do seguinte xeito:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;Meu nome é &amp;quot;.concat(&amp;quot;Rumplestiltskin&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tamén se pode usar o operador +:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;Ola,&amp;quot; + &amp;quot; meu&amp;quot; + &amp;quot;!&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A saída será:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;quot;Ola, meu!&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Pódense concatenar obxectos de distinto tipo. Para cada un deles chamarase implícitamente ao método toString() para convertilo nunha cadea.&lt;br /&gt;
&lt;br /&gt;
En Java, un ficheiro de código fonte non pode ter sentenzas de máis dunha liña, polo que se usa o operador +, como vemos no seguinte exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        String quote = &amp;quot;Isto é unha cade de exemplo &amp;quot; +&lt;br /&gt;
                &amp;quot;para o curso de Java.&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===Conversión entre números e cadeas===&lt;br /&gt;
====De cadeas a números====&lt;br /&gt;
As subclases da clase Number teñen un método &amp;#039;&amp;#039;&amp;#039;valueOf&amp;#039;&amp;#039;&amp;#039; que converte unha cadea a un número. Por exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    public class ValueOfDemo {&lt;br /&gt;
        public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
    	    // require dous argumentos por liña de comandos&lt;br /&gt;
            if (args.length == 2) {&lt;br /&gt;
    			//converte cadeas a números&lt;br /&gt;
                float a = (Float.valueOf(args[0]) ).floatValue();  &lt;br /&gt;
                float b = (Float.valueOf(args[1]) ).floatValue();&lt;br /&gt;
&lt;br /&gt;
                //fai algunhas operacións&lt;br /&gt;
                System.out.println(&amp;quot;a + b = &amp;quot; + (a + b) );&lt;br /&gt;
                System.out.println(&amp;quot;a - b = &amp;quot; + (a - b) );&lt;br /&gt;
                System.out.println(&amp;quot;a * b = &amp;quot; + (a * b) );&lt;br /&gt;
                System.out.println(&amp;quot;a / b = &amp;quot; + (a / b) );&lt;br /&gt;
                System.out.println(&amp;quot;a % b = &amp;quot; + (a % b) );&lt;br /&gt;
            } else {&lt;br /&gt;
               System.out.println(&amp;quot;Este programa require dous argumentos por liña de comandos.&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A saída do programa anterior se lle pasamos os valores 4.5 and 87.2 será a seguinte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    a + b = 91.7&lt;br /&gt;
    a - b = -82.7&lt;br /&gt;
    a * b = 392.4&lt;br /&gt;
    a / b = 0.0516055&lt;br /&gt;
    a % b = 4.5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
O método valueOf é similar ao método parseXxx. Para chamar por este método escribiríamos o seguinte:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
float a = Float.parseFloat(args[0]);&lt;br /&gt;
float b = Float.parseFloat(args[1]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====De números a cadeas====&lt;br /&gt;
A conversión de números a cadeas faise co método &amp;#039;&amp;#039;&amp;#039;toString()&amp;#039;&amp;#039;&amp;#039; que existe en todas as subclases de Number:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int i;&lt;br /&gt;
double d;&lt;br /&gt;
String s3 = Integer.toString(i); &lt;br /&gt;
String s4 = Double.toString(d); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
O seguinte exemplo usa o método toString para converter un número a unha cadea. O programa usa algúns métodos para calcular o número de díxitos antes e despois do punto decimal:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    public class ToStringDemo {&lt;br /&gt;
        &lt;br /&gt;
        public static void main(String[] args) {&lt;br /&gt;
            double d = 858.48;&lt;br /&gt;
            String s = Double.toString(d);&lt;br /&gt;
            &lt;br /&gt;
            int punto = s.indexOf(&amp;#039;.&amp;#039;);&lt;br /&gt;
            &lt;br /&gt;
            System.out.println(punto + &amp;quot; díxitos antes do punto decimal.&amp;quot;);&lt;br /&gt;
            System.out.println( (s.length() - punto - 1) + &lt;br /&gt;
    		&amp;quot; díxitos despois do punto decimal.&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A saída do programa é:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    3 díxitos antes do punto decimal.&lt;br /&gt;
    2 díxitos despois do punto decimal.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Outro xeito de converter números en cadeas e usando o operador +, que está sobrecargado. Neste caso é o compilador o encargado de facer a conversión por nós:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int i;&lt;br /&gt;
String s1 = &amp;quot;&amp;quot; + i; //Concatena &amp;quot;i&amp;quot; cunha cadea baleira&lt;br /&gt;
                    // a conversión é automática&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Manipulación de caracteres nun String===&lt;br /&gt;
A clase String facilítanos o traballo cos caracteres da cadea a través de diversos métodos.&lt;br /&gt;
====Obtención de caracteres e substrings mediante o índice====&lt;br /&gt;
O métodos &amp;#039;&amp;#039;&amp;#039;charAt()&amp;#039;&amp;#039;&amp;#039; devolve o carácter da cadea na posición correspondente. Hai que ter en conta que &amp;#039;&amp;#039;&amp;#039;o primeiro carácter empeza no índice 0&amp;#039;&amp;#039;&amp;#039;, mentres que o último é length()-1. Por exemplo, o seguinte código devolve o carácter no índice 9:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    String outroPalindromo = &amp;quot;A torre da derrota&amp;quot;; &lt;br /&gt;
    char unCaracter= outroPalindromo.charAt(9);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Na seguinte figura o carácter no índice 9 sería O:&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Array_exemplo.gif]]&amp;lt;/center&amp;gt;&lt;br /&gt;
Pódese usar o método &amp;#039;&amp;#039;&amp;#039;substring&amp;#039;&amp;#039;&amp;#039; se o que se quere é obter máis dun carácter consecutivo dunha cadea. Este método ten dúas versións, tal e como se amosa na seguinte táboa:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Método&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Descrición &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;String substring(int inicio, int fin)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve unha nova cadea que é unha subcadea da orixinal. O primeiro enteiro especifica o índice do primeiro carácter. O segundo argumento é o índice do último carácter + 1.&lt;br /&gt;
|-&lt;br /&gt;
|  &amp;lt;code&amp;gt;String substring(int inicio)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve unha nova cadea que é unha subcadea da orixinal. O argumento especifica o índice do primeiro carácter. A subcadea que se devolve vai dende ese índice até o final.&lt;br /&gt;
|}&lt;br /&gt;
O seguinte código obtén a subcadea que vai dende o carácter 2 até o 7, sen incluír, é dicir, a palabra &amp;quot;torre&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
String s1 = &amp;quot;A torre da derrota&amp;quot;; &lt;br /&gt;
String s2 = s1.substring(2, 7);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Curiosamente, o método substring non segue a convención de Java para nomear aos métodos, xa que debería chamarse subString!&lt;br /&gt;
&lt;br /&gt;
====Outros métodos de manipulación de cadeas====&lt;br /&gt;
Amósanse a continuación outros métodos importantes da clase String:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Método&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Descrición &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;String trim()&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve unha cadea sen espazos ao comezo e ao final&lt;br /&gt;
|-&lt;br /&gt;
|  &amp;lt;code&amp;gt;String toLowerCase()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;String toUpperCase()&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolven unha cadea toda en minúsculas ou en maiúsculas respectivamente.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Busca de caracteres e subcadeas====&lt;br /&gt;
A seguinte táboa ten métodos para realizar a busca de caracteres e sucadeas nun String:&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Método&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Descrición &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int indexOf(int ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;int lastIndexOf(int ch)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve o índice da primeira (última) ocurrencia do carácter especificado.  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int indexOf(String str)&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;int lastIndexOf(String str)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve o índice da primeira (última) ocurrencia do substring especificado. &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;boolean contains(CharSequence s)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve true se a cadea contén a secuencia de caracteres especificada.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Substitución de caracteres e subcadeas====&lt;br /&gt;
A clase String ten varios métodos para a substituión de caracteres e cadeas. O máis usual é o método replace&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Método&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Descrición &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;String replace(char charAntigo, char charNovo)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve unha nova cadea resultado de substituír todas as ocurrencias de &amp;lt;code&amp;gt;charAntigo&amp;lt;/code&amp;gt; por &amp;lt;code&amp;gt;charNovo&amp;lt;/code&amp;gt;.  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;String replaceAll(String cadeaAntiga, String cadeaNova)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Devolve unha nova cadea resultado de substituír todas as ocurrencias de da expresión regular &amp;lt;code&amp;gt;cadeaAntiga&amp;lt;/code&amp;gt; pola cadea &amp;lt;code&amp;gt;cadeaNova&amp;lt;/code&amp;gt;.  &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Comparación de cadeas===&lt;br /&gt;
A seguinte táboa amosa algúns dos métodos máis importantes da clase String para a comparación de cadeas e subcadeas (para unha lista exhaustiva, consulta a API de Java):&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Método&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; |  Descrición &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;boolean endsWith(String sufixo)&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;boolean startsWith(String prefixo)&amp;lt;/source&amp;gt;&lt;br /&gt;
| Devolve true se a cadea finaliza con ou empeza co substring especificado como argumento.  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;int compareTo(String outraCadea)&amp;lt;/source&amp;gt;&lt;br /&gt;
| Compara dúas cadeas lexigograficamente. Devolve un enteiro inidacando se o string que chama polo método é maior que (resultado é &amp;gt; 0), igual (&amp;#039;&amp;#039;&amp;#039;resultado é = 0&amp;#039;&amp;#039;&amp;#039;), ou menor que (resultado é &amp;lt; 0) o argumento.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;int compareToIgnoreCase(String str)&amp;lt;/source&amp;gt;&lt;br /&gt;
| Igual que o anterior pero ignora a diferenza entre maiúsculas e minúsculas.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;boolean regionMatches(int inicioRexion, String str, &lt;br /&gt;
int inicioRexionStr, int lonxitude)&amp;lt;/source&amp;gt;&lt;br /&gt;
| Comproba se unha parte especificada dun string é igual que outra parte especificada para o string do argumento.&lt;br /&gt;
A parte especificada (rexión) ten unha &amp;lt;code&amp;gt;lonxitude&amp;lt;/code&amp;gt; e para a cadea que chama polo método comeza no índice &amp;lt;code&amp;gt;inicioRexion&amp;lt;/code&amp;gt; e no índice iniciosRexionStr para o string que se pasa como argumento (str). &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;boolean regionMatches(boolean ignoreCase, int toffset, &lt;br /&gt;
String other, int ooffset, int len)&amp;lt;/source&amp;gt;&lt;br /&gt;
| Igual que o método anterior pero sen distinguir entre maiúsculas e minúsculas. &lt;br /&gt;
|}&lt;br /&gt;
O seguinte programa amosa o uso do método regionMatches:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
public class RegionMatchesDemo {&lt;br /&gt;
	public static void main(String[] args) {&lt;br /&gt;
		String cadea = &amp;quot;Queixo con marmelo&amp;quot;;&lt;br /&gt;
		String cadeaBuscada = &amp;quot;marmelo&amp;quot;;&lt;br /&gt;
		int lonCadea = cadea.length();&lt;br /&gt;
		int lonCadeaBuscada = cadeaBuscada.length();&lt;br /&gt;
		boolean atopado = false;&lt;br /&gt;
		for (int i = 0; i &amp;lt;= (lonCadea - lonCadeaBuscada); i++) {&lt;br /&gt;
		   if (cadea.regionMatches(i, cadeaBuscada, 0, lonCadeaBuscada)) {&lt;br /&gt;
		      atopado = true;&lt;br /&gt;
		      System.out.println(cadea.substring(i, i + lonCadeaBuscada));&lt;br /&gt;
		      break;	&lt;br /&gt;
		   }&lt;br /&gt;
		}&lt;br /&gt;
		if (!atopado) System.out.println(&amp;quot;Non se atopou.&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A saída do programa é:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
marmelo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===A clase StringBuilder===&lt;br /&gt;
Os obxectos de tipo [http://java.sun.com/javase/6/docs/api/java/lang/StringBuilder.html &amp;lt;code lang=&amp;quot;Java&amp;quot;&amp;gt;StringBuilder&amp;lt;/code&amp;gt;] son como os obxectos de tipo &amp;lt;code&amp;gt;String&amp;lt;/code&amp;gt; pero poden modificarse (recorda que os obxectos de tipo String son inmutables). Con &amp;lt;code lang=&amp;quot;Java&amp;quot;&amp;gt;StringBuilder&amp;lt;/code&amp;gt; en calquera momento a lonxitude e contido da cadea pode cambiarse a través da chamada aos métodos correspondentes.&lt;br /&gt;
&lt;br /&gt;
Sun recomenda usar sempre a clase String a menos que o uso de StringBuilder supoña unha vantaxe en termos de simplificación de código ou mellor rendemento.&lt;br /&gt;
&lt;br /&gt;
Ademais do método length() que tamén ten a clase String, StringBuilder ten un método capacity() que devolve o número de caracteres que foron asignados a unha cadea. Esta capacidade normalmente se asigna nos construtores. Hai catro construtres para StringBuilder que podes consultar na API e que permiten crear cadeas con distintas capacidades. Un exemplo de uso desta clase é o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Java&amp;quot;&amp;gt;&lt;br /&gt;
StringBuilder sb = new StringBuilder(); // crea unha cadea de capacidade 16&lt;br /&gt;
sb.append(&amp;quot;Greetings&amp;quot;);  // engade 9 character á cadea inicialmente baleira&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Que creará unha cadea de lonxitude 9 e capacidade 16, tal e como se ve na seguinte figura:&lt;br /&gt;
[[Image:Objects-stringBuffer.gif |center]]&lt;br /&gt;
Os principais métodos da clase StringBuilder que non están dispoñibles para a clase String son append() e insert(), que están sobrecargados para aceptar datos de calquera tipo. Os argumentos son, polo tanto, convertidos a cadeas e engadidos our insertados na cadea correspondente. O método append sempre engade ao final, mentres que insert pode engadir nun punto específico da cadea (consulta a API para ver os detalles destes métodos).&lt;/div&gt;</summary>
		<author><name>Arribi</name></author>
	</entry>
</feed>