⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java4.htm

📁 E-books about Java Programing in Spanish
💻 HTM
字号:
<HTML>
<HEAD>
<TITLE>Java desde Cero</TITLE>

<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.0z">
</HEAD>
<BODY background=/iconos/1.gif  TEXT=000000 LINK=FF0000 VLINK=A62A2A>
<H1>El cuerpo de los m&eacute;todos<BR>
</H1>
<P>
Otra vez recordaremos nuestra vieja clase Contador:<BR>
<PRE WIDTH=132>
<FONT SIZE=2>// Implementaci&oacute;n de un contador sencillo
public class Contador {
&#133;&#133;&#133;&#133;&#133;&#133;..
public int incCuenta() {
cnt++;
return cnt;
}
&#133;&#133;&#133;&#133;&#133;&#133;&#133;
}
</FONT>
</PRE>
Dentro de los m&eacute;todos pueden incluirse:
<UL>
<LI>Declaraci&oacute;n de variables locales
<LI>Asignaciones a variables
<LI>Operaciones matem&aacute;ticas
<LI>Llamados a otros m&eacute;todos:
<UL>
<LI>dentro de la clase
<LI><I>de instancia</I>, de otras clases
<LI><I>de clase</I>, de cualquier clase
</UL>
<LI>Estructuras de control
<LI>Excepciones (try, catch, que veremos m&aacute;s adelante)
</UL>
<P>
<H2>Declaraci&oacute;n de variables locales</H2>
<P>
Las variables locales se declaran igual que los atributos de la
clase:<BR>
<P>
Tipo NombreVariable [= Valor];
<P>
Ej: int  suma;
<P>
 float  precio;
<P>
 Contador laCuenta;<BR>
<P>
S&oacute;lo que aqu&iacute; no se declaran private, public, etc.,
sino que las variables definidas dentro del m&eacute;todo s&oacute;lo
son accesibles por &eacute;l.
<P>
Las variables pueden inicializarse al crearse:
<P>
Ej: int  suma = 0;
<P>
 float  precio = 12.3;
<P>
 Contador laCuenta = new Contador ( );<BR>
<H2>Asignaciones a variables</H2>
<P>
Se asigna un valor a una variable mediante el signo <B>=</B>:
<P>
 Variable = Constante | Expresi&oacute;n ;
<P>
Ej: suma = suma + 1;
<P>
 precio = 1.05 * precio;
<P>
 laCuenta.cnt = 0;<BR>
<P>
El &uacute;ltimo caso es v&aacute;lido si cnt es una variable
p&uacute;blica de la clase <B>Contador</B>. Personalmente no creo
conveniente acceder directamente a variables de otro objeto, ya
que futuras modificaciones del objeto llamado o del que llama
puede propender la difusi&oacute;n de errores&#133; Es mejor usar
m&eacute;todos como <I>getCuenta</I> o un hipot&eacute;tico <I>inicializarContador</I>
para ello. De hecho, algunos sugieren que todas las variables
de una clase se declaren como <B>private</B>.
<P>
En el primer caso, o sea en general:
<P>
 Variable = Variable Operador Expresi&oacute;n;
<P>
se puede escribir en forma m&aacute;s sencilla:
<P>
 Variable Operador= Expresi&oacute;n;
<P>
Por ejemplo, suma = suma + 9 - cantidad;
<P>
puede escribirse: suma += 9-cantidad;
<P>
y  precio = precio * 0.97;
<P>
como:  precio *= 0.97;<BR>
<H2>Operaciones matem&aacute;ticas</H2>
<P>
Hay varios tipos de operadores:
<P>
Unarios:  + - ++ -- ~ ! (tipo)   &#133;..etc.
<P>
Se colocan antes (o en algunos casos despu&eacute;s) de la constante
o expresi&oacute;n.
<P>
Por ejemplo: -cnt; // cambia de signo; por ejemplo si cnt es 12
el resultado es -12; cnt no cambia.
<P>
  ++cnt; // equivale a cnt += 1;
<P>
  cnt++; // equivale a cnt +=1; veremos la diferencia al hablar
de estructuras de control
<P>
  --cnt;  // equivale a cnt -= 1;
<P>
  cnt--; // equivale a cnt -= 1;
<P>
Binarios: + - * / % &#133;..etc.
<P>
Van entre dos constantes o expresiones o combinaci&oacute;n de
ambas.
<P>
Por ejemplo: cnt + 2;   // debuelve la suma de ambos.
<P>
  promedio + ( valor / 2); // como se ve, se pueden usar par&eacute;ntesis.
<P>
  horas / hombres;  // divisi&oacute;n.
<P>
  acumulado % 3;  // resto de la divisi&oacute;n entera entre
ambos.
<P>
Nota: + sirve tambi&eacute;n para concatenar cadenas de caracteres;
hablaremos de String  y StringBuffer pronto. Cuando se mezclan
Strings y valores num&eacute;ricos, &eacute;stos se convierten
autom&aacute;ticamente a cadenas:
<P>
  &quot;La frase tiene &quot; + cant + &quot; letras&quot;
<P>
se convierte en: &quot;La frase tiene 17 letras&quot;  // suponiendo
que cant = 17
<H3>Precedencia de operadores en Java</H3>
<P>
La siguiente es la precedencia de los operadores en expresiones
compuestas. De todos modos, como en todos los lenguajes, se recomienda
usar par&eacute;ntesis en caso de duda.<BR>
<P>
<FONT FACE="Arial">Posfijos   []  .  (params)  expr++  expr--</FONT>
<P>
<FONT FACE="Arial">Operadores unarios ++expr  --expr  +expr  -expr
 ~  !</FONT>
<P>
<FONT FACE="Arial">Creaci&oacute;n y &quot;cast&quot; new  (type)</FONT>
<P>
<FONT FACE="Arial">Multiplicativos  *  /  %</FONT>
<P>
<FONT FACE="Arial">Aditivos   +  -</FONT>
<P>
<FONT FACE="Arial">Desplazamiento &lt;&lt;  &gt;&gt;  &gt;&gt;&gt;</FONT>
<P>
<FONT FACE="Arial">Relacionales  &lt;  &gt;  &lt;=  &gt;=  instanceof</FONT>
<P>
<FONT FACE="Arial">Igualdad  ==  !=</FONT>
<P>
<FONT FACE="Arial">AND bit a bit  &amp;</FONT>
<P>
<FONT FACE="Arial">OR exclusivo bit a bit ^</FONT>
<P>
<FONT FACE="Arial">OR inclusivo bit a bit |</FONT>
<P>
<FONT FACE="Arial">AND l&oacute;gico  &amp;&amp;</FONT>
<P>
<FONT FACE="Arial">OR l&oacute;gico  ||</FONT>
<P>
<FONT FACE="Arial">Condicional  ?  :</FONT>
<P>
<FONT FACE="Arial">Asignaci&oacute;n  =  +=  -=  *=  /=  %=  ^=
 &amp;=  |=  &lt;&lt;=  &gt;&gt;=  &gt;&gt;&gt;=<BR>
</FONT>
<P>
Algunos ejemplos:
<P>
[] define arreglos: int lista[];
<P>
(params) es la lista de par&aacute;metros cuando se llama a un
m&eacute;todo: convertir(valor, base);
<P>
new permite crear una instancia de un objeto: new Contador();
<P>
(type) cambia el tipo de una expresi&oacute;n a otro: (float)(total
% 10);
<P>
&gt;&gt; desplaza bit a bit un valor binario: base &gt;&gt; 3;
<P>
&lt;= devuelve &quot;true&quot; si un valor es menor o igual que
otro: total &lt;= maximo;
<P>
instanceof devuelve &quot;true&quot; si el objeto es una instancia
de la clase: papa instanceof Comida;
<P>
|| devuelve &quot;true&quot; si cualquiera de las expresiones
es verdad: (a&lt;5) || (a&gt;20)<BR>
<H2>Llamadas a m&eacute;todos</H2>
<P>
Se llama a un m&eacute;todo de la misma clase simplemente con
el nombre del m&eacute;todo y los par&aacute;metros entre par&eacute;ntesis,
como se ve, entre otros, en el ejemplo en negrita:<BR>
<PRE WIDTH=132>
<FONT SIZE=2>	// Archivo:	Complejo.java
	// Compilar con:	javac Complejo.java
	public final class Complejo extends Number {
	// atributos:
		private float x;
		private float y;
	// constructor:
public Complejo(float  rx, float iy) {
	x = rx;
	y = iy;
}
	// m&eacute;todos:
		public float Norma() {
			return (float)Math.sqrt(x*x+y*y);
		}
		// obligatorios (son abstractos en Number):
public double doubleValue() {
<B>	</B>return (double)Norma( );
}
public float floatValue() {
	return <B>Norma()</B>;
}
public int intValue() {
	return (int)Norma();
}
public long longValue() {
	return (long)Norma();
}
public String toString() {
	return &quot;(&quot;+x+&quot;)+i(&quot;+y+&quot;)&quot;;
}
	}<BR>
</FONT>
</PRE>
<P>
Pueden probar la clase (m&iacute;nima) con el siguiente ejemplo
de aplicaci&oacute;n; la l&iacute;nea en negrita es un ejemplo
de un llamado a un m&eacute;todo de un objeto de otra clase. Notar
que es este caso, es necesario llamar al m&eacute;todo sobre un
objeto (instancia) existente, por lo que se indica:
<PRE>
<FONT SIZE=2>	
Nombre_del_Objeto&lt;punto&gt;Nombre_del_M&eacute;todo(par&aacute;metros)

</FONT><FONT SIZE=2 FACE="Arial">// Archivo:  Ejemplo4.java
</FONT><FONT SIZE=2 FACE="Arial">// Compilar con: javac Ejemplo4.java
</FONT><FONT SIZE=2 FACE="Arial">// Ejecutar con: java Ejemplo4
</FONT><FONT SIZE=2 FACE="Arial">import java.io.*;

</FONT><FONT SIZE=2 FACE="Arial">public class Ejemplo4 {
</FONT><FONT SIZE=2 FACE="Arial">public static void main(String args[]) {
</FONT><FONT SIZE=2 FACE="Arial">Complejo numComp = new Complejo(4,-3);
</FONT><FONT SIZE=2 FACE="Arial">System.out.println(<B>numComp.toString()</B>);
</FONT><FONT SIZE=2 FACE="Arial">System.out.println(numComp.Norma());
</FONT><FONT SIZE=2 FACE="Arial">}
</FONT><FONT SIZE=2 FACE="Arial">}
</FONT>
</PRE>
<P>
En la clase Complejo tenemos tambi&eacute;n un ejemplo de un llamado
a un m&eacute;todo <I>de clase</I>, o sea static:
<P>
<FONT FACE="Arial">return (float)<B>Math.sqrt(x*x+y*y)</B>;</FONT>
<P>
Como el m&eacute;todo es de clase, no hace falta llamarlo para
un objeto en particular. En ese caso, en lugar del nombre de un
objeto existente se puede utilizar directamente el nombre de la
clase:
<P>
 Nombre_de_la_Clase&lt;punto&gt;Nombre_del_M&eacute;todo(par&aacute;metros)
<BR>
<P>
En el pr&oacute;ximo cap&iacute;tulo veremos las estructuras de
control y empezaremos a armar ejemplos para repasar todo esto.
<P>
<HR>
Jorge Bourdette
<P>
<A HREF="mailto:jpb@amarillas.com">jpb@amarillas.com</A>
</BODY>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -