Buenos días, hoy comenzaremos con el Capitulo 3, el cual contiene descripción sobre los operadores mas comunes en Java (no los únicos) y el esfuerzo con cadenas de caracteres o String. El asunto de los operadores es bastante largo, asi que lo dividiremos para que no salgan unas accesos tan masivos que nada mas verlo nos desanimemos. Dicho esto podemos iniciar con los operandos de Java. El meta de estas secciones es que dado un algoritmo en pseudocódigo seamos capaces de construir el códigoque correctamente aplica los operadores apropiados, incluyendo los operadores de asignación o assignment operators (limitados a: =,+=,-=), operadores aritméticos o arithmetic operators (limitados a: +,-,*,/,%,++,?), operadores relacionales o relational operators (limitados a: ,,>=,==,!=), operadores lógicos o logical operators (limitados a: !,&&,||), con la finalidad de lograr un fruto productivo. Los operadores de Java son usados para retornar un fruto de una expresión usando uno, dos o tres operandos. Los operandos son aquellos valores que se ponen a la derecha o a la izquierda de los operadores. El Post/Pre-incremento/decremento usan un operando. El operador condicional ternario (?:) usa 3 operandos. Todos los demás operadores usan 2 operandos. Aqui vemos un ejemplo del uso de operandos: Ejemplo 1 Operando goldCoins=goldCoins++; Ejemplo 2 Operandos totalCoins=silverCoins+goldCoins; Ejemplo 3 Operandos int pirateShares=(isCaptain==true)?TEN_SHARES:FIVE_SHARES; Los próximos puntos que iremos viendo sobre los operandos son los próximos: Assignment Operators (Parte I) Arithmetic Operators (Parte I) Relational Operators (Parte II) Logical Operators (Parte II) En esta tabla veremos el orden de preferencia de los operadores que usaremos: Relative Precedence Operator Description Operator Type Association Postfix increment Postfix decrement Arithmetic Right to left Prefix increment Prefix decrement Arithmetic Right to left Boolean Not Logical Right to left Multiplication, division, modulus Arithmetic Left to right Addition, substraction Arithmetic Left to right, =,>,>= Less than, less than or equal to, greater than, greater than or equal to Relational Left to right Value equality and inequality Relational Left to right Reference equality and inequality Relational Left to right && Conditional AND Logical Left to right Conditional OR Logical Left to right Addition or substraction Assignment Right to left Assignment Operators (Asignación) Los operadores de asignación o assignment operators son usados para asignar valores a las variables. = Assignment operator El operador de asignación simplemente mueve literales vñalidos dentro de las variables o causará yerro de compilación si el literal es inválido. Aquí poseemos unos ejemplos de asignaciones válidos: boolean hasTreasureChestKey=true; byte shipmates=20; PirateShip ship=new PirateShip(); Los mostrados a continuación serán inválidos y darán yerros de compilación //Literal inválido, ya que true debe ser minúscula boolean hasTreasureChestKey=TRUE; //Literal inválido. Un valor byte no puede ser sobresaliente a 127 byte shipmates=500; //Constructor inválido PirateShip ship = new PirateShip(UNEXPEXTED_ARG); Compound Assignment Operators (Operadores compuestos de asignación) += Assignment by addition operator (Asignación con operador de adición) -= Assignment by substraction operator (Asignación con operador de substracción) Veremos con unos ejemplos en los que veremos exactamente como funciona: Respetando estas 2 sentencias de asignación: goldCoins=goldCoins+99; pirateShips=pirateShips-1; Las próximos 2 sentencias (con al misma idea y fruto final) están escritas con los operadores compuestos de asignación: goldCoins +=99; pirateShips -=1; Arithmetic Operators (Operadores Aritméticos) El examen incluirá 9 operadores aritméticos, 5 de estos operadores son usados para operaciones escenciales (adición, substracción, multiplicación, división y módulo). Los otros 4 operadores son usados para incrementar o decrementar un valor. Vamos a examinar los 5 operadores básicos primero. + Addition(Adición o Suma) - Substraccion (Diferencia) * Multiplication (Producto) / Division (Cociente) % Modulus (Resto) La adición, substracción, producto, división y módulo son sencillos. Vemos los próximos ejemplos para entenderlo mejor: //Adicion (+) int greyCannonBalls=50; int blackCannonBalls=50; int totalCannonBalls=greyCannonBalls + blackCannonBalls; //100 //Substracción (-) int firedCannonBalls=10; totalCannonBalls=totalCannonBalls - firedCannonBalls;//90 //Multiplicación (*) int matches=20; int matchboxes=20; int totalMatches= matches*matchboxes; //400 //División (/) int pirates=104; int pirateShips=3; int assignedPiratesPerShip=pirates / pirateShips; //34 //Resto(%) int pirateRemainder=pirates % pirateShips; //2 Prefix Increment, Postfix Increment, Prefix Decrement, Postfix Decrement (Pre-Incremento, Post-Incremento, Pre-Decremento, Post-Decremento) Son 4 los operadores que nos facultan incrementar o decrementar las variables ++x Prefix Increment (Pre-incremento) ?x Prefix Decrement (Pre-decremento) x++ Postfix Increment (Post-incremento) x? Postfix Decrement (Post-decremento) El preincremento y el predecremento nos proporcionan una forma sencilla de incrementar o decrementar la variable en 1. En vez de crear una expresión del tipo y=x+1, podemos usar y=++x. De forma similar, podemos reemplazar y=x-1 por y=?x. Esto funcionará porque la ejecución del preincremento o predecremento ocurre antes de la evaluación de la expresión. El postincremento y el postdecremento se ejecutan después de ejecutarse la evaluación de la expresión. Por lo tanto y=x++ sería idéntico que y=x seguido de x=x+1, y y=x? sería idéntico que y=x seguido de x=x-1. Es significativo darse cuenta que y=++x no es equivalente a y=x+1 porque el valor de x varía primero pero no despues. Es lo mismo para y=?x y y=x-1. EL preincremento incrementa el valor en 1 antes de que la expresión sea evaluada. int x=10; int y=++x; System.out.println("x=" + x +",y=" + y ); //x=11,y=11 El postincremento incrementa el valor en 1 luego de que la expresión sea evaluada int x=10; int y=x++; System.out.println("x=" + x +",y=" + y ); //x=11,y=10 El predecremento decrementa el valor en 1 antes de que la expresión sea evaluada int x=10; int y=--x; System.out.println("x=" + x +",y=" + y ); //x=9,y=9 El postdecremento decrementa el valor en 1 luego de que la expresión sea evaluada int x=10; int y=x--; System.out.println("x=" + x +",y=" + y ); //x=9,y=10 Es significativo ver lo que ocurre con los pre/post-incremento/decremento, como ves es algo dificil de comprender pero hay que saber cuando se aplican los incrementos o decrementos, si antes o después de que se evalúen las expresiones. Teniendo eso claro, no cometeremos yerros o si los cometemos los veremos antes. Sin mas hasta aquí la primera fracción de los operadores en java, en el próximo veremos los operadores relacionales y los operadores lógicos, y ya en una tercera fracción veremos los operadores usados en cadenas de caracteres o String. Cualquier aporte o corrección será bienvenida. Saludos!!