Diferencias entre System.out.println () y return en Java

Estoy tratando de entender la diferencia y los beneficios de usar System.out.println() vs. return blah en un método.

Parece que System.out.println() se usa para mostrar información estática y return es un valor devuelto por el método. Sin embargo, estoy viendo ejemplos como el siguiente, donde se usa una función dentro de la statement System.out.println()

 System.out.println(name.substring(1, 3)); 

Cuándo es correcto usar System.out.println() y return . ¿El return puede ser utilizado por otro fragmento de código más adelante, mientras que System.out.println() no puede?

    Su última oración es efectivamente correcta, pero la distinción entre estas dos operaciones es ENORME , por lo que me gustaría ofrecer una explicación más profunda de sus diferencias.

    La diferencia:

    return es una instrucción que controla el flujo de la ejecución de su progtwig. Es una parte fundamental de la syntax de Java. Le dice a la computadora qué parte de su código ejecutar y qué valores usar durante esa ejecución. Cuando devuelves un valor, estás diciendo “El resultado de llamar a este método es XXXX” (siendo ‘XXXX’ el valor que devolviste).

    System.out.println no se usa para controlar cómo se ejecuta su progtwig. Es una mera forma de informar al usuario de lo que está sucediendo dentro de su progtwig. System.out.println (syso para abreviar) puede imprimir cualquier información a la consola; no importa si es una variable, una expresión o el resultado de una llamada a un método. No hay limitación para los datos “estáticos”.

    Miremos a ambos en acción:

     int addInts(int arg0, int arg1) { return arg0 + arg1; } 

    Esto significa que si llamamos addInts en nuestro progtwig, se evaluará a la sum de sus argumentos. Entonces, cuando escribimos addInts(3, 7) , es lo mismo que si simplemente addInts(3, 7) escrito 3 + 7 o 10 en nuestro código fuente. Nada está impreso en la consola; todo lo que hemos hecho es darle a nuestro progtwig una forma de calcular algo.

    Sin embargo, cualquier cálculo que hagamos será en última instancia inútil si todo lo que hacen es sentarse dentro de la computadora, por lo que necesitamos una forma de mostrar esta información al usuario. Ingrese syso:

     System.out.println(addInts(22, 16)); 

    El método addInts se llama y devuelve 38. Este valor se coloca en algún lugar de la memoria de la computadora de modo que nuestro progtwig pueda encontrarlo.

    A continuación, syso toma ese valor (38) y lo imprime en la consola, lo que le permite saber qué valor se calculó. Nada nuevo se calcula a partir de este procedimiento, y nuestro progtwig continúa con la siguiente statement.

    Entonces, ¿qué uso?

    En progtwigs simples, tiene tan pocos valores para realizar un seguimiento que puede ser tentador simplemente imprimir todo lo que desea saber donde lo calcula. Por ejemplo, si estabas escribiendo un progtwig para hacer tu tarea de álgebra (estuve allí) y escribiste un método para resolver la ecuación cuadrática, podría ser tentador estructurarlo así:

     class Algebra { static void quadSolve(double a, double b, double c) { double result = /* do math... we're ignoring the negative result here*/; System.out.println("The solution to the quadratic equation is: " + result); } public static void main(String[] args) { quadSolve(1.0, -6.0, 9.0); } } 

    Sin embargo, este enfoque se convierte rápidamente en una muy mala idea si desea que su progtwig sea un poco más complejo. Digamos que un problema requiere que resuelva la ecuación cuadrática y luego use el resultado de ese cálculo para calcular el volumen de un cilindro. En el ejemplo anterior, no podemos hacer eso: después de volcar el valor del result en la consola a través de syso, desaparece cuando termina el método quadSolve . Tendría mucho más sentido si tenemos el result retorno quadSolve y dejamos que la “persona que llama” (el lugar quadSolve se llamó a quadSolve ) trate con el manejo de ese valor. Este es un diseño mucho más flexible que nos permite hacer que nuestros progtwigs sean mucho más complicados con relativa facilidad. Esta mayor flexibilidad y modularidad es realmente lo que hace que los métodos sean útiles. Aquí está la implementación:

     class Algebra { static double quadSolve(double a, double b, double c) { double result = /* do math... we're ignoring the negative result here*/; return result; } public static void main(String[] args) { double x = quadSolve(1.0, -6.0, 9.0); //now we can do whatever we want with result: //print it, negate it, pass it to another method-- whatever. System.out.println("The solution to the quadratic equation is: " + x); System.out.println("And it's square is: " + (x * x)); } } 

    Espero que esto aclare las cosas. No dude en preguntar si necesita una aclaración adicional.

    Un method menudo devuelve un value (que se realiza mediante el uso de la statement de return ).

    La información puede ser “impresa” a un flujo de salida por referencias de System.out.println() .

    Ambos tienen sus usos … que generalmente son ortogonales.

    Tienen muy poco que ver el uno con el otro.


    System.out.println() se utiliza para enviar cadenas a una consola / terminal. Asi que

     System.out.println("Hello world"); 

    debería salir la cadena "Hello world"


    return es una statement en Java para volver al código que invoca el método y devolver un valor.

     public static int add(int a, int b) { return a + b; // go back to method that called this method (main) } public static void main(String[] args) { int sum = add(3,4); // the return result (7) is stored in sum }