Clase Java.lang.System en Java

Entre las facilidades proporcionadas por la clase System se encuentran flujos de entrada estándar, salida estándar y salida de error; acceso a propiedades definidas externamente y variables de entorno; un medio para cargar archivos y bibliotecas; y un método de utilidad para copiar rápidamente una parte de una array. Extiende la clase Object. 

Campos: 

  1. InputStream público estático final en: El flujo de entrada «estándar». Este flujo ya está abierto y listo para proporcionar datos de entrada. Por lo general, esta secuencia corresponde a la entrada del teclado u otra fuente de entrada especificada por el usuario o el entorno del host.
  2. PrintStream final público estático out: El flujo de salida «estándar». Este flujo ya está abierto y listo para aceptar datos de salida. Por lo general, este flujo corresponde a la salida de la pantalla u otro destino de salida especificado por el usuario o el entorno del host.
  3. public static final PrintStream err: el flujo de salida de error «estándar». Este flujo ya está abierto y listo para aceptar datos de salida. 
    Por lo general, este flujo corresponde a la salida de la pantalla u otro destino de salida especificado por el usuario o el entorno del host. Por convención, este flujo de salida se usa para mostrar mensajes de error u otra información que debe llamar la atención inmediata de un usuario, incluso si el flujo de salida principal, el valor de la variable out, se ha redirigido a un archivo u otro destino que es por lo general, no se monitorea continuamente.

Métodos:  

1. static void arraycopy (origen del objeto, int sourceStart, Object Target, int targetStart, int size): copia una array. La array que se va a copiar se pasa en source, y el índice en el que comenzará la copia dentro de source se pasa en sourceStart. La array que recibirá la copia se pasa en destino, y el índice en el que comenzará la copia dentro del destino se pasa en targetStart. El tamaño es el número de elementos que se copian. 

Syntax: public static void arraycopy(Object source, 
int sourceStart, Object Target, int targetStart, int size)
Returns: NA.
Exception: 
IndexOutOfBoundsException - if copying would cause access of data 
outside array bounds.
ArrayStoreException - if an element in the source array could not 
be stored into the target array because of a type mismatch.
NullPointerException - if either source or target is null.

Java

// Java code illustrating arraycopy() method
import java.lang.*;
import java.util.Arrays;
class SystemDemo
{
    public static void main(String args[])
    {
        int[] a = {1, 2, 3, 4, 5};
        int[] b = {6, 7, 8, 9, 10};
         
        System.arraycopy(a, 0, b, 2, 2);
         
        // array b after arraycopy operation
        System.out.println(Arrays.toString(b));
         
    }
}

Producción: 

[6, 7, 1, 2, 10]

2. ClearProperty de string estática (clave de string): elimina la propiedad del sistema indicada por la clave especificada. 

Syntax: public static String clearProperty(String key)
Returns: the previous string value 
of the system property, or null if there was no property 
with that key.
Exception: 
SecurityException - if a security manager exists and its 
checkPropertyAccess method doesn't allow 
access to the specified system property.
NullPointerException - if key is null.
IllegalArgumentException - if key is empty.

3. static String getProperty(String key): Obtiene la propiedad del sistema indicada por la clave especificada. 

Syntax: public static String getProperty(String key)
Returns: the string value of the system 
property, or null if there is no property with that key.
Exception: 
SecurityException - if a security manager exists and its 
checkPropertyAccess method doesn't allow access to the 
specified system property.
NullPointerException - if key is null.
IllegalArgumentException - if key is empty.

4. static String getProperty(String key, String def): Obtiene la propiedad del sistema indicada por la clave especificada. 

Syntax: public static String getProperty(String key, String def)
Returns: the string value of the system property,
 or the default value if there is no property with that key.
Exception: 
SecurityException - if a security manager exists and its 
checkPropertyAccess method doesn't allow access to the 
specified system property.
NullPointerException - if key is null.
IllegalArgumentException - if key is empty.

5. SetProperty de string estática (clave de string, valor de string): establece la propiedad del sistema indicada por la clave especificada. 

Syntax: public static String setProperty(String key, String value)
Returns: the previous value of the system 
property, or null if it did not have one.
Exception: 
SecurityException - if a security manager exists and its checkPermission 
method doesn't allow setting of the specified property.
NullPointerException - if key or value is null.
IllegalArgumentException - if key is empty.

Java

// Java code illustrating clearProperty(), getProperty()
// and setProperty() methods
import java.lang.*;
import static java.lang.System.clearProperty;
import static java.lang.System.setProperty;
import java.util.Arrays;
class SystemDemo
{
    public static void main(String args[])
    {
        // checking specific property
        System.out.println(System.getProperty("user.home"));
         
        // clearing this property
        clearProperty("user.home");
         
        System.out.println(System.getProperty("user.home"));
         
        // setting specific property
        setProperty("user.country", "US");
         
        // checking property
        System.out.println(System.getProperty("user.country"));
         
        // checking property other than system property
        // illustrating getProperty(String key, String def)
        System.out.println(System.getProperty("user.password",
              "none of your business"));
    }
}

Producción: 

/Users/abhishekverma
null
US
none of your business

6. Consola estática console(): Devuelve el objeto único de Consola asociado con la máquina virtual Java actual, si existe. 

Syntax: public static Console console()
Returns: The system console, if any, otherwise null.
Exception: NA

Java

// Java code illustrating console() method
import java.io.Console;
import java.lang.*;
import java.util.Currency;
import java.util.Locale;
class SystemDemo
{
    public static void main(String args[]) throws NullPointerException
    {
         
        Console c = System.console();
        if(c != null)
        {
           Currency currency = Currency.getInstance(Locale.ITALY);
           c.printf(currency.getSymbol());
            c.flush();
        }
        else
            System.out.println("No console attached");
    }
}

Producción: 

No console attached

7. static long currentTimeMillis(): Devuelve la hora actual en milisegundos. Tenga en cuenta que, si bien la unidad de tiempo del valor devuelto es un milisegundo, la granularidad del valor depende del sistema operativo subyacente y puede ser mayor. Por ejemplo, muchos sistemas operativos miden el tiempo en unidades de decenas de milisegundos. 

Syntax: public static long currentTimeMillis()
Returns: the difference, measured in milliseconds,
 between the current time and midnight, January 1, 1970 UTC.
Exception: NA.

8. static long nanoTime(): Devuelve el valor actual de la fuente de tiempo de alta resolución de la máquina virtual Java en ejecución, en nanosegundos. 

Syntax: public static long nanoTime()
Returns: the current value of the running Java
 Virtual Machine's high-resolution time source, in nanoseconds
Exception: NA

Java

// Java code illustrating currentTimeMillis() method
import java.lang.*;
class SystemDemo
{
    public static void main(String args[]) throws NullPointerException
    {
        System.out.println("difference between the "
                + "current time and midnight,"
                + " January 1, 1970 UTC is: " +
                System.currentTimeMillis());
        System.out.println("current time in "
                + "nano sec: " +
                System.nanoTime());
    }
}

Producción: 

difference between the current time 
and midnight, January 1, 1970 UTC is: 
1499520649545
current time in nano sec: 29976939759226

9. salida de vacío estático (estado int): finaliza la máquina virtual Java que se está ejecutando actualmente. El argumento sirve como código de estado; por convención, un código de estado distinto de cero indica una terminación anormal. 
Este método llama al método de salida en la clase Runtime. Este método nunca regresa normalmente. 
La llamada System.exit(n) es efectivamente equivalente a la llamada: 
Runtime.getRuntime().exit(n) 

Syntax: public static void exit(int status)
Returns: NA
Exception: 
SecurityException - if a security manager exists and its 
checkExit method doesn't allow exit with the specified status.

Java

// Java code illustrating exit() method
import java.lang.*;
class SystemDemo
{
    public static void main(String args[]) throws NullPointerException
    {
        System.gc();
        System.out.println("Garbage collector executed ");
         
        System.out.println(System.getProperty("os.name"));
         
        System.exit(1);
         
        // this line will not execute as JVM terminated
        System.out.println("JVM terminated");
    }
}

Producción: 

Garbage collector executed 
Mac OS X

10. static void gc(): Ejecuta el recolector de basura. Llamar al método gc sugiere que la máquina virtual de Java amplíe sus esfuerzos para reciclar objetos no utilizados a fin de que la memoria que ocupan actualmente esté disponible para su reutilización rápida. Cuando el control regresa de la llamada al método, la máquina virtual de Java ha hecho un gran esfuerzo para recuperar espacio de todos los objetos descartados. 

Syntax: public static void gc()
Returns: NA
Exception: NA

Java

// Java code illustrating gc() method
import java.lang.*;
class SystemDemo
{
    public static void main(String args[])
    {
        Runtime gfg = Runtime.getRuntime();
        long memory1, memory2;
        Integer integer[] = new Integer[1000];
  
        // checking the total memory
        System.out.println("Total memory is: "
                           + gfg.totalMemory());
  
        // checking free memory
        memory1 = gfg.freeMemory();
        System.out.println("Initial free memory: "
                                      + memory1);
  
        // calling the garbage collector on demand
        System.gc();
  
        memory1 = gfg.freeMemory();
  
        System.out.println("Free memory after garbage "
                           + "collection: " + memory1);
  
        // allocating integers
        for (int i = 0; i < 1000; i++)
            integer[i] = new Integer(i);
  
        memory2 = gfg.freeMemory();
        System.out.println("Free memory after allocation: "
                           + memory2);
  
        System.out.println("Memory used by allocation: " +
                                    (memory1 - memory2));
  
        // discard integers
        for (int i = 0; i < 1000; i++)
            integer[i] = null;
  
        System.gc();
  
        memory2 = gfg.freeMemory();
        System.out.println("Free memory after  "
            + "collecting discarded Integers: " + memory2);
    }
}

Producción: 

Total memory is: 128974848
Initial free memory: 126929976
Free memory after garbage collection: 128632160
Free memory after allocation: 127950520
Memory used by allocation: 681640
Free memory after  collecting discarded Integers: 128643472

11. Mapa estático getenv(): Devuelve una vista de mapa de strings no modificable del entorno del sistema actual. El entorno es un mapeo dependiente del sistema de nombres a valores que se pasa de los procesos primarios a los secundarios. 
Si el sistema no admite variables de entorno, se devuelve un mapa vacío. 

Syntax: public static Map getenv()
Returns: the environment as a map of variable names to values.
Exception: 
SecurityException - if a security manager exists and its 
checkPermission method doesn't allow access to the process 
environment

12. static String getenv(String name): Obtiene el valor de la variable de entorno especificada. Una variable de entorno es un valor con nombre externo dependiente del sistema. 
Las propiedades del sistema y las variables de entorno son asignaciones conceptuales entre nombres y valores. Ambos mecanismos se pueden utilizar para pasar información definida por el usuario a un proceso Java. Las variables de entorno tienen un efecto más global, porque son visibles para todos los descendientes del proceso que las define, no solo para el subproceso Java inmediato. Pueden tener una semántica sutilmente diferente, como la insensibilidad a mayúsculas y minúsculas, en diferentes sistemas operativos. Por estas razones, es más probable que las variables ambientales tengan efectos secundarios no deseados. Es mejor utilizar las propiedades del sistema siempre que sea posible. Las variables de entorno deben usarse cuando se desea un efecto global o cuando una interfaz de sistema externo requiere una variable de entorno (como PATH). 

Syntax: public static String getenv(String name)
Returns: the string value of the variable,
 or null if the variable is not defined in the system environment.
Exception: 
NullPointerException - if name is null
SecurityException - if a security manager exists and 
its checkPermission method doesn't allow access to the
 environment variable name.

Java

// Java code illustrating getenv() method
import java.lang.*;
import java.util.Map;
import java.util.Set;
class SystemDemo
{
    public static void main(String args[])
    {
        Map<String, String> gfg = System.getenv();
        Set<String> keySet = gfg.keySet();
        for(String key : keySet)
        {
            System.out.println("key= " + key);
        }
         
        // checking specific environment variable
        System.out.println(System.getenv("PATH"));
    }
}

Producción: 

key= JAVA_MAIN_CLASS_5396
key= PATH
key= J2D_PIXMAPS
key= SHELL
key= USER
key= TMPDIR
key= SSH_AUTH_SOCK
key= XPC_FLAGS
key= LD_LIBRARY_PATH
key= __CF_USER_TEXT_ENCODING
key= Apple_PubSub_Socket_Render
key= LOGNAME
key= LC_CTYPE
key= XPC_SERVICE_NAME
key= PWD
key= JAVA_MAIN_CLASS_2336
key= SHLVL
key= HOME
key= _
/usr/bin:/bin:/usr/sbin:/sbin

13. Propiedades estáticas getProperties(): Determina las propiedades del sistema actual. 

Syntax: public static Properties getProperties()
Returns: the system properties.
Exception: 
SecurityException - if a security manager exists and 
its checkPropertiesAccess method doesn't allow access 
to the system properties.

Java

// Java code illustrating getProperties() method
import java.lang.*;
import java.util.Properties;
import java.util.Set;
class SystemDemo
{
    public static void main(String args[])
    {
        Properties gfg = System.getProperties();
        Set<Object> keySet = gfg.keySet();
        for(Object key : keySet)
        {
            System.out.println("key= " + key);
        }
    }
}

Producción: 

key= java.runtime.name
key= sun.boot.library.path
key= java.vm.version
key= user.country.format
key= gopherProxySet
key= java.vm.vendor
key= java.vendor.url
key= path.separator
key= java.vm.name
key= file.encoding.pkg
key= user.country
key= sun.java.launcher
key= sun.os.patch.level
key= java.vm.specification.name
key= user.dir
key= java.runtime.version
key= java.awt.graphicsenv
key= java.endorsed.dirs
key= os.arch
key= java.io.tmpdir
key= line.separator
key= java.vm.specification.vendor
key= os.name
key= sun.jnu.encoding
key= java.library.path
key= java.specification.name
key= java.class.version
key= sun.management.compiler
key= os.version
key= http.nonProxyHosts
key= user.home
key= user.timezone
key= java.awt.printerjob
key= file.encoding
key= java.specification.version
key= java.class.path
key= user.name
key= java.vm.specification.version
key= sun.java.command
key= java.home
key= sun.arch.data.model
key= user.language
key= java.specification.vendor
key= awt.toolkit
key= java.vm.info
key= java.version
key= java.ext.dirs
key= sun.boot.class.path
key= java.vendor
key= file.separator
key= java.vendor.url.bug
key= sun.io.unicode.encoding
key= sun.cpu.endian
key= socksNonProxyHosts
key= ftp.nonProxyHosts
key= sun.cpu.isalist

14. SecurityManager estático getSecurityManager(): Obtiene la interfaz de seguridad del sistema. 

Syntax: static SecurityManager getSecurityManager()
Returns: if a security manager has 
already been established for the current application,
 then that security manager is returned; otherwise, 
null is returned.
Exception: NA

15. static void setSecurityManager(SecurityManager s): establece la seguridad del sistema. 

Syntax: public static void setSecurityManager(SecurityManager s)
Returns: NA.
Exception: 
SecurityException - if the security manager has 
already been set and its checkPermission method 
doesn't allow it to be replaced.

Java

// Java code illustrating setSecurityManager()
// and getSecurityManager() method
import java.lang.*;
class SystemDemo
{
    public static void main(String args[])
    {
        SecurityManager gfg = new SecurityManager();
         
        // setting the security manager
        System.setSecurityManager(gfg);
         
        gfg = System.getSecurityManager();
        if(gfg != null)
            System.out.println("Security manager is configured");
    }
}

Producción: 

Security manager is configured

16. static void setErr(PrintStream err): reasigna el flujo de salida de error «estándar». 

Syntax: public static void setErr(PrintStream err)
Returns: NA
Exception: 
SecurityException - if a security manager exists and its
 checkPermission method doesn't allow reassigning of the
 standard error output stream.

17. static void setIn(InputStream in): reasigna el flujo de entrada «estándar». 

Syntax: public static void setIn(InputStream in)
Returns: NA.
Exception: 
SecurityException - if a security manager exists and its
 checkPermission method doesn't allow reassigning of the
 standard input stream.

18. static void setOut(PrintStream out): reasigna el flujo de salida «estándar». 

Syntax: public void setOut(PrintStream out)
Returns: NA
Exception: 
SecurityException - if a security manager exists and its
 checkPermission method doesn't allow reassigning of the
 standard output stream.

Java

// Java code illustrating setOut(), setIn() and setErr() method
import java.lang.*;
import java.util.Properties;
import java.io.*;
class SystemDemo
{
    public static void main(String args[])  throws IOException 
    {
        FileInputStream IN = new FileInputStream("input.txt");
        FileOutputStream OUT = new FileOutputStream("system.txt");
         
        // set input stream
        System.setIn(IN);
        char c = (char) System.in.read();
        System.out.print(c);
         
        // set output stream
        System.setOut(new PrintStream(OUT));
        System.out.write("Hi Abhishek\n".getBytes());
         
        // set error stream
        System.setErr(new PrintStream(OUT));
        System.err.write("Exception message\n".getBytes());
    }
}

Salida: la salida del código Java anterior depende del contenido del archivo «input.txt». 
Cree su propio «input.txt», luego ejecute el código y verifique la salida. 
 

19. carga vacía estática (nombre de archivo de string): carga un archivo de código con el nombre de archivo especificado del sistema de archivos local como una biblioteca dinámica. El argumento del nombre de archivo debe ser un nombre de ruta completo. 

Syntax: public static void load(String filename)
Returns: NA
Exception: 
SecurityException - if a security manager exists and
 its checkLink method doesn't allow loading of the specified
 dynamic library
UnsatisfiedLinkError - if the file does not exist.
NullPointerException - if filename is null

20. static void loadLibrary(String libname): carga la biblioteca del sistema especificada por el argumento libname. La forma en que un nombre de biblioteca se asigna a la biblioteca real del sistema depende del sistema. 

Syntax: public static void loadLibrary(String libname)
Returns: NA
Exception: 
SecurityException - if a security manager exists and its 
checkLink method doesn't allow loading of the specified dynamic
 library
UnsatisfiedLinkError - if the library does not exist.
NullPointerException - if libname is null

21. static String mapLibraryName(String libname): asigna un nombre de biblioteca a una string específica de la plataforma que representa una biblioteca nativa. 

Syntax: public static String mapLibraryName(String libname)
Returns: a platform-dependent native library name.
Exception: NullPointerException - if libname is null

22. static void runFinalization(): ejecuta los métodos de finalización de cualquier objeto pendiente de finalización. Llamar a este método sugiere que la máquina virtual de Java amplíe sus esfuerzos para ejecutar los métodos de finalización de los objetos que se han descartado pero cuyos métodos de finalización aún no se han ejecutado. Cuando el control vuelve de la llamada al método, la máquina virtual de Java ha hecho todo lo posible para completar todas las finalizaciones pendientes. 

Syntax: public static void runFinalization()
Returns: NA
Exception: NA.

Java

// Java code illustrating runFinalization(), load()
// loadLibrary() and mapLibraryName() method
import java.lang.*;
class SystemDemo
{
    public static void main(String args[]) throws NullPointerException
    {
  
        // map library name
        String libName = System.mapLibraryName("os.name");
        System.out.println("os.name library= " + libName);
  
        //load external libraries
        System.load("lixXYZ.so");
        System.loadLibrary("libos.name.dylib");
  
        //run finalization
        System.runFinalization();
  
 
    }
}

Producción: 

os.name library= libos.name.dylib

23. static int IdentityHashCode(Objeto x): devuelve el mismo código hash para el objeto dado que devolvería el método predeterminado hashCode(), ya sea que la clase del objeto dado anule o no hashCode(). El código hash para la referencia nula es cero. 

Syntax: public static int identityHashCode(Object x)
Returns: the hashCode.
Exception: NA.

24. Canal estático heredadoChannel(): Devuelve el canal heredado de la entidad que creó esta máquina virtual Java. 

Syntax: public static Channel inheritedChannel().
Returns:  inherited channel, if any, otherwise null.
Exception: 
IOException - If an I/O error occurs
SecurityException - If a security manager is present and
 it does not permit access to the channel.

25. static String lineSeparator(): Devuelve la string del separador de línea dependiente del sistema. Siempre devuelve el mismo valor: el valor inicial del separador de línea de propiedad del sistema. 

Syntax: public static String lineSeparator()
Returns: On UNIX systems, it returns "\n";
 on Microsoft Windows systems it returns "\r\n".
Exception: NA

Java

// Java code illustrating lineSeparator(), inherentChannel()
// and identityHashCode() method
import java.io.IOException;
import java.lang.*;
import java.nio.channels.Channel;
class SystemDemo
{
    public static void main(String args[])
            throws NullPointerException,
            IOException
    {
  
        Integer x = 400;
        System.out.println(System.identityHashCode(x));
         
        Channel ch = System.inheritedChannel();
        System.out.println(ch);
         
        System.out.println(System.lineSeparator());
         
    }
}

Producción: 

1735600054
null
"\r\n"

Este artículo es una contribución de Abhishek Verma . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *