Acho que entendi. O primeiro valor que “menor” recebe é zero (inicialização). Comece com um número alto. Em Java, se faz assim:
public static void main(String[] args) {
int menorNumero = 1000;
int maiorNumero = 0;
Scanner scan = new Scanner(System.in);
for (int i = 0; i < 4; i++) {
int foo = scan.nextInt();
if(foo > maiorNumero){
maiorNumero = foo;
}
if (foo < menorNumero){
menorNumero = foo;
}
}
System.out.println("O maior valor é:" + maiorNumero);
System.out.println("O menor valor é:" + menorNumero);
}
Portanto, a lógica é:
Dado a varíavel menor (iniciando em 9999), tudo que for menor que ela terá seu valor atribuido a ela passando assim a ser o menor número. A lógica se aplica para o maior, também.
Logo, imagine que entrarei com os números 10, 20, 30 e 40. Funcionará assim:
1º MOMENTO: maiorNumero = 0, menorNumero = 1000
entrada:10 (MAIOR que maiorNumero), (MENOR que menorNumero) 2 CONDIÇÕES VERDADEIRAS
2ºMOMENTO: maiorNumero = 10, menorNumero = 10
entrada: 20 (MAIOR que maiorNumero), (MAIOR que menorNumero) 1 CONDIÇÃO VERDADEIRA
3ºMOMENTO: maiorNumero = 20, menorNumero = 10
entrada: 30 (MAIOR que maiorNumero), (MAIOR que menorNumero) 1 CONDIÇÃO VERDADEIRA
4ºMOMENTO: maiorNumero = 30, menorNumero = 10
entrada: 40 (MAIOR que maiorNumero), (MAIOR que menorNumero) 1 CONDIÇÃO VERDADEIRA
SAÍDA FINAL:
maiorNumero = 40
menorNumero = 10
Espero que dê pra esclarecer 