Download Tema14.pps

Document related concepts
no text concepts found
Transcript
Tema 14: java.lang
Antonio J. Sierra
Índice
1. Introducción.
2. Gestión de cadenas.
– String
– StringBuffer
3. Clases para los tipos simples.
– Number
– Envolventes a los tipo de datos simples
4. Programación del sistema.
Introducción
•
•
•
•
Contienen las clases para los objetos
fundamentales de Java.
Se incluye en todas las plataformas.
Se importa automáticamente.
Estructura:
–
Contiene más de 28 clases, 4 interfaces y 5
paquetes.
Introducción. Clases generales.
•
•
•
•
•
•
•
•
•
String
StringBuffer
Number
Boolean
Integer
Character
Long
Double
Float
•
•
•
•
•
•
•
•
•
•
Object
Class
System
Thread y
ThreadGroup
Throwable
Excepciones
Error
Math
Process
Runtime
Gestión de Cadenas
•
•
•
Secuencias de caracteres (char).
Un char:16 bits.
Dos clases:
– String
– StringBuffer
La clase String
•
•
Secuencias de caracteres (char de 16 bits).
Longitud fija y no modificable.
String: Ejemplos I
package Cadenas;
public class Cadenas0 {
public static void main(String args[]){
byte ascii[] = {65,66,67,68,69,70};
String s1 = null;
try{
s1 = new String (ascii,"US-ASCII");
}catch(java.io.UnsupportedEncodingException e){
}
System.out.println(s1);
Constructores
String(byte[] bytes, String charsetName)
String(char[] value)
String(String original)
Métodos
String trim()
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)
int length()
char data[] = {'a', 'b', 'c'};
String str = new String(data);
String cde = new String("
cde
cde = cde.trim();
System.out.println(str + cde);
");
String c = "abc".substring(2,3);
System.out.println( c );
String d = cde.substring(1, 2);
System.out.println( d );
System.out.println("d.length() = " +
d.length());
}
}
/*
C:\F_Telematica\Texto\Tema14>javac .\Cadenas\Cadenas0.java
C:\F_Telematica\Texto\Tema14>java
ABCDEF
abccde
c
d
d.length() = 1
C:\F_Telematica\Texto\Tema14>
*/
Cadenas.Cadenas0
package Cadenas;
String: Ejemplos II
public class Cadenas1 {
public static void main(String args[]){
String str = "abcdefghijklmnopqrstuvxyz" +"ABCDEFGHIJKLMNOPQRSTUVWXZ" +
"abcdefghijklmnopqrstuvxyz";
System.out.println(str );
System.out.println("str.compareTo(str)=" + str.compareTo(str));
System.out.println("str.compareTo(\"a\")=" + str.compareTo("a"));
System.out.println("str.indexOf(a)="+str.indexOf('a') );
System.out.println("str.lastIndexOf(a)="+str.lastIndexOf('a') );
System.out.println(str );
System.out.println("str.indexOf(a,1)="+str.indexOf('a',1) );
System.out.println("str.lastIndexOf(a,49)="+str.lastIndexOf('a',49));
System.out.println("str.indexOf(a,1)="+str.indexOf('a',1) );
System.out.println("str.indexOf(a,1)="+str.indexOf('a',1) );
}
C:\F_Telematica\Texto\Tema14>java Cadenas.Cadenas1
}
Métodos
abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvxyz
str.compareTo(str)=0
str.compareTo("a")=74
str.indexOf(a)=0
str.lastIndexOf(a)=50
abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvxyz
str.indexOf(a,1)=50
str.lastIndexOf(a,49)=0
str.indexOf(a,1)=50
str.indexOf(a,1)=50
C:\F_Telematica\Texto\Tema14>
int compareTo(Object o)
int compareTo(String anotherString)
int indexOf(int ch)
int indexOf(int ch, int fromIndex)
int indexOf(String str)
int indexOf(String str, int fromIndex)
int lastIndexOf(int ch)
int lastIndexOf(int ch, int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex)
package Cadenas;
String: Ejemplos III
public class Cadenas2 {
public static void main(String args[]){
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = new String("ABC");
System.out.println("str1.equals(str1) = "+str1.equals(str1));
System.out.println("str1.equals(str2) = "+str1.equals(str2));
System.out.println("str1.equals(str3) = "+str1.equals(str3));
System.out.println("str1.equalsIgnoreCase(str3) = "+str1.equalsIgnoreCase(str3));
int comienzo = 0, fin = str1.length();
char buf[] = new char[fin];
str1.getChars(comienzo, fin, buf,0);
System.out.println(buf);
}
}
C:\F_Telematica\Texto\Tema14>javac .\Cadenas\Cadenas2.java
C:\F_Telematica\Texto\Tema14>java Cadenas.Cadenas2
str1.equals(str1) = true
str1.equals(str2) = true
str1.equals(str3) = false
str1.equalsIgnoreCase(str3) = true
abc
C:\F_Telematica\Texto\Tema14>
Métodos
boolean equals(Object anObject)
boolean equalsIgnoreCase(String anotherString)
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
La clase StringBuffer
•
•
•
Secuencias de caracteres (char de 16 bits).
Longitud variable y modificable.
Constructores:
–
–
–
StringBuffer() reserva 16 caracteres.
StringBuffer(int dim) reserva dim
caracteres.
StringBuffer(String str) reserva el
tamaño del String mas 16 caracteres
StringBuffer y append
• Los bufers de String el compilador los usa para implementar la
concatenación de cadenas binarias con el operador +.
• Por ejemplo, el código:
x = "a" + 4 + "c"
es compilado de forma equivalente a:
x = new
StringBuffer().append("a").append(4).append("c"
).toString();
que crea un nuevo buffer para la cadena (inicialmente vacía), añade las
cadenas de representación de cada uno de los valores y los convierte a
para el String.
• Evita la creación de muchas cadenas temporales.
StringBuffer: Ejemplos I
package Cadenas;
package Cadenas;
public class Cadenas4{
public static void main(String args[]){
StringBuffer ab = new StringBuffer("Hola");
char c;
Métodos
System.out.println(ab);
System.out.println( ab.length());
System.out.println( ab.capacity());
c = ab.charAt(0);
System.out.println(c);
ab.setCharAt(0,'h');
System.out.println(ab);
ab.setLength(3);
System.out.println(ab);
}
}
void setCharAt(int index, char ch)
void setLength(int newLength)
char charAt(int index)
C:\F_Telematica\Texto\Tema14>java Cadenas.Cadenas4
Hola
4
20
H
hola
hol
C:\F_Telematica\Texto\Tema14>
StringBuffer:
Ejemplos
II
package Cadenas;
public class Cadenas5{
public static void main(String args[]){
StringBuffer ab = new StringBuffer("Hola
Adios");
ab.insert(5,"y ");
System.out.println(ab);
ab.reverse();
System.out.println(ab);
}
Métodos
StringBuffer reverse()
}
StringBuffer insert(int offset, boolean b)
C:\F_Telematica\Texto\Tema14>java Cadenas.Cadenas5
Hola y Adios
soidA y aloH
C:\F_Telematica\Texto\Tema14>
StringBuffer insert(int offset, char c)
StringBuffer insert(int offset, char[] str)
StringBuffer insert(int index, char[] str, int offset, int len)
StringBuffer insert(int offset, double d)
StringBuffer insert(int offset, float f)
StringBuffer insert(int offset, int i)
StringBuffer insert(int offset, long l)
StringBuffer insert(int offset, Object obj)
StringBuffer insert(int offset, String str)
Number
• Es una clase abstracta.
• Superclase de las clases BigDecimal(java.math),
BigInteger(java.math), Byte, Double, Float,
Integer, Long, y Short.
• Métodos de Number:
byte
byteValue()
abstract double doubleValue()
abstract float floatValue()
abstract int
intValue()
abstract long
longValue()
short shortValue()
Envolventes (wrap) a los tipos de
datos simples
• Boolean
• Integer
• Character
• Long
• Double
• Float
Integer
• Atributos
static int MAX_VALUE (231-1)
static int MIN_VALUE (-231)
static Class TYPE (Instancia de Class
representando a Integer)
• Constructores
Integer(int value)
Integer(String s)
• Y métodos
Integer Ejemplo I
class UnEntero{
public static void main(String args[]){
String s ="22";
Integer miEntero = new Integer(s);
System.out.println("el valor el entero "+ miEntero);
}
}
/*
el valor el entero 22
*/
package Number;
public class Character0{
public static void main(String args[]){
char a[] = {'a','b','5','?','A',' '};
for(int i = 0; i < a.length; i++){
if(Character.isDigit(a[i]))
System.out.println(a[i]+" es un digito");
if(Character.isLetter(a[i]))
System.out.println(a[i]+" es una letra");
if(Character.isWhitespace(a[i]))
System.out.println(a[i]+" es un espacio");
Character
if(Character.isUpperCase(a[i]))
System.out.println(a[i]+" es un mayuscula");
if(Character.isLowerCase(a[i]))
System.out.println(a[i]+" es un minuscula");
}
}
}
C:\F_Telematica\Texto\Tema14>java Number.Character0
a es una letra
a es un minuscula
b es una letra
b es un minuscula
5 es un digito
A es una letra
A es un mayuscula
es un espacio
C:\F_Telematica\Texto\Tema14>
Métodos
static boolean isLetter(char ch)
static boolean isDigit(char ch)
static boolean isWhitespace(char ch)
static boolean isUpperCase(char ch)
static char toLowerCase(char ch)
Programación del sistema
•
Permite interactuar con el sistema
operativo. Hay tres clases principales:
1. System
2. Runtime
3. Process
System
• Atributos
– static PrintStream err: Flujo de salida de error estándar.
– static InputStream in: El flujo de entrada estándar.
– static PrintStream out: El flujo de salida estándar.
• Métodos estáticos para el manejo del sistema
– static void arraycopy(Object src, int srcPos,
Object dest, int destPos, int length)
• Copia un array desde un lugar a otro.
– static long currentTimeMillis()
• Devuelve la hora actual en milisegundos.
– static void exit(int status)
• Termina el hilo actual que se ejecuta en la Java Virtual Machine.
– static void gc()
• Ejecuta el garbage collector.
Runtime
•
•
Toda aplicación Java tiene una instancia de la clase Runtime que permite a la
aplicación tener una interfaz con el entorno en el que se ejecuta.
Métodos
–
long freeMemory()/long totalMemory()
Máquina Virtual de Java.
–
static Runtime getRuntime() Devuelve el objeto de ejecución asociado con la
aplicación Java actual.
–
–
–
–
–
–
Process
Process
Process
Process
Process
Process
–
void exit(int status)
Devuelve la memoria libre/total de la
exec(String command)
exec(String[] cmdarray)
exec(String[] cmdarray, String[] envp)
exec(String[] cmdarray, String[] envp, File dir)
exec(String cmd, String[] envp)
exec(String command, String[] envp, File dir)
Ejemplo
package Sistema;
public class Sistema0{
public static void main(String args[]){
Runtime r = Runtime.getRuntime();
long mem1 = 0, mem2 = 0;
long tiempo1 = 0L,tiempo2 = 0L;
System.out.println( "Memoria disp.
"
+ r.totalMemory()+" bytes");
mem1 = r.freeMemory();
System.out.println( "Mem. libre antes " + mem1
+ " bytes");
tiempo1 =
System.currentTimeMillis();
for(int i = 0; i < Integer.MAX_VALUE;i++){
new Integer(i);
}
tiempo2 = System.currentTimeMillis();
mem2 = r.freeMemory();
System.out.println( "Mem. libre desp. " + mem2
+ " bytes");
System.out.println( "Milisegundos = "
+ (tiempo2 - tiempo1));
}
}
C:\F_Telematica\Texto\Tema14>java Sistema.Sistema0
Memoria disp. 2031616 bytes
Mem. libre antes 1870032 bytes
Mem. libre desp. 1691224 bytes
Milisegundos = 32609
C:\F_Telematica\Texto\Tema14>
Process
• El método Runtime.exec crea un proceso nativo y devuelve una
instancia de una subclase de Process que puede ser usado para
controlar el proceso y obtener información.
• Métodos
– abstract int waitFor() hace que el hilo actual espere, si fuera
necesario, hasta que el proceso representado mediante este objeto Process
se termine.
– abstract void destroy() mata el subproceso.
– abstract int exitValue() devuelve el valor de salida del
subproceso.
– Flujos del subproceso
– abstract InputStream getErrorStream() de error.
– abstract InputStream getInputStream() de entrada.
– abstract OutputStream getOutputStream() de salida.
Ejemplo
package Sistema;
public class Sistema1{
public static void main(String args[]){
Runtime r = Runtime.getRuntime();
Process p = null;
try{
p = r.exec("notepad");
p.waitFor();
}catch(Throwable e){
System.out.println(e);
}
}
}