Operador Ternario - Ordem Crescente

Pessoal, bom dia.

Estou iniciando meu curso de Sistema de Informação agora. Fiz o código abaixo para colocar números em ordem crescente utilizando a instrução If. Tentei fazer com o Operador Ternário mas acho que estou errando em alguma coisa. Poderiam me ajudar

If:

import java.util.Scanner;
public class Exercicio2 {
/*
* @Carlos
* Exercício 2 - Intrução If - ordem crescente
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner teclado = new Scanner(System.in);
byte num1, num2, num3, asc;

	System.out.println("Digite o primeiro número: ");
	num1 = teclado.nextByte();
	System.out.println("Digite o segundo número: ");
	num2 = teclado.nextByte();
	System.out.println("Digite o terceiro número: ");
	num3 = teclado.nextByte();
	
	if (num1 > num2) {
		asc = num1;
		num1 = num2;
		num2 = asc;
	}
	if (num2 > num3) {
		asc = num2;
		num2 = num3;
		num3 = asc;
	}
	if (num1 > num2) {
		asc = num1;
		num1 = num2;
		num2 = asc;
	}
	System.out.println("A ordem ascente é: " + num1 + " " + num2 + " " + num3);
	
}

}

Operador Ternario:
import java.util.Scanner;

public class Exercicio2 {
/*
* @Carlos
* Exercício 2 - Intrução If - ordem crescente
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner teclado = new Scanner(System.in);
byte num1, num2, num3, asc;

	System.out.println("Digite o primeiro número: ");
	num1 = teclado.nextByte();
	System.out.println("Digite o segundo número: ");
	num2 = teclado.nextByte();
	System.out.println("Digite o terceiro número: ");
	num3 = teclado.nextByte();
	
	if (num1 > num2) {
		asc = num1;
		num1 = num2;
		num2 = asc;
	}
	if (num2 > num3) {
		asc = num2;
		num2 = num3;
		num3 = asc;
	}
	if (num1 > num2) {
		asc = num1;
		num1 = num2;
		num2 = asc;
	}
	System.out.println("A ordem ascente é: " + num1 + " " + num2 + " " + num3);
	
}

}

No código que você postou, não está usando operador ternário.

Comparando 2 numeros com if:

int maior (int a, int b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}

Comparando 2 números com operador ternário:

int maior (int a, int b) {
        return a > b ? a : b;
}

Usando a instrução “if” dados três números quaisquer consigo colocá-los em ordem crescente. Queria fazer o mesmo processo com o operador ternário apesar de que eu nunca vi um código booleano com operador ternário.

import java.io.PrintStream;
import java.util.Scanner;

public class Exercicio2 {

    private static final Scanner entrada = new Scanner(System.in);
    private static final PrintStream saida = System.out;

    public static void main(String[] args) {

        saida.println("Digite o primeiro número: ");
        int num1 = Integer.parseInt(entrada.nextLine());

        saida.println("Digite o segundo número: ");
        int num2 = Integer.parseInt(entrada.nextLine());

        saida.println("Digite o terceiro número: ");
        int num3 = Integer.parseInt(entrada.nextLine());

        int menor = menor(menor(num1, num2), num3);
        int medio = maior(menor(num1, num2), menor(maior(num1, num2), num3));
        int maior = maior(maior(num1, num2), num3);

        saida.println("A ordem ascendente é: " + menor + " " + medio + " " + maior);
    }

    private static int menor(int a, int b) {
        return a < b ? a : b;
    }

    private static int maior(int a, int b) {
        return a > b ? a : b;
    }
}

Então você nunca viu uma operação com operador ternário, pois ela depende justamente de uma expressão booleana.

O operador ternário tem esse nome pois ele possui três operandos (três é um terno) :

<a> ? <b> : <c>

Onde:

<a> - Uma expressão booleana
<b> - Valor atribuído caso a expressão booleana seja `true`
<c> - Valor atribuído caso a expressão booleana seja `false`

Resumindo o "?" é o "então" e o ":" é o "senão".

Obrigado Staroscki.
Agora sim consigo entender como funciona o operador ternário.
Uma pergunta em qual ou quais situações eu posso usar ele pois na maioria dos códigos envolvendo condicionais a maioria utiliza o if/else e switch?

Em atribuições, ao invés de fazer assim:

Tipo variavel;
if (condicao) {
    variavel = umValor;
} else {
    variavel = outroValor;
}

Faça assim:

Tipo variavel = condicao ? umValor : outroValor;

Em passagem de parâmetros, ao invés de fazer assim:

if (condicao) {
    umMetodo(umParametro);
} else {
    umMetodo(outroParametro);
}

Faça assim:

umMetodo(condicao ? umParametro : outroParametro);

Em retorno de métodos, ao invés de fazer assim:

Tipo meuMetodo() {
    if (condicao) {
        return umaCoisa;
    } else {
        return outraCoisa;
    }
}

Faça assim:

Tipo meuMetodo() {
    return condicao ? umaCoisa : outraCoisa;
}