Olá. Sou nova por aqui.
Meu forte é programação estruturada, sou meio fraca em OO.
Seguinte, queria saber se na classe : public static main, a palavra static equivale aos procedimentos estruturados de uma linguagem estruturada? Por exemplo parecido com linguagem pascal? Por que diabos é static? Já olhei vários tópicos mas não consegui entender direito por que é static, por que precisa ser static?
Olá, static significa estático e neste caso o método pode ser chamado sem que a classe seja instanciada em um objeto.
Ola Bianca
Não equivale não, e inclusive não tem nada haver!
Aplicativos desktop com java tem uma convenção de iniciar o sistema no método publico estático sem retorno com o nome obrigatório de “main” recebendo argumentos de array de string. Isso é um padrão de JSE! Como vc fez um aplicativo desse modelo, teve que seguir isso.
O que é public? void? static? String[] são fundamentos de java básico e vc teria que fazer um curso completo para assimilar tudo. Se interessar, indico nossos cursos de java básicos, do qual sou instrutor, aonde vc aprendera tudo isso e muito mais. Suporte total via skype e whatapp!
Não.
Se quiser comparar com pascal, é como quando você declara algo diretamente na unit e não dentro de uma classe.
Para você executar um programa Java, você tem que dizer para a máquina virtual qual é a classe a ser executada.
A máquina virtual vai procurar por um método público, estático, chamado main e que possa receber Strings como parâmetro.
Se o método não fosse estático, a máquina virtual teria que primeiro criar uma instância da classe para aí poder invocar o método.
Como o método é estático, ele não está atrelado às instâncias da classe e sim à própria classe, podendo ser invocado sem que a classe precise ser instanciada.
Perguntei sobre ter a ver com programação estruturada por causa desse exemplo abaixo. Ele chama a classe diretamente em modo estático. Fez lembrar a chamada de procedimentos em pascal.
public class TemperatureConverter
{
public static double CelsiusToFahrenheit(String temperatureCelsius)
{
// Convert argument to double for calculations.
double celsius = Double.parseDouble(temperatureCelsius);
// Convert Celsius to Fahrenheit.
double fahrenheit = (celsius * 9 / 5) + 32;
return fahrenheit;
}
public static double FahrenheitToCelsius(String temperatureFahrenheit)
{
// Convert argument to double for calculations.
double fahrenheit = Double.parseDouble(temperatureFahrenheit);
// Convert Fahrenheit to Celsius.
double celsius = (fahrenheit - 32) * 5 / 9;
return celsius;
}
}
public class TestTemperatureConverter
{
public static void main(String[] args) throws IOException
{
System.out.println(“Please select the convertor direction”);
System.out.println(“1. From Celsius to Fahrenheit.”);
System.out.println(“2. From Fahrenheit to Celsius.”);
System.out.println(":");
//Scanner input = new Scanner(System.in);
// input.
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String selection = in.readLine();
String resultado;
double F, C = 0;
switch (selection)
{
case "1":
System.out.println("Please enter the Celsius temperature: ");
System.out.println("");
F = TemperatureConverter.CelsiusToFahrenheit(in.readLine());
System.out.printf("Temperature in Fahrenheit: " + F);
break;
case "2":
System.out.println("Please enter the Fahrenheit temperature: ");
System.out.println("");
resultado=in.readLine();
C = TemperatureConverter.FahrenheitToCelsius(resultado);
//System.out.println("Temperature in Celsius: ", C);
System.out.println("Temperatura em Celsius :"+C);
System.out.println("");
break;
default:
System.out.println("Please select a convertor.");
break;
}
// Keep the console window open in debug mode.
System.out.println("Press any key to exit.");
in.readLine();
}
}