Bienvenidos a otro capítulo de este Curso Gratis de Java para Hackers – Operadores Aritméticos. Comparte este articulo y síguenos para recibir más capítulos, guías y cursos gratis.

Este curso está en constante actualización. Tendrá revisiones y actualizaciones anuales y correcciones y mejoras mensuales. Este curso está en un ciclo de crecimiento y mejora constante, agradecemos su apoyo difundiendo, compartiendo, comentando o simplemente leyéndolo.

Tabla de contenidos

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Los operadores

Los operadores constituyen el componente básico de cualquier lenguaje de programación. Java también proporciona muchos tipos de operadores que se pueden utilizar según la necesidad de realizar diversos cálculos y funciones, ya sean lógicos, aritméticos, relacionales, etc. Se clasifican según la funcionalidad que proporcionan.

Los humanos inventaron los símbolos hace millones de años para representar diferentes conceptos utilizando caracteres e imágenes especiales. Desde entonces, todos hemos ido utilizando numerosos símbolos en uno u otro para referirnos a algo o transmitir mensajes. 

Por ejemplo, al mirar un signo más (+), entendemos que necesitamos sumar o mezclar dos o más cosas. O cuando vemos un signo de multiplicación (*), sabemos que significa encontrar el producto de números dados. 

No somos sólo nosotros los humanos, también los ordenadores y las máquinas pueden entender estos símbolos, normalmente conocidos en términos técnicos como operadores. 

Los lenguajes de programación informática tienen bloques de construcción formados por operadores. De igual forma, existen diferentes tipos de operadores en Java , que podemos utilizar para realizar diferentes operaciones, cálculos y funciones. Estos operadores se clasifican según sus funcionalidades. 

Tipos de operadores en Java

Java comprende varios operadores que se utilizan para realizar diferentes operaciones según los requisitos. Estos operadores se clasifican según la funcionalidad que ofrecen. Entonces, aquí hay una lista detallada de operadores de Java y su explicación. Operador en Java es un símbolo que se utiliza para realizar operaciones. Por ejemplo: +, -, *, / etc.

Como podemos ver los nombres y la agrupación de los operadores «varían» según la fuente consultada.

Hay muchos tipos de operadores en Java, nosotros los subdividiremos en estas categorías:

  • Operadores aritméticos
  • Operadores de Asignación
  • Operadores unarios
  • Operadores relacionales
  • Operadores ternarios
  • Operadores bit a bit
  • Operadores logicos
  • Operadores de turno

Operadores aritméticos

Los operadores aritméticos en Java realizan operaciones matemáticas simples y básicas, como resta, suma, división y multiplicación, en tipos de datos primitivos .  Sirven para realizar operaciones numéricas para tipos de datos numéricos enteros y reales. Los operadores aritméticos se utilizan en expresiones matemáticas de la misma manera que se utilizan en álgebra.

Estos operadores involucran operadores matemáticos que se pueden usar para realizar varias operaciones aritméticas simples o avanzadas en los tipos de datos primitivos denominados operandos. Estos operadores constan de varios operadores unarios y binarios que se pueden aplicar a uno o dos operandos. Veamos los diversos operadores que Java debe proporcionar entre los operadores aritméticos. 

Los operadores aritméticos de Java son operadores matemáticos que se utilizan para realizar cálculos simples y de nivel avanzado en todos los tipos de datos primitivos , como flotantes, enteros y caracteres. Se utilizan para realizar operaciones aritméticas en Java e incluyen diversos cálculos matemáticos. 

Tenga en cuenta que para cadenas, solo podemos usar el operador aritmético de suma en Java, que consta de dos cadenas . Además, cuando se trata de tipos de datos definidos por el usuario, podríamos utilizar uno o más operadores aritméticos.

La siguiente tabla enumera los operadores aritméticos:

Tabla de operadores aritméticos:

OperadorEjemploResultadoDescripción
+4 + 59Suma: Se utiliza para sumar dos variables o valores de los operandos. 
5.3 – 1.24.1Resta: Este operador se utiliza para realizar restas, es decir, restar un valor de otro.
*1.5 * 2.74.05Multiplicación: Se utiliza para multiplicar valores dados.
/0.5 / 0.25 14 / 62.0 2División: este operador aritmético se utiliza para dividir el valor de la izquierda con el valor de la derecha. 
%20 % 76Operaciones de módulo : (Resto de la división entera) también conocido como operador de resto, devuelve el resto después de la división.

Por ejemplo, m+n;

Aquí, + es el operador aritmético utilizado para sumar las variables m y n . Otros operadores se utilizan de la misma manera para realizar las operaciones requeridas. 

Los operadores aritméticos en Java

Supongamos que la variable entera A tiene 10 y la variable B tiene 20, entonces:

OperadorDescripciónEjemplo
+ (Adición)Agrega valores a ambos lados del operador.A + B dará 30
– (Resta)Resta el operando de la derecha del operando de la izquierda.A – B dará -10
* (Multiplicación)Multiplica valores a ambos lados del operador.A * B dará 200
/ (División)Divide el operando de la izquierda por el operando de la derecha.B/A dará 2
% (Módulo)Divide el operando de la izquierda por el operando de la derecha y devuelve el resto.B % A dará 0
++ (incremento)Aumenta el valor del operando en 1.B++ da 21
— (Disminución)Disminuye el valor del operando en 1.B–da 19

Los siguientes programas son ejemplos simples que demuestran los operadores aritméticos. Copie y pegue los siguientes programas Java como archivo Test.java, compílelos y ejecútelos:

Ahora veamos cada uno de los operadores aritméticos en Java: 

1. Suma (+): 

este operador es un operador binario y se utiliza para sumar dos operandos.

Este operador binario se utiliza para sumar dos operandos dados. Los operandos se refieren a variables de tipos de datos primitivos. 

Sintaxis:

Operand1 + Operand2

  • También podemos usar el operador de suma para la concatenación de dos cadenas ya que nos permite sumar dos cadenas. Por ejemplo,

ABC + DE = ABCDE.

  • Además, si agrega cualquier otro tipo de datos primitivo con cadenas, devolverá el resultado solo en formato de cadena.
  • En Java, también podemos utilizar el operador de suma en el tipo de datos char. Cuando lo usamos con una variable de tipo de datos char, realizará una suma en sus valores ASCII. Por ejemplo, a + b = 195 (donde el ASCII de a es 97 y el ASCII de b es 98)

Ejemplo:

int sum = 5 + 3;

Producción:

8

Ejemplo: 

número1 = 10, número2 = 20
suma = número1 + número2 = 30

// Java code to illustrate Addition operator

import java.io.*;

class Addition {

    public static void main(String[] args)

    {

        // initializing variables

        int num1 = 10, num2 = 20, sum = 0;

        // Displaying num1 and num2

        System.out.println(«num1 = » + num1);

        System.out.println(«num2 = » + num2);

        // adding num1 and num2

        sum = num1 + num2;

        System.out.println(«The sum = » + sum);

    }

}

Producción

número1 = 10
número2 = 20
La suma = 30

2. Resta (-): 

este operador es un operador binario y se utiliza para restar dos operandos. 

Es otro operador binario en Java que se utiliza para restar dos operandos. Implementa la operación de resta al igual que las matemáticas y solo trata con valores numéricos.

Sintaxis:

Operand1 – Operand2

  • De manera similar al operador de suma, podemos implementar el operador de resta en el tipo de datos char. Cuando lo usamos con el tipo de datos char, realiza una resta en sus valores ASCII. Por ejemplo, a – b = -1 (donde ASCII de a es 97 y ASCII de b es 98).

Ejemplo:

int difference = 10 – 4;

Producción:

6

Ejemplo: 

número1 = 20, número2 = 10
sub = número1 – número2 = 10

// Java code to illustrate Subtraction operator

import java.io.*;

class Subtraction {

    public static void main(String[] args)

    {

        // initializing variables

        int num1 = 20, num2 = 10, sub = 0;

        // Displaying num1 and num2

        System.out.println(«num1 = » + num1);

        System.out.println(«num2 = » + num2);

        // subtracting num1 and num2

        sub = num1 – num2;

        System.out.println(«Subtraction = » + sub);

    }

}

Producción

número1 = 20
número2 = 10
Resta = 10

3. Multiplicación (*): 

este operador es un operador binario y se utiliza para multiplicar dos operandos.

Este operador binario en Java implementa la multiplicación de dos operandos. Ejecuta multiplicaciones matemáticas de nivel básico y avanzado. Podemos usar el operador de multiplicación en Java con double, char, int y float. Sin embargo, en el caso del tipo de datos char, el operador realiza la operación sobre los valores ASCII del carácter. 

Sintaxis:

Operand1 * Operand2

Ejemplo:

int product = 6 * 2;

Producción:

12

Ejemplo: 

número1 = 20, número2 = 10
mult = núm1 * núm2 = 200

// Java code to illustrate Multiplication operator

import java.io.*;

class Multiplication {

    public static void main(String[] args)

    {

        // initializing variables

        int num1 = 20, num2 = 10, mult = 0;

        // Displaying num1 and num2

        System.out.println(«num1 = » + num1);

        System.out.println(«num2 = » + num2);

        // Multiplying num1 and num2

        mult = num1 * num2;

        System.out.println(«Multiplication = » + mult);

    }

}

Producción

número1 = 20
número2 = 10
Multiplicación = 200

4. División(/): 

Este es un operador binario que se utiliza para dividir el primer operando (dividendo) por el segundo operando (divisor) y dar como resultado el cociente. 

El operador de división en Java divide el primer operando (dividendo) por el segundo (divisor) y devuelve el cociente como resultado. Podemos usarlo con diferentes tipos de datos primitivos, como char, float y double. Sin embargo, en el tipo de datos char, realiza operaciones de división en los valores ASCII.

Sintaxis

Operand1 / Operand2

  • Si el dividendo y el divisor son de tipo de datos int, el cociente también será un número entero. Además, si alguno de ellos es de tipo float o double, el resultado tendrá un valor decimal. 
  • El operador de división provoca un tipo de excepción. Cuando dividimos un valor por 0, el sistema arroja DivideByZeroException, que es un tipo de excepción aritmética.

Ejemplo:

int quotient = 10 / 3;

Producción:

3

Ejemplo: 

número1 = 20, número2 = 10
div = número1 / número2 = 2

// Java code to illustrate Division operator

import java.io.*;

class Division {

    public static void main(String[] args)

    {

        // initializing variables

        int num1 = 20, num2 = 10, div = 0;

        // Displaying num1 and num2

        System.out.println(«num1 = » + num1);

        System.out.println(«num2 = » + num2);

        // Dividing num1 and num2

        div = num1 / num2;

        System.out.println(«Division = » + div);

    }

}

Producción

número1 = 20
número2 = 10
División = 2

5. Módulo (%): 

este es un operador binario que se utiliza para devolver el resto cuando el primer operando (dividendo) se divide por el segundo operando (divisor). 

El operador de módulo es muy útil ya que devuelve el resto cuando dividimos un operando (dividendo) por el segundo operando (divisor). Podemos utilizar este operador binario con tipos de datos primitivos double int, float y char. En caso de un valor negativo, funciona de la misma manera, excepto que el resultado es negativo. 

Sintaxis

Operand1 % Operand2

El módulo funciona de diferentes maneras con cada tipo de datos.

  • Con flotante, devuelve el resto en decimal flotante: 10,0%3 = 1,0
  • En el caso de char, realiza la operación de los valores ASCII- z’%3 = 2
  • Con la variable int muestra el resto int- 10%3 = 1
  • Para variable doble, devuelve el resto con decimal: 6,5%3 = 0,5
  • El operador de módulo con un valor negativo da el resto negativo: 10%3 = -1

Ejemplo:

int remainder = 10 % 3;

Producción:

1

Ejemplo: 

número1 = 5, número2 = 2
mod = núm1 % núm2 = 1

// Java code to illustrate Modulus operator

import java.io.*;

class Modulus {

    public static void main(String[] args)

    {

        // initializing variables

        int num1 = 5, num2 = 2, mod = 0;

        // Displaying num1 and num2

        System.out.println(«num1 = » + num1);

        System.out.println(«num2 = » + num2);

        // Remaindering num1 and num2

        mod = num1 % num2;

        System.out.println(«Remainder = » + mod);

    }

}

Producción

número1 = 5
número2 = 2
Resto = 1

Ejemplo de programa usando todos

En este ejemplo, estamos creando dos variables a y b y usando operadores aritmáticos . Realizamos operaciones de suma, resta, multiplicación y división e imprimimos los resultados.

Ejemplo 1

public class Test {

   public static void main(String args[]) {

      int a = 10;

      int b = 20;

      System.out.println(«a + b = » + (a + b) );

      System.out.println(«a – b = » + (a – b) );

      System.out.println(«a * b = » + (a * b) );

      System.out.println(«b / a = » + (b / a) );

   }

}

Producción

a + b = 30
a – b = -10
a * b = 200
b / a = 2

Ejemplo 2

En este ejemplo, estamos creando tres variables a, byc y usando el operador aritmático % . Hemos realizado operaciones de módulo entre sus valores.

public class Test {

   public static void main(String args[]) {

      int a = 10;

      int b = 20;

      int c = 25;

      System.out.println(«b % a = » + (b % a) );

      System.out.println(«c % a = » + (c % a) );     

   }

}

Producción

b % a = 0
c % a = 5

Ejemplo 3

En este ejemplo, estamos creando dos variables a y d y usando operadores aritmáticos . Hemos realizado operaciones de postincremento, preincremento, postdecremento y postincremento e imprimimos los resultados.

public class Test {

   public static void main(String args[]) {

      int a = 10;

      int d = 25;

      System.out.println(«a++   = » +  (a++) );

      System.out.println(«a–   = » + (a–) );

      // Check the difference in d++ and ++d

      System.out.println(«d++   = » +  (d++) );

      System.out.println(«++d   = » +  (++d) );

   }

}

Producción

a++ = 10
b– = 11
d++ = 25
++d = 27

Ejemplo 4

Ejemplo de operador aritmético de Java

  1. public class OperatorExample{  
  2. public static void main(String args[]){  
  3. int a=10;  
  4. int b=5;  
  5. System.out.println(a+b);//15  
  6. System.out.println(a-b);//5  
  7. System.out.println(a*b);//50  
  8. System.out.println(a/b);//2  
  9. System.out.println(a%b);//0  
  10. }}  

Producción:

15
5
50
2
0

Ejemplo 5

Ejemplo de operador aritmético de Java: expresión

  1. public class OperatorExample{  
  2. public static void main(String args[]){  
  3. System.out.println(10*10/5+3-1*4/2);  
  4. }}  

Producción:

21

Ejemplo 6:

// Java Program to implement

// Arithmetic Operators

import java.io.*;

// Drive Class

class laprovittera {

      // Main Function

    public static void main (String[] args) {

        // Arithmetic operators

        int a = 10;

        int b = 3;

        System.out.println(«a + b = » + (a + b));

        System.out.println(«a – b = » + (a – b));

        System.out.println(«a * b = » + (a * b));

        System.out.println(«a / b = » + (a / b));

        System.out.println(«a % b = » + (a % b));

    }

}

Producción

a + b = 13
a – b = 7
a * b = 30
a/b = 3
un % b = 1

Ejemplo 7

A continuación se muestra un ejemplo que combina varios operadores aritméticos:

int result = (10 + 5) * 3 / 2 – 8 % 3;

Producción:

16

Explicación:

En este ejemplo, el cálculo se realiza de la siguiente manera:

  • (10 + 5) es igual a 15
  • 15 * 3 es igual a 45
  • 45/2 es igual a 22 (división entera)
  • 8 % 3 es igual a 2 (resto)
  • Finalmente, 22 – 2 es igual a 20, que se asigna a la variable de resultado.

Ejemplo 8

Aquí hay un programa de ejemplo en Java que implementa todos los operadores aritméticos básicos para la entrada del usuario:

import java.util.Scanner;

public class ArithmeticOperators {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.print(«Enter the first number: «);

        double num1 = sc.nextDouble();

        System.out.print(«Enter the second number: «);

        double num2 = sc.nextDouble();

        double sum = num1 + num2;

        double difference = num1 – num2;

        double product = num1 * num2;

        double quotient = num1 / num2;

        System.out.println(«The sum of the two numbers is: » + sum);

        System.out.println(«The difference of the two numbers is: » + difference);

        System.out.println(«The product of the two numbers is: » + product);

        System.out.println(«The quotient of the two numbers is: » + quotient);

    }

}

Aporte

Introduzca el primer número: 20
Introduzca el segundo número: 10

Producción

La suma de los dos números es: 30,0.
La diferencia de los dos números es: 10,0.
El producto de los dos números es: 200,0.
El cociente de los dos números es: 2,0.

Explicación del programa

  • El programa implementa operaciones aritméticas básicas utilizando la entrada del usuario en Java. El programa utiliza la clase Scanner del paquete java.util para leer la entrada del usuario desde la consola. Los siguientes pasos describen cómo funciona el programa en detalle:
  • Importe la clase java.util.Scanner: el programa comienza importando la clase Scanner, que se utiliza para leer la entrada desde la consola.
  • Cree un objeto de escáner : a continuación, se crea un objeto de escáner sc y se asocia con el flujo de entrada estándar System.in.
  • Leer el primer número del usuario: el programa solicita al usuario que ingrese el primer número y utiliza el método nextDouble() de la clase Scanner para leer la entrada. La entrada se almacena en la variable num1 de tipo doble.
  • Leer el segundo número del usuario : el programa solicita al usuario que ingrese el segundo número y utiliza el método nextDouble() de la clase Scanner para leer la entrada. La entrada se almacena en la variable num2 de tipo doble.
  • Realizar operaciones aritméticas: el programa realiza las cuatro operaciones aritméticas básicas (suma, resta, multiplicación y división) utilizando las variables num1 y num2 y almacena los resultados en variables separadas suma, diferencia, producto y cociente.
  • Imprima los resultados: el programa imprime los resultados de las operaciones aritméticas utilizando el método println del objeto System.out.
  • Este programa demuestra cómo implementar operaciones aritméticas básicas utilizando la entrada del usuario en Java. La clase Scanner facilita la lectura de la entrada del usuario desde la consola y las operaciones aritméticas básicas se realizan utilizando operadores matemáticos estándar en Java.

Operador de concatenación de cadenas

El operador de concatenación de cadenas “+”, sirve para unir cadenas, o también para concatenar otro tipo de datos, como enteros con cadenas. El resultado siempre será una cadena.

OperadorDescripciónEjemploResultado
+Concatenación“Nombre: Juan;” + “Edad: “ + 15“Nombre: Juan; Edad: 15”

Preguntas frecuentes sobre operadores aritméticos de Java

1 ¿Cómo funciona el operador de módulo en Java?

El operador de módulo (%) en Java devuelve el resto cuando el operando de la izquierda se divide por el operando de la derecha. Por ejemplo, 10 % 3 dará como resultado 1 porque 10 dividido por 3 es 3 con un resto de 1.

2 ¿Se pueden utilizar diferentes tipos de datos con operadores aritméticos?

Sí, Java admite operaciones aritméticas entre diferentes tipos de datos numéricos. Sin embargo, existen reglas para la conversión de tipos de datos (conversión de tipos) que podrían afectar el resultado o la precisión del cálculo.

3 ¿Qué pasa si se realiza la división entre dos números enteros?

Si ambos operandos del operador de división (/) son números enteros, el resultado también será un número entero y cualquier parte decimal se truncará. Para obtener un resultado decimal, al menos uno de los operandos debe ser un número de punto flotante.

4 ¿Cómo se priorizan las operaciones aritméticas en Java?

Java sigue el orden estándar de operaciones (PEMDAS/BODMAS): paréntesis, exponenciación, multiplicación y división (de izquierda a derecha), y finalmente suma y resta (de izquierda a derecha).

5 ¿Se pueden utilizar operadores aritméticos con otros tipos, como cadenas o caracteres?

Los operadores aritméticos están diseñados principalmente para operaciones numéricas. Si bien algunos operadores (como +) se pueden usar para la concatenación de cadenas, las operaciones aritméticas con tipos no numéricos generalmente darán como resultado errores de compilación.

6 ¿Los operadores aritméticos se utilizan sólo para números?

Sí, los operadores aritméticos están diseñados para cálculos numéricos. Sin embargo, también se pueden utilizar con literales numéricos, variables y expresiones.

7 ¿Cómo puedo evitar la división de números enteros y obtener un resultado decimal?

Para garantizar la división decimal, puede convertir explícitamente uno o ambos operandos a un tipo de punto flotante. Por ejemplo, (doble) 10/3 dará como resultado un valor decimal de aproximadamente 3,33333.

8 ¿Pueden las operaciones aritméticas dar lugar a errores o excepciones?

Las operaciones aritméticas pueden provocar errores, como la división por cero (lo que da lugar a una ArithmeticException). Para evitar este tipo de errores, es importante manejar posibles casos extremos en su código.

No te detengas, sigue avanzando

Aquí tienes un propósito para este 2024 que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

Universidad Hacking. Todo en Ciberseguridad. Curso Completo

Aprende Hacking Ético y Ciberseguridad sin necesitar conocimientos Previos. Practica Hacking Ético y Ciberseguridad aquí

Calificación: 4,6 de 5 (2.877 calificaciones) 15.284 estudiantes Creado por Alvaro Chirou • 1.800.000+ Enrollments Worldwide

Lo que aprenderás

  • Seguridad informática
  • Hacking Ético en profundidad
  • Redes
  • Programación (Python) (Hacking con Python)
  • Análisis de Malware con laboratorios, practicas y ejecución de Malware para que veas su comportamiento.
  • Cómo reforzar tu Privacidad y Anonimato
  • Uso avanzado de Metasploit
  • Top 10 de Owasp Web, Top 10 de Owasp mobile y Top 10 de Owasp API
  • Seguridad informática para empresas
  • Kali linux de 0 a 100, Veremos su suite de herramientas de hacking y como explotar fallos en sistemas.
  • Termux y como hackear desde el celular
  • Seguridad informática server/web, profundizaremos en WordPress
  • Análisis de trafico en Wireshark
  • Y mucho, pero mucho más

¿Esto que significa?

Hoy más que nunca, se necesitan personas capacitadas en este rubro para trabajar.

Por esa razón cree esta formación profesional para compartirte mis conocimientos y experiencia en la materia y puedas iniciar en este mundo del Hacking Ético y Ciberseguridad.

Te voy a estar acompañando en el proceso de aprendizaje, donde si estas empezando desde 0, sin conocimientos previos, no es un impedimento ya que iniciaremos como si no supieras nada de la materia.

Si sos una persona con conocimientos, podrás iniciar directamente en el nivel más avanzado o en el que tu elijas.

Como en todos mis cursos en udemy, tendrás muchísima practica para que materialices lo que vas aprendiendo.

Empieza a aprender ya mismo!

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

No solo te enseñamos, tambien te guíamos para que puedas conseguir trabajo como desarrollador y hacker…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes serguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/como-iniciarse-en-ciberseguridad-y-hacking-en-2024/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Cómo Iniciarse en Hacking y Ciberseguridad en 2024

Curso Gratis de Programación

Curso Gratis Linux – Capitulo 1 – Introducción a Linux

Curso Gratis de Redes – Capitulo 1 – Tipos de redes y servicios

Como iniciarse en TRY HACK ME – Complete Beginner #1

OSINT #1 Más de 200 Search Tools