No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
15 Hrs
15 Min
30 Seg
Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Static: Variables y Métodos Estáticos

7/38
Recursos

Los métodos y variables estáticos nos ayudan a ejecutar o conseguir algún código desde clases no han sido instanciadas, ya que sus valores se guardan en la memoria de nuestro programa, no en diferentes objetos instanciados a través de una clase.

Las variables estáticas mantienen su valor durante todo el ciclo de vida de nuestro programa, por lo tanto, podemos alterar los valores de una variable estática desde una clase y consumir su valor alterado desde otra sin necesidad de conectar ambas clases.

También podemos importar los métodos estáticos de una clase para usarlos sin necesidad de escribir el nombre de la clase:

import static com.anncode.operaciones.Calculadora.*
import static java.lang.Math.*

public class Principal {
  public static void (String[] args) {
    int number = suma(3, 5);
    System.out.println(number + PI);
  }
}

Aportes 169

Preguntas 28

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Las variables static no pertenecen al objeto si no a la clase, si se modifica la variable static esto se verá reflejado en todos los objetos que hayan sido creados con esa clase.

Un ejemplo en donde usar static podría ser en un ID eje:

public class Doctor {
    //Atributos
    static int ID = 0;
    int id;

    Doctor(){
        id = ID;
        ID++;
    }

    public int getId(){
        return id;
    }
}
  	    Doctor d1 = new Doctor();
        Doctor d2 = new Doctor();
        Doctor d3 = new Doctor();
        System.out.println(d1.getId() + " " + d2.getId() + " " +d3.getId());
        //imprimirá 0,1,2
        //y cada vez que creemos un nuevo Doctor lo va a incrementar

¿Que es Static? se utiliza para definir métodos o variables de ese tipo estático. Utilizamos Static para llamar una variable sin utilizar un objeto. Se invoca en una clase que no tiene instancias de la clase.

¿Que nivel de Scope tiene una variable de tipo Static? Una variable de ese tipo, mantiene su ciclo de vida en todo el programa mientras este corriendo el programa.

Un problema común es que cuando se usa static en un método y al mismo tiempo se quiere manipular una variable, esa misma debe ser static sino saldrá error.

static
* se puede usar en toda la clase
* está definido por la palabra reservada static
* utilizamos static para llamar una variable sin utilizar un objeto
* Puede ser accedido indicando el nombre de la clase, la notación punto y el nombre del método
* se invoca en una clase que no tiene instancias de la clase
* las variables static no pertenecen al objeto sino a la clase, se se modifica la variable static esto se verá reflejado en todos los objetos que hayan sido creados con esa clase
* una variable de este tipo, mantiene su ciclo de vida en todo el programa mientras este corriendo el programa
* variable static puede mutarse(cambiar de valor), variable final es inmutable (no puede cambiar de valor)
* Un método estático solo puede acceder a datos estáticos
* método static pertenece a la clase y no al objeto
* un método estático puede llamar solo a otros métodos estáticos y no puede invocar un método no estático a partir de él

con esta clase , me convenzo mas que aprender programacion, es mucho mejor por videos grabados , que clases presenciales, ya que muchas veces en clases presenciales si no entendiste en un punto el resto de la clase seguiras perdido, a menos que tengas que preguntar otra vez , y en general, en un video grabado puedes revisarlo y lo que no entendiste googlearlo para saber a mas profundidad.

Formas de llamar a propiedades/métodos:

  1. A través de los objetos de la clase
  2. A través de la misma clase con los métodos estáticos

Métodos estáticos:
Podemos usarlo en toda la clase
Podemos accesar a ellos usando el nombre de la clase
No necesita instanciar objetos

Las variables y metodos static nos ahorran el crear un objeto y a la vez ahorramos memoria.
Tambien podemos poner nuestras propias constantes y metodos staticos en una clase especifica y mantener el codigo ordenado.

y aquí empieza a salir el demonio de Java

Creo que vi el video 3 veces

Es importante resaltar que cuando se declara un atributo o variable de forma static en una clase, dicho atributo tendrá siempre el mismo valor o contenido para todos los objetos que se creen de dicha clase.

Class Notes

<h3>Static vs Non-Static methods</h3>

Non-Static: They require you to instantiate an object to use them

Static: They don’t need to be instantiated to be used

Example:

public class Calculator {
	
	public static int add(int a, int b){
		return a+b;
	}
}

In this case, whenever you want to use the add(a, b) method you won’t need to “create a new calculator” to use it. Since the method is a static one, we can do:

public class SomeOtherClass {

	public static void main(String[] args) {
		Calculator.add(1,2);
	}
}
<h3>Static vars</h3>

Remember Math.PI? This is an static variable, which means we can use it just by typing the name of the class and the var. An example of this could be:

public class Calculator {

	public static int someVar = 123;
}

Having this we can use the val of the var someVar located in the class Calculator. Ex:

public class SomeOtherClass {

	public static void main(String[] args) {
		int myVar = Calculator.someVar;
	}
}
<h3>Static Imports</h3>

Static imports allow you to use static methods and vars of a program without having to mention its class. Ex: instead of typing Math.PI to access the PI static var, we can just do import static java.lang.Math.*; to get all the static vars and methods from Math. So now we can just type PI, and we will get the same value as if we were to type Math.PI. Honestly, I don’t like this type of approach and will rather just type Math.PI to know its presidency.

Les comparto los apuntes que tome esta clase, es muy completo y leyéndolo podrán comprender o tener noción de lo que vimos en la clase.

**EXELENTES clases de Anahí, es la mejor explicando. LA AMO. su forma de enseñar me hace tenerle amor al aprendizaje **

Para delimitar un poco la función que tiene la palabra reservada Static, lo mejor es pensar en qué atributos de nuestro programa van a tener un valor constante durante toda la ejecución o que cambiarán en muy pocas situaciones, de la misma forma hacerlo con los métodos, y así a ellos otorgarles la característica Static. Esto con la finalidad de que no se ocupe un espacio en memoria con cada objeto que se instancia de esa clase, y en lugar de eso, siempre se use la misma variable que está ocupando un solo lugar en memoria.

Estos aportes están muy buenos. Me gusta Java.

Un descuento por cumpleaños en en total del valor del carrito de compras seria una método static ya que se aplica a todo globalmente.

Si te pasa que te cuesta entender un poco, todo lo que se en este vídeo, tranqui, son esas clases que hay que masticarlas para entenderlas bien, no te preocupes!! Nos vemos más adelante 😃

falta un poco mas de orden en los temas

Me viene a la mente un clase que estoy haciendo para acceder a un web services, del cual tengo sus credenciales como son: usuario, contraseña, cadena; como son valores que no van a cambiar, puedo declararlos como statics y cada vez que requiera algun valor de estos puedo acceder a ellos, sin necesidad de un get así las puedo declarar :

public static String USER = “fulanito”;
public static String PASSWORD= “*****”;
public static String CHAIN = “21212121”;

Esto es muy practico para crear clases con funcionalidades del sistemas como consultas a las base de datos y no tener que instanciar la clase cada vez que queramos usarla. De verdad es muy util.

Las variables estáticas, son accesibles tanto en referencia a la Clase como al objeto; es como que pertenecen propiamente a la clase; les veo gran utilidad como una constante.

static final int variable=3.14;

Excelente forma de compartir todo tu conocimiento, me ha ayudado mucho, gracias

STATIC: llamar una variable sin usar un objeto. Guárdenlo en su mente, lo van a necesitar

Para complementar… piensen en un programa que ejecute todos los cálculos de área y perímetro de distintas formas geométricas bidimensionales y tridimensionales. Claramente a las figuras que basen su forma en un círculo tendrán que usar PI para dichos cálculos. Si usamos distintos métodos en distintas clases, en cada una de ellas usamos un PI declarado sin la palabra reservada Static, en cada método habrá un espacio de memoria diferente para prácticamente el mismo valor: 3,1415… lo cual es inefciente

Siempre me costo entender bien como funciona el static, gracias esto me soluciono varias dudas, como su alcance en que es accedida por medio de los modificadores de acceso , que es usada por medio de otra clase a través del import y que es usada tanto en variables como en métodos.

Buenísima la clase para entender Static. Muchas veces no entendía esto.

Static sirve para crear miembros que pertenecen a la clase, y no a una instancia de la clase. Esto implica, entre otras cosas, que no es necesario crear un objeto de la clase para poder acceder a estos atributos y métodos.

Una variable estática (o static variable) es aquella que pertenece a la clase en lugar de a las instancias (objetos) de la clase. Es decir, las variables estáticas son compartidas por todas las instancias de la clase, y no se crean copias separadas de estas variables para cada objeto. Esto significa que su valor es el mismo para todas las instancias de esa clase, y se accede a ellas utilizando el nombre de la clase, o desde cualquier objeto de la clase.
Yo creo que el scope es amplio,pudiendo ser accedida desde varias instancias. Como ejemplo de este método puede ser el random.
Yo lo que entiendo que es Static permite que esa variable o método sea compartido, visto y usado sin declarar el constructor del objeto en todo el proyecto.
<https://www.youtube.com/watch?v=mvBX4-5-A4o&ab_channel=CharlyCimino> Este video les puede servir para entender mejor lo que hace static
<u>De acuerdo con ChatGPT:</u> Una ***variable estática*** existe independientemente de las instancias individuales de la clase y puede ser accedida por cualquier instancia de la clase, así como por métodos estáticos de la misma clase. Por ejemplo, considera la siguiente clase con una variable estática llamada `counter`: ```java public class Example { public static int counter = 0; public Example() { counter++; } public static void main(String[] args) { Example obj1 = new Example(); Example obj2 = new Example(); System.out.println("Valor del contador: " + Example.counter); } } ``` En este caso, la variable `counter` es estática, por lo que se comparte entre todas las instancias de la clase `Example`. Cuando se crean dos instancias `obj1` y `obj2` de la clase `Example`, el constructor incrementa el valor de `counter` cada vez que se llama. Al final, el programa imprimirá "Valor del contador: 2", ya que `counter` ha sido incrementado dos veces. ¡Saludos!

La particularidad de static, es que los objetos que se crean apartir de un molde, es decir de una clase, comparten todos un mismo estado de esa variable static. Estas tienen una unica copia para todos los objetos. Deben ser usadas dentor de comportamientos (metodos) que sean static.

La diferencia entre una clase y objeto. Recordar que la clase es el molde donde dejamos la abstraccion del objeto que este caso son sus atributos y sus metodos, y gracias al objeto esque podemos definirle datos a esos atributos y tambien llamar a los metodos.
![]()![](https://static.platzi.com/media/user_upload/Variables%20%26%20Metodos%20Estaticos-c51b8e28-8adb-4ea0-83d4-643cbf2c7a12.jpg)
Me siento feliz que pude hacer el ejemplo de la calculadora. Se los comparto:public class Calculadora { public static int sumaDosNumeros(int a, int b){ return a+b; } } ```java public class Calculadora { public static int sumaDosNumeros(int a, int b){ return a+b; } } ```import java.util.Scanner; public class Main { public static void main(String \[] Args){ Scanner teclado = new Scanner(System.*in*); System.*out*.print("Ingrese el primer numero.: "); int a = teclado.nextInt(); System.*out*.print("Ingrese el segundo numero: "); int b = teclado.nextInt(); int suma = Calculadora.*sumaDosNumeros*(a,b); System.*out*.println("La suma de los dos numeros es: "+suma); } }```java import java.util.Scanner; public class Main { public static void main(String [] Args){ Scanner teclado = new Scanner(System.in); System.out.print("Ingrese el primer numero.: "); int a = teclado.nextInt(); System.out.print("Ingrese el segundo numero: "); int b = teclado.nextInt(); int suma = Calculadora.sumaDosNumeros(a,b); System.out.println("La suma de los dos numeros es: "+suma); } } ```![](https://static.platzi.com/media/user_upload/Screenshot%202023-12-05%20185436-4fe64301-a436-436e-8aef-6f9dc0d415b8.jpg)
en este curso mencionan mucho de un curso anterior de java basico se, pero al parecer ya no está
static es una palabra reservada que se usa para que al llamar una variable o un metodo, no haya que instanciar al objeto

Dentro de mi planteamiento de proyecto a resolver un sismta pos es el nombre de la compañia , numero de Nit y y datos planos el cual es trasversal a facturas ,ventas e interfaces de la siguiente manera

public class Name {
public static String company (){
return "Sistema de POS Integrado ";
}
}
y en mi metodo principal

System.out.println(Name.company());

Me gustaria saber si la opciones es la mas indicada hasta el momento del curso.

Palabras reservadas las que tengo para tí, amor mío.

Tanto las variables como los métodos **estáticos **en Java se relacionan con la clase en sí en lugar de con instancias específicas. Son útiles para compartir información y funcionalidades entre todas las instancias de la clase sin la necesidad de crear objetos adicionales.

Static Se utilizan para almacenar información que es común a todas las instancias de la clase, como contadores, constantes compartidas, etc.

Clases y objetos. Es necesario aprender bien esa diferencia.

public class MiClase {
public static int contador;

public static void main(String[] args) {
    MiClase.contador = 10; // Acceso a la variable estática
    System.out.println(MiClase.contador); // Imprime 10
    
    MiClase instancia1 = new MiClase();
    MiClase instancia2 = new MiClase();
    
    instancia1.contador = 20; // Acceso a la variable estática a través de la instancia1
    System.out.println(instancia2.contador); // Imprime 20
}

}

Aquí mi aporte, me costo, pero lo logre finalizar.🤒

Archivo EjemploStatic.java

public class EjemploStatic {
    public static int contador = 1; // Variable estática
    
    public void contarHastaDiez() {
        while (contador <= 10) {
            System.out.println("Contador: " + contador);
            incrementarContador();
        }
    }
    
    public static void incrementarContador() {
        contador++;
    }
}

Archivo Main.java

public class Main {
    public static void main(String[] args) {
        EjemploStatic objeto1 = new EjemploStatic();
        EjemploStatic objeto2 = new EjemploStatic();
        
        objeto1.contarHastaDiez();
        objeto2.contarHastaDiez();
    }
}

Si quedaron con dudas en esta clase, les recomiendo ver este video que ayudo machismo a entender el método static video

Metodos estaticos

Se pueden usar en toda la clase
Esta difinido por static
Pueden ser accesados indicando el nombre de la clase
Se invocaen una clase que no tiene instancias de la clase

Variables estaticas
Puede que la variable este declarada en la clase C. Si la variable no es alterada por la clase b, sino que fue alterada por la clase a, la variable estatica mantiene su ciclo en todo el programa.

Se pueden declarar con la clave import con la palabra static

Clase es el molde
Objeto es creado a partir de la clase

Hay otra forma de llamar metodos
Hay metodos estaticos como Math.rando();

Los metodos estaticos se pueden usar en toda la clase
Siempre va estar definido por la palabra static

Se usa para llamar una variable sin utilizar un objeto
Pueden ser accesado usando el nombre de la clase, la notacion punto y el nombre del metodo.

Se invoca en una clase que no tiene instancias de la clase.

En el encabezado podemos llamar los metodos static con la palabra import static

en una pregunta para la certificación de este curso preguntan “si se puede usar atributos static para no tener que instanciar un objeto y ahorrar memoria” y tienen la respuesta como “verdadero” pero esto esta mal, en realidad uno no utiliza los “atributos” static para no tener que hacer la instancia de un objeto , lo que uno realmente ocupa son los “métodos estáticos” , si me podrian responder porque pusieron esa respuesta les agradeceria.

Algunas consideraciones.

Tanto las variables estáticas y métodos estáticos son accesibles
desde cualquier instancia de la clase. Lo más común es usarlos de forma directa con el nombre de la clase, pero si se pueden acceder desde cada una de las instancias.

Use el ejercicio pasado de esta manera.

<public class Doctor {
    static int globalId = 0;
    int id;
    String name;
    String speciality;

    public Doctor(){
        id = ++Doctor.globalId;
    }

    public Doctor(String name, String speciality) {
        this();
        this.name = name;
        this.speciality = speciality;
    }

    @Override
    public String toString() {
        final StringBuffer sb = new StringBuffer("Doctor{");
        sb.append("id=").append(id);
        sb.append(", name='").append(name).append('\'');
        sb.append(", speciality='").append(speciality).append('\'');
        sb.append('}');
        return sb.toString();
    }
}
> 

Main

<public class Main {
    public static void main(String[] args) {
        Doctor myDoctor = new Doctor("jesus","medico");
        Doctor myDoctor1 = new Doctor("jose","medico");


        System.out.println(myDoctor);
        System.out.println(myDoctor1);


    }
}> 
public static String globalUserLogged = "anonimous";

En Java SE existen dos formas para llamar métodos:

  1. Utilizando el método de la instancia que se creo.
  2. Definiendo el método como estático y llamarlo a partir del nombre de la clase.

Para el caso de la lectura de datos incorpore JOPane para tener una “mejor interfaz grafica”

package com.mycompany.citasmedicas;
import java.util.Scanner;
import javax.swing.JOptionPane;

public class UIMenu {
    
    static void showMenu(){
        int response = 0;
        do {
            response = Integer.parseInt(JOptionPane.showInputDialog("Welcome to My Appointments \n"
                    + "Selecciona la opción deseada \n1. Doctor \n2. Patient \n0. Salir"));

            switch (response){
                case 1:
                    JOptionPane.showMessageDialog(null, "Doctor");
                    break;
                case 2:
                    response = 0;
                    showPatientMenu();
                    break;
                case 0:
                    JOptionPane.showMessageDialog(null, "Thank you for you visit");
                    break;
                default:
                    JOptionPane.showMessageDialog(null, "Please select a correct answer");
            }
        }while (response != 0);
    }
    
    
    
    
     public static void showPatientMenu(){
        int response = 0;
        do {
            response = Integer.parseInt(JOptionPane.showInputDialog("Patient"
                    + "\n 1. Book an appointment \n 2. My appointments \n 0. Return" ));

            switch (response){
                case 1:
                    JOptionPane.showMessageDialog(null, "::Book an appointment");
                    System.out.println("");
                    break;
                case 2:
                    JOptionPane.showMessageDialog(null, "::My appointments");
                    break;
                case 0:
                    showMenu();
                    break;
            }
        }while (response != 0);
    }

}

Aclaración: static final significa que la variable es constante, es decir que no cambiará su valor.

Sugerencia para los demás cursos para Anahi salgado: primero tal vez tiene un manejo y conocimiento del tema pero le falta aclarar sus ideas ya que en varios temas se enreda con conceptos definiciones y ejemplos

  • Utilizamos static para llamar una variable sin utilizar un objeto.
  • Utilizaremos los objetos para llamar métodos.
  • MÉTODOS STATIC:
  1. Puede se accesado indicando el nombre de la clase, a notación punto y el nombre del método.
  2. Se invoca de una clase que no tiene instancias de la clase.
  • EL método suma es de tipo suma.
  • MÉTODO STATIC:
  1. Se puede usar en toda la clase.
  2. Esta definido por la palabra reservada static
  • Los métodos y variables estáticos nos ayudan a ejecutar o conseguir algún código desde clases no han sido instanciadas, ya que sus valores se guardan en la memoria de nuestro programa, no en diferentes objetos instanciados a través de una clase.
    -Las variables estáticas mantienen su valor durante todo el ciclo de vida de nuestro programa, por lo tanto, podemos alterar los valores de una variable estática desde una clase y consumir su valor alterado desde otra sin necesidad de conectar ambas clases.

Me gusta porque se usa cosas de otros cursos haciendo que tenga sentido lo que se vio antes y mas rico este curso!

Una variable de clase es cualquier campo declarado con el staticmodificador; esto le dice al compilador que existe exactamente una copia de esta variable, independientemente de cuántas veces se haya instanciado la clase. Un campo que defina el número de marchas para un tipo particular de bicicleta podría marcarse como, staticya que conceptualmente se aplicará el mismo número de marchas a todos los casos.

Una variable Static es una variable que existe cuando se ejecuta el programa, es una variable que existe por la clase y cuyo valor asignado puede ser accedido sin necesidad de que exista un objeto de la clase. El alcance (scope) creo que es global, se puede acceder globarlmente, creo.

Existen dos maneras de hacer uso de los métodos, uno es por medio de las instancias y el segundo por medio de los métodos estáticos llamándolos a partir del nombre de la clase, una ventaja de esto es que puede usarse en toda la clase, además está definido por la palabra reservada static.

Las constantes son variables de tipo estático.

Los métodos static se pueden usar en toda la clase.

Utilizamos static para llamar una variable sin utilizar un objeto. Pueden ser accesados indicando el nombre de la clase.

El scope del método static aplica para todas las clases. Mantiene su ciclo de vida en todo el programa. Puede ser alterada o llamada entre las clases.

podria ser algo como asi?

public class Ejecutor {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Estudiante e1 = new Estudiante();
		e1.mostrarInfo();
		Estudiante e2 = new Estudiante();
		e2.mostrarInfo();
		// accediendo a la variable b static de la clase creada
		e1.b++; // incrementa en 1
		// Accediendo directamente desde la clase, sin instanciar un objeto
		Estudiante.b++; // incrementa en 1
		// como se puede ver la variable b static es compartida por todas las
		// instancia de la clase
		e2.mostrarInfo();
	}
}

class Estudiante {
	int a; // se inicializa en cero por cada objeto creado
	static int b; // se inicializa en cero cuando la clase es cargada y no por
					// cada objeto creado

	Estudiante() {
		// Constructor que incremente en 1 la variable static b
		b++;
	}

	public void mostrarInfo() {
		System.out.println("Valor de a = " + a);
		System.out.println("Valor de b = " + b);
	}
	// en un método static solo puede declar o llamar variables static
	// se puede descomentar para ver el error
	// public static void incrementar(){
	// a++;
	// }
}

Un uso de variable “static” podria ser como un contador de instancias de objetos. En este caso, la cantidad de doctores.

un valor de tipo estatico puede ser la fecha en la que se agenda la cita.

Variable static en atributos:
solo deben ser atributos estaticos cuando el valor no cambie en toda la aplicacion

Variable static en metodos:
Solo si el comportamiento no va cambiar

NOTA:
hay que tener en cuenta que si usamos static es por que:
1.- la variable va ser implementada, mas no modificada
2.- el metodo va ser unico e inmodificable.
3.- no repercutira en la aplicacion el cambio realizado.

Métodos y variables estáticos.
Utilizados para definir datos estáticos en la clase, donde son guardados en el programa.
Para utilizar los métodos estáticos, los importamos en la cabecera de nuestros programas sin la necesidad de que sean creados en la clase, y así poder consumir su valor alterado en dicha clase que estemos codificando, sin la necesidad de que tengan una relación.

Debido a esto, las variables static, mantienen su valor en todo el ciclo de vida del programa.

Otra forma de acceder a las variables estáticas es importándolas con la clase.

Otra forma de acceder a las variables estáticas es importándolas con la clase.

Otra forma de acceder a las variables estáticas es importándolas con la clase.

Otra forma de acceder a las variables estáticas es importándolas con la clase.

Otra forma de acceder a las variables estáticas es importándolas con la clase.

Otra forma de acceder a las variables estáticas es importándolas con la clase.

Forma de declarar y llamar una variable estática perteneciente a una clase

Forma de declarar y llamar a un método estático perteneciente a una clase.

Las variables y métodos estáticos en Java sirven para que puedan ser accedidos desde cualquier parte del código (inclusive desde otras clases) sin tener que crear un objeto. Un ejemplo muy común en donde se puede utilizar variables estáticas es cuando se necesita definir una configuración global en un proyecto.

Creo que el alcance de las variables Static serian algo asi como Protected.

Una Variable del tipo Static

public class Doctor {
    //Atributos.
    static int id;
    String name;
    String speciality;
    Doctor(){
        System.out.println("Costruyendo el Objeto Doctor");
    };

Creo que una variable static podría ser la variable conexion de una clase que conectora de base de datos.

Un ejemplo para una variable static es cuando se requiere llevar un registro consecutivo. Por ejemplo se tienen distintas clases y al momento de crear un objeto el contador valla sumando +1 sin importar la clase de la cual fue creado el objeto.

las propiedades static equivalen en lenguaje C a los #define y sirven para definir constantes y hacen el código más legible.

Si a alguien le sirve 😄 aquí están mis apuntes de las clase 😄

Para mi una variable estática es aquella que va a tener un alcance amplio en un desarrollo y la podre alteras en diferentes clases, se me ocurre como variable el nombre de "estado_Materia" puede haber diferentes entornos en el cual el estado puede cambiar por ejemplo puede ser "Sólido, Líquido y Gaseoso"... Yo puedo tener una masa y esta puede cambiar en muchos entornos.

static es un tipo de variable o método que se usa en toda la clase sin necesidad de instanciar un objeto, si ponemos static final entonces básicamente estamos declarando una constante cuyo valor no cambia

Un ejemplo muy común de las variables estáticas es contar el número de instancias que se han creado de una clase:

public class Flor {

    public static int totalDeFlores = 0;

    Flor(){
        totalDeFlores++;
    }
}

Considero que al crear y usar una variable estatica es como si crearamos una variable global que va estar presente en todo la ejecucción del programa, logicamente tiene una sintaxis diferente, pero basicamente es una variable que va ser global ya que esta presente en toda la ejecuón

Tenia problemas para comprender este tipo de dato. Esta clase fue de gran ayuda.

Los miembros estáticos mantiene su valor en toda la ejecución del programa. y no necesita crearse una referencia en memoria para ser accedidos

🤔 Una variable o método estático, puede ser usada en todas las clases que la implementen.







las variables estáticas son muy útiles para las clases de utilidades ya que son estándar de tal forma que ser importada pueda obtener los valores de la misma

Los métodos y variables estáticos podemos accederlos sin un objeto, es decir, no es necesario instanciar la clase para poder acceder a sus métodos y variables estáticos. El ciclo de vida de las variables estáticas es constante durante la ejecución del programa.
static es la palabra reservada para definir que un método o variable es estático.

Definir el ID como estático no me parece lo ideal porque es modificado con cada nueva instancia. Por esto definí una ID Global que registrará el último ID usado y ese sí lo definí como estático.

<h4>Main.java</h4>
public class Main {
    public static void main(String[] args) {
        Doctor doctor = new Doctor("Victor1");
        Doctor doctor2 = new Doctor("Victor2");
        Doctor doctor3 = new Doctor("Victor3");
//        doctor.name = "Victor Inojosa";
        doctor.showName();
        doctor2.showName();
        doctor3.showName();
        doctor.showId();
        doctor2.showId();
        doctor3.showId();
    }
}
<h4>Doctor.java</h4>
public class Doctor {
    static int globalId; //este id es global, no es unico para la instancia
    int id; //este es el id unico de la instancia
    String name;
    String specialty;

    Doctor(String name){
        System.out.println("Creating Doctor object");
        this.name = name;
        id = ++globalId;
    }

    public void showName(){
        System.out.println(name);
    }

    public void showId(){
        System.out.println("El ID es: " + id);
    }
}

No puedo usar el JDK ! Ahora hay que pegar $150

Static tiene un scope para todas las clases

El método estático en Java es un método que pertenece a la clase y no al objeto. Un método estático solo puede acceder a datos estáticos.

Es un método que pertenece a la clase y no al objeto (instancia)
Un método estático solo puede acceder a datos estáticos. No puede acceder a datos no estáticos (variables de instancia)
Un método estático puede llamar solo a otros métodos estáticos y no puede invocar un método no estático a partir de él.
Un método estático se puede acceder directamente por el nombre de la clase y no necesita ningún objeto
Un método estático no puede hacer referencia a “este” o “super” palabras clave de todos modos

Un ejemplo de variable static podría ser en contador de las citas asignadas al la clase doctor.