apuntes java script

70
Introducción a JAVA

Upload: patricio-oliva-san-martin

Post on 01-Feb-2016

250 views

Category:

Documents


0 download

DESCRIPTION

apuntes de java script

TRANSCRIPT

Page 1: Apuntes Java script

Introducción a JAVA

Page 2: Apuntes Java script

Lenguaje orientado a la redPensado para ser usado en la red4incluye seguridad4permite cargar objetos a través de la red

Incluye librerías de soporte al diseño de aplicaciones para Internet Integrado en WWW4Visores implementan la Maquina Virtual Java (JVM)

• Netscape, Microsoft Explorer, Hotjava, ...

4Cargan objetos del servidor para ejecutar en cliente

Page 3: Apuntes Java script

Características de JavaLenguaje independiente de máquina4Definición basada en máquina virtual interpretada

• Fuentes de disponibles en C

• Lenguaje de la máquina virtual: Bytecodes

– Equivalente al lenguaje máquina de un procesador

• Formato de fichero máquina: Class file format

Orientado a objetos: fuertemente tipadoGestión automática de memoria4No hay punteros, sólo referencias a objetos

Multihebra (procesos ligeros)

Page 4: Apuntes Java script

Programas en JavaClase: elemento central de un programa Java

Una clase se encapsula en un fichero4El fichero tiene el mismo nombre de la clase.

Una clase puede invocarse como una aplicación si tiene un método 4public static void main(String args[])

• Los parámetros se pasan en: args[]

La ejecución de la clase finaliza al acabar main

Page 5: Apuntes Java script

Ejemplo: aplicación HelloWorld

public class HelloWorld {

public static void main (String args[]){

System.out.println("Hello World!");}

}

Modificador “public”4Significa accesible en cualquier ámbito

Para imprimir4System.out.println(......)

Page 6: Apuntes Java script

Tipos, Clases y ObjetosEn Java hay tres tipos de datos:4Tipos primitivos: booleanos, enteros, reales, ....

• Tipos predefinidos en el lenguaje con sintaxis especial

• Se manejan siempre por valor

4Clases• Definibles por el usuario

• Permiten crear objetos

• Se manejan siempre por referencia

4Arrays (matrices)• Similares a las clases

– sintaxis especial

Page 7: Apuntes Java script

Tipos predefinidos, operadoresy sentencias

Page 8: Apuntes Java script

Tipos predefinidos I

-32768,32767

160Complemento a 2short

-128,127

80Complemento a 2byte

\u0000,\uFFFF

16\u0000Carácter unicodecharfalse, true1falsefalse, trueboolean

Valores mínimo y máximo

BitsValor por Defecto

ContenidoTipo

Page 9: Apuntes Java script

Tipos predefinidos II

±1.79769313486231570e+308, ±4.94065645841246544e-324640.0IEEE 754double

±3.40292347e+38, ±1.40239846e-45

320.0IEEE 754float

-9223372036854775808, +9223372036854775807640Complemento a 2long

-2147483648, +2147483647

320Complemento a 2int

Valores mínimo y máximo

BitsValor por Defecto

ContenidoTipo

Page 10: Apuntes Java script

Tipos primitivos: ejemplosboolean on_the_floor = true;

// crea la variable on_the_floor e inicializa a trueboolean under; // crea under, Java asigna false por defecto

on_the_floor = false; // asigna false

under = true; // asigna true

int count = 7; // crea la variable count, inicializa a 7

count = count + 1; // incrementa countcount++; // incrementa count (postincremento)++count; // incrementa count (preincremento)count += 1; // incrementa count

Page 11: Apuntes Java script

Sentencia: while

class PrintArgs1 {

public static void main (String args[]){int i = 0;while (i < args.length) {

System.out.println (“argumento “ + i + “: “ + args[i++]);}

}}

El bucle while analiza la condición antes de ejecutar el cuerpo del bucle4el programa imprime los argumentos por consola

Page 12: Apuntes Java script

Sentencia: for

class PrintArgs4 {

public static void main (String args[]){for (int i = 0; i <args.length; i++) {

System.out.println (“argumento “ + i + “: “ + args[i]);}

}}

Inicializa (y define) variables antes de comenzar4Permite varias sentencias separadas por comas

Verifica la condición antes de ejecutar el bucleActualiza variables al final de cada ejecución4Permite varias sentencias separadas por comas

Page 13: Apuntes Java script

Sentencia: break

class PrintArgs3 {

public static void main (String args[]){int i = 0;do {

if (args.length == 0) { break;}; // aborta la ejecucionSystem.out.println (“argumento “ + i + “: “ + args[i++]);

} while (i < args.length);}

}

break aborta la ejecución: si args.length = 04Utilizable con: {}, while, for, do-while y switch

Page 14: Apuntes Java script

Sentencia: switchint llave;......switch (llave) {

case 3:.......break;

case 2:.......break;.......

case <valor>:.......break;

default:.......break;

}......

llave puede ser de tipo4byte, char, short, int, long

Ejecuta a partir del código del caso que cumple4llave == <valor>

Hay que insertar breakpara no ejecutar los siguientes casos

Page 15: Apuntes Java script

Operandos IPrior/Asoc

ope-rador

operandos descripcion

1, R ++, -- aritmetico pre/post incr/decremento1, R +, - aritmetico mas, menos (unitario)1, R ~ entero complemento bit a bit1, R ! boolean complemento logico1, R (tipo) any cast - conversion de tipos2, L *, /, % aritm., aritm. multiplicacion, division, resto3, L +, - aritm., aritm. suma, resta3, L + string, string concatenacion de strings4, L << entero desplazamiento a la izquierda4, L >> entero despl. derecha, insercion signo4, L >>> entero despl. derecha, insercion cero

Page 16: Apuntes Java script

Operandos IIPrior/Asoc

operador operandos descripcion

5, L <, <= aritmetico, arit. menor, menor o igual5, L >, >= aritmetico, arit. mayor, mayor o igual5, L instanceof Object, class prueba de tipo6, L ==, != primitivo, primiti. igual, diferente (valor)6, L ==, != Object, Object igual, diferente (puntero)7, L & entero,entero and (bit a bit)7, L & boolean, bool. and (logico)8, L ^ entero, entero xor (bit a bit)8, L ^ boolean, bool. xor (logico)9, L | entero, entero or (bit a bit)9, L | boolean, bool. or (logico)

Page 17: Apuntes Java script

Operandos IIIPrior/Asoc

operador operandos descripcion

10, L && boolean, boolean and condicional(evaluacion parcialhasta resolver expr.)

11, R || boolean, boolean or condicional(evaluacion parcialhasta resolver expr.)

12, R ?: boolean, any, any if-then-else funcional13, R =, *=, /=,

%=, +=,-=, <<=,>>=, >>>=,&=, ^=, |=

any asignacion conoperacion x += 3; igual a x = x + 3;

Page 18: Apuntes Java script

Operaciones: ejemplos

static final int i = 88; // define una constante enterastatic final byte b = 3; // define una constante de tipo byte

byte bb = (byte) i; // la función de cast adapta tipos (int a byte)

int val = b; // de menor a mayor no hace falta hacer cast

byte b = (3 < ++val)?3:2; // asigna 3, expresión = true

byte b = (byte) (value >> 8); // extrae segundo byte de value

int i = (0x000000600 & intvalue) >>> 9; // extrae un campo de// dos bits (bits 9 y 10) con una máscara hexadecimal// y calcula su valor numérico

Page 19: Apuntes Java script

Cadenas de caracteres (String) String: instancia de java.lang.String4El manejo de Strings con constructores y métodos

de la clase es muy complejo4Sintaxis especial para manejo de String

• Operador de concatenación: +• Constantes tipo String: “xxxxxxx”

4Ejemplo: String s = “hola “ + var + v.toString();

Las operaciones con strings se realizan con java.lang.StringBuffer4Un String no puede modificarse, sólo copiarse4Las operaciones se realizan sobre StringBuffers

Page 20: Apuntes Java script

Ejercicio Java 2Realizar un programa que reciba varios argumentos4cuando el argumento sea 11, 12 o 13 imprima

• “numero once”, “numero doce” o “numero trece”

4cualquier otro argumento debe imprimirlo sin modificación

Utilizar la sentencia switch para realizarlo

Page 21: Apuntes Java script

Clases y objetos

Page 22: Apuntes Java script

Clases y objetosEl mecanismo de definición de clases permite crear nuevos tipos de usuario4substituye un struct de C, o un record de Pascal4añade control de visibilidad y herencia

Clase: 4Conjunto de datos encapsulados con los métodos

que permiten manipularlos de forma coherente4Una clase se compone de:

• campos, constructores y métodos

Objeto: 4instancia de una clase

• se crea y destruye dinámicamente

Page 23: Apuntes Java script

Ejemplo: definición de clasepublic class WebSite {

protected String name; // camposprivate String url; private String descr;

public WebSite(String n, String u, String d) { // constructorname = n; url = u; descr = d;

}

public void print() { // métodoSystem.out.println(name + “ at “ + url + descr);

}}

Page 24: Apuntes Java script

Ejemplo: uso de una clase

class WebSiteTest {

public static void main(String args[]){

WebWite w = new WebSite(“Juan Quemada”,“http://www.dit.upm.es/quemada”,“pagina personal de J. Quemada”); // creación

w.print(); // usoSystem.out.println (“Name is: “ + w.name);

}}

Un objeto se crea con un constructor4el objeto se destruye cuando deja de utilizarse

• Es destruido automáticamente por la máquina virtual Java

Page 25: Apuntes Java script

Referencias

1) WebSite w; // creación de la variable de referencia w// w se inicializa a null// null significa sin referencia

2) w = new WebSite(“Juan Quemada”,“http://www.dit.upm.es/quemada”,“pagina personal de J. Quemada”);

// guardar referencia del objeto creado en w3) w.print() // uso del objeto

Un objeto se maneja usando referencias a él.Uso típico:1. declarar variable que contendrá la referencia a un objeto.2. almacenar en la variable la referencia a un objeto.

• Nota: los pasos 1 y 2 se pueden unificar (ejemplo anterior)

3. Usar el objeto usando la variable y el carácter “.”

Page 26: Apuntes Java script

Visibilidad de miembrosVisibilidad publica: public4Accesible donde la clase sea accesible.

Visibilidad protegida: protected4Accesible en paquete y subclases

Visibilidad de paquete: sin modificador4Accesible en paquete

Visibilidad privada: private4Sólo accesible dentro de la propia clase.

Page 27: Apuntes Java script

Ejercicio Java 3Extender la clase “WebSite” con métodos de acceso y modificadores para cada campo (name, url, descr). Crear también un programa de prueba que41) cree un objeto42) imprima su contenido43) modifique un campo44) imprima el contenido modificado

Page 28: Apuntes Java script

Número variable de parámetros

(desde java 1.5)

int suma(int primero, int... resto) {int res = primero; for (int i: resto)

res += i;return res;

}

int s = suma(1,2,3,4,5,6);

Page 29: Apuntes Java script

Clases y objetos(Transparencias complementarias)

Page 30: Apuntes Java script

Elementos de una claseCabecera: define su nombre y su tipo

Variables o campos: contienen el estado

Constructores: crean objetos de la clase4los objetos se denominan “instancias” de la clase

4tienen el mismo nombre que la clase

4pueden sobrecargarse.

Métodos: operaciones realizables a un objeto4pueden sobrecargarse.

Page 31: Apuntes Java script

Constructor por defecto

WebSite w = new WebSite() ;// Crea un objeto de tipo WebSite.// Todos los campos (name, url, descr) se inicializan// con los valores por defecto.

Constructor por defecto4Sólo existe si la clase no posee constructores explícitos4No tiene parámetros: <classname>()

• Campos del objeto creado se inicializan con valores por defecto• Es público

Page 32: Apuntes Java script

Tapado de constructores

public class WebSite0 {private String name; // camposprivate String url; private String descr;

private WebSite0(){} // constructor no utilizable

public void print(){ // metodoSystem.out.println(name + “ at “ + url + descr);

}}

WebSite0 no posee constructores utilizables4El usuario no puede crear objetos de tipo WebSite04Pregunta: ¿Como se puede crear un objeto WebSite0?

Page 33: Apuntes Java script

Destrucción de objetos

public class ....... {FileInputStream fd;.......protected void finalize() throws IOException {

{ if (fd != null) fd.close(); }}

La maquina virtual Java destruye los objetos cuando no se utilizan mas4libera la memoria y el resto de recursos que se han

asignado al crear el objeto4Hay otros recursos que se asignan en el código

• descriptores de ficheros, sockets, .. no se liberarían4existe un método finalize

• se invoca antes de destruir el objeto y permite realizar limpieza

Page 34: Apuntes Java script

Herencia

Page 35: Apuntes Java script

HerenciaLa herencia permite crear nuevas clases a partir de clases existentes 4diseño incremental

La herencia permite enriquecer clases4Añadir nuevas variables y métodos

La herencia permite modificar clases4cambiar el significado de variables y/o métodos

Terminología y notación: class B extends A { .... }4B es una subclase (subtipo) de A4B extiende A, 4B hereda A4A es la superclase (supertipo) de B

Page 36: Apuntes Java script

Ejemplo: WebSite otra vezpublic class WebSite {

private String name; // camposprivate String url; private String descr;

public WebSite(String n, String u, String d) { // constructorname = n; url = u; descr = d;

}

public void print() { // metodoSystem.out.println(name + “ at “ + url + descr);

}}

Page 37: Apuntes Java script

Herencia: enriquecimiento

public class WebSiteE extends WebSite {public String email; // nuevo campo

public WebSiteE(String n, String u, String d, String email) {super(n, u, d); this.email = email;

} // nuevo constructorpublic void printEmail() {

System.out.println(“To contact “ + name + “ send msg to “ + email);

} // nuevo metodo}

WebSiteE añade: campo email, método printEmail4Campos y métodos de WebSite son visibles en WebSiteE

Invocación constructor superclase en 1a sentencia4super: referencia al constructor de la superclase4this: referencia al objeto en construcción

Page 38: Apuntes Java script

Herencia: modificación

public class WebSiteM extends WebSite {public String email;

public WebSiteM(String n, String u, String d, String email) {super(n, u, d); this.email = email;

}public void print() {

super.print();System.out.println

(“To contact “ + name + “ send msg to “ + email);} // nuevo metodo

}

WebSiteM modifica WebSite4Añade también la variable: email4Pero redefine el significado de: print()

Page 39: Apuntes Java script

Programa de pruebapublic class WebSiteEMTest {

// Invocacion: // java WebSiteEMTest <name> <url> <descr> <email>// Crea objetos WebSiteE y WebSiteM, e invoca sus // métodos print y printEmail en su caso.

public static void main(String a[]){WebSiteE wE = new WebSiteE(a[0], a[1], a[2], a[3]); WebSiteM wM = new WebSiteM(a[0], a[1], a[2], a[3]); wE.print(); // invoca print de WebSiteEwE.printEmail(); // invoca printEmail de WebSiteEwM.print(); // invoca print de WebSiteM

}}

Page 40: Apuntes Java script

Uso y herencia de objetosClases y objetos se pueden usar por otro objeto 4si están en su ámbito de visibilidad

• Usar una clase significa crear objetos o variables• Usar un objeto significa invocar métodos o asignar campos

Una clase se puede heredar4si está en el ámbito de visibilidad

¿WebSite usa o hereda alguna clase?¿WebSiteE/M usan o heredan alguna clase?¿WebSiteEMTest usa o hereda alguna clase?

Page 41: Apuntes Java script

Ejercicio Java 5

Definir una clase que extienda WebSiteEañadiendo nuevos campos para los números de teléfono, de fax y de móvil.4Añadir un nuevo método “printTelefonos()” que

imprima:• Los números de contacto de <name> son:

tf = <tf>, fax = <fax>, movil = <movil>

Page 42: Apuntes Java script

Jerarquía de clasesLa herencia en java es de tipo simple (o lineal) 4Sólo se hereda de una clase

• Una clase sólo tiene una superclase• Una clase puede tener varias subclases

Cualquier clase deriva de “java.lang.Object”4“java.lang.Object” esta predefinida en JFC

• JFC (Java Foundation Clases)

4“java.lang.Object” contiene métodos que heredan todas las clases

• equals(Object o), clone(), toString(), ...

4Las clases forman una jerarquía cuya raíz es java.lang.Object

Page 43: Apuntes Java script

Herencia(Transparencias complementarias)

Page 44: Apuntes Java script

Herencia: enriquecimiento bis

public class WebSiteEb extends WebSiteD {public String email; // nuevo campo

public WebSiteEb(String n, String u, String d, String e){name = n; url = u; descr = d; email = e;}

// nuevo constructorpublic void printEmail() {

System.out.println(“To contact “+url+“ send msg to “+email);} // nuevo metodo

}

Si la subclase no incluye el constructor de superclase como primera sentencia de algún constructor4El constructor invoca automáticamente el constructor por

defecto de la superclase antes de la primera sentencia

Page 45: Apuntes Java script

WebSiteD

public class WebSiteD {

String name; String url; String descr; // campos

public WebSiteD () {}public WebSiteD (String n, String u, String d)

{name = n; url = u; descr = d;} // constructores

public void print(){ // metodoSystem.out.println(name + “ at “ + url + descr);

}}

WebSiteD debe tener un constructor sin argumentos4WebSiteD() es invocado por el constructor de WebSiteEb

• Un objeto de una subclase debe construir siempre el objeto de susuperclase antes de crearse

Page 46: Apuntes Java script

Referencias this y superthis: tiene dos usos basicos4referencia al objeto

• Un método no estático siempre incluye una referencia thisademás de sus parámetros

• Esta referencia se utiliza para acceder a campos del objeto o invocar métodos sobre él

• cuando es redundante this se puede omitir4referencia al nombre del constructor de la clase

• debe estar siempre en la primera sentencia de otro constructor

super: tiene dos usos básicos4referencia a un método tapado de la superclase4referencia al nombre del constructor de la superclase

• debe estar siempre en la primera sentencia de otro constructor

Page 47: Apuntes Java script

Herencia de constructoresAl crear un objeto derivado de otro es necesario construir el objeto de forma incremental4Invocando a los constructores de las superclases

Java garantiza la invocación de todos los constructores cuando se crea un objeto4Constructor implícito

• llama a constructores por defecto (empieza por supertipo)4Constructor explícito

• debe invocar a constructor explícito del supertipo en la primera línea

• si no se invoca automáticamente el constructor implícito antes de ejecutar el constructor

– excepción: antes de invocar el constructor del supertipose pueden invocar otros constructores del mismo tipo

Page 48: Apuntes Java script

Matrices (Arrays)

Page 49: Apuntes Java script

Matrices (Arrays)Definen estructuras regulares de información4Ejemplos:

• byte PDU[] = new byte[4];

• byte PDU[] = {2, 4, 8, 9}; // utilizable solo en inicialización

Su manejo es similar a los objetos4Se manejan por referencia

4Se crean dinámicamente (con new)

4Se liberan de memoria cuando dejan de usarse

Arrays derivan de Object4pueden ser asignados a variables de tipo Object

Page 50: Apuntes Java script

Ejemplos: matrices// definición

public byte[] PDU(int type, int len, byte[] data);

String buffer[];int[] a, b[]; // a es unidimensional, b es bidimen.

// uso

byte[] datos = {0,0,0,0}; // esta sintaxis solo es // valida en la creación, en asignaciones y// otros usos se debe utilizar arrays dinámicos

byte[] buff = PDU(8, 10, datos);

int i = buff.length

Object o = {0,0,0,0};

Page 51: Apuntes Java script

forRecorrido por los valores del array usando el índice.

int[] a = {10,20,30,40};for (int i=0; i<a.length; i++) {

System.out.println(“valor =“+a[i]);}

String[] b = {“uno”,”dos”,”tres”};for (int i=0; i<b.length; i++) {

System.out.println(“valor =“+b[i]);}

Page 52: Apuntes Java script

foreachRecorrido por los valores del array sin uso del índice.Desde java 1.5

int[] a = {10,20,30,40};for (int i : a) {

System.out.println(“valor =“+i);}

String[] b = {“uno”,”dos”,”tres”};for (String i : b) {

System.out.println(“valor =“+i);}

Page 53: Apuntes Java script

Matrices (Arrays) (Transparencias complementarias)

Page 54: Apuntes Java script

Matrices (II)El tamaño de un array no es parte del tipo4una variable de tipo array puede contener arrays de

diversas longitudes

Un array puede ser multidimensional4arrays multidimensionales se implementan como

arrays de arrays• byte PDU[][][] = new byte[4][4][4];

desde Java 1.1 existen arrays anónimos4no tienen nombre

Page 55: Apuntes Java script

Ejemplos: matrices (II)

// definición e inicialización de array multidimensional// cada array unidimensional es de tamaño diferente// es posible porque el tamaño no pertenece al tipo

byte buffer[][] = { { 1 },{ 0, 2 },{ 2, 3, 1 },{ 0, 4, 1, 1 },{ 0, 6, 1, 1, 8 },{ 0 }

};

// array anónimo, no tiene nombre

byte[] buff = PDU(8, 10, new byte[] {0,0,0,0,0,0,0});

s = new int[] {0,1,3,5,7,11,13};

Page 56: Apuntes Java script

Resumen modificadores (Transparencias complementarias)

Page 57: Apuntes Java script

ModificadoresUn “modificador” es un atributo de una definición de4Clase4interfaz4campo4metodo4inicializador

Define características asociadas a dicha definición4La casuística de uso es compleja

Page 58: Apuntes Java script

Modificadores Istatic: atributo de clase4clase (desde Java 1.1): clase de ámbito máximo

4campo: campo de clase, el mismo en todos los objetos

4método: método de clase, solo accede a campos static

4inicializador: se ejecuta al cargar la clase

final: no modificables (por herencia)4clase: no puede tener subclases

4campo, variable (desde Java 1.1): valor no modificable

4método: no se puede tapar• se garantiza que nadie va a modificar la semántica

Page 59: Apuntes Java script

Modificadores IIabstract: con métodos no implementados4clase: contiene métodos no implementados

4interface: es abstracto por definición, es opcional

4método: el método no tiene cuerpo, sólo signatura• debe pertenecer a una clase abstracta

synchronized (método): garantiza exclusión mutua

native (método): implementado en C, C++, ASM, ...

transient (campo): no serializar

volatile (campo): no optimizar, acceso no sincr.

Page 60: Apuntes Java script

public: visibles en cualquier parte

private: Visibles sólo dentro de la clase

protected: Visibles en paquete y subclases

“Sin modificador”: Visibles en paquete

Modificadores III(metodos y campos)

Page 61: Apuntes Java script

Internacionalización:Códigos de caracteres,

Readers y WritersBibliografía:- Java Network Programming- Documentación API: paquete java.io

Page 62: Apuntes Java script

Internacionalización

Capacidad de un programa para manejar interfaces de usuario utilizables en múltiples paísesCaracterísticas4Deben poder representar todas las lenguas

• con diferentes alfabetos o jeroglíficos

4Deben poder utilizar formatos locales en• Fechas, nombres, números, ....

Page 63: Apuntes Java script

Internacionalización en JavaJava soporta internacionalización de programasFacilidades4Código Unicode

• permite representar múltiples alfabetos

4Readers y Writers (clases de java.io)• manejadores especiales para flujos de caracteres

4java.text: • paquete de manejo de convenciones locales para las

lenguas mas comunes

4java.util.ResourceBoundle:• clase de manejo de bloques de mensajes en múltiples

lenguas

Page 64: Apuntes Java script

Codificación de caracteresCodificación internacionalizada 4Debe soportar las lenguas existentes

• Tipos de lenguas: alfabéticas y jeroglíficas

Lenguas alfabéticas: 4Codificación indirecta basada en un alfabeto

• Palabra: se representa con un bloque de símbolos del alfabeto• Suelen tener un numero de símbolos pequeño (entre 20 y 100)

4Ejemplo: lenguas de origen latino, griego o árabe

Lenguas jeroglíficas:4Poseen un símbolo diferente para cada palabra

• Necesitan un conjunto de símbolos muy grande

4Ejemplo: chino( > 80000 símbolos), japonés o coreano

Page 65: Apuntes Java script

Códigos mas usadosMundo occidental/anglosajón:4ASCII, ISO Latin-1, UNICODE, UTF8

ASCII: 4codifica ingles-americano

• Además incluye caracteres de control de teletipos

4Formato: 7 bits por caracter

ISO Latin-1: 4extiende ASCII con 1 bit

4Codifica caracteres de otras lenguas de raíz latina• incluye castellano, catalán, ....

Page 66: Apuntes Java script

Código UnicodeUNICODE:4Código pseudointernacionalizado

• Mas información en: http://www.unicode.org

4extiende ISO Latin-14Longitud del Formato UNICODE:

• Hasta versión 3.0: 2 bytes– Cuando el primer byte es \h00 el otro byte es ISO Latin-1 – Alfabetos soportados: Europa, Africa y parte de Asia.– Alfabetos no soportados: Braille, Cherokee, Etíope, Mongol, ..

• Versión 3.1: mas de 2 bytes.– Ideogramas Han (chinos)

• Versión actual: 4.0

Page 67: Apuntes Java script

Código UTF8UTF8: Universal Character Set TransformationFormat 8-bit form4optimizado para representar caracteres ASCII.

Formato de longitud variable (1 a 4 bytes)41 byte: incluye ASCII en últimos 7 bits, excepto null

• formato: 0xxxxxxx42 bytes: códigos 127 a 2048 de Unicode (11 bits)

• formato: 110xxxxx10xxxxxx43 bytes: resto de UNICODE y otros

• formato: 1110xxxx10xxxxxx10xxxxxx4Otros códigos: 4 bytes

• Para japonés, chino y coreano por separado• formato: 1110xxxx10xxxxxx10xxxxxx10xxxxxx

Page 68: Apuntes Java script

Representación de caracteres en Java

Java ha sido diseñado para soportar internacionalización4Los “char” de Java usan codificación UNICODE

4Java 1.4 usa Unicode 3.0

4Java 5.0 usa Unicode 4.0• Necesidad de usar un int para soportar algunos

caracteres asiáticos

• Existen métodos en las Character, String, etc. Para soportar estos caracteres.

Page 69: Apuntes Java script

Tipos primitivos: charchar first = ‘A’; // crea first y asigna caracter: A

char c = ‘”’; // crea c y asigna caracter: ”c = ‘\u0022’; // asigna caracter: ”c = ‘\042’; // asigna caracter: ”c = ‘\”’; // asigna caracter: ”

// 22 (hexadecimal) = 42 (octal) = código de caracter ”

// \b espacio atrás// \t tabulador horizontal// \n linea nueva// \r retorno de carro// \f paso de pagina// \” comillas// \’ comilla// \\ barra hacia atras

Page 70: Apuntes Java script

Problema: múltiples códigosDualidad de códigos en S.O. y Java4Casi ningún S.O. utiliza UNICODE

• Java se diseñó para aceptar programas en ASCII o ISO Latin-1

4Los editores suelen usar ISO Latin-1 o ASCII• Los programas fuente de Java suelen estar en ISO Latin-1

Recomendaciones sobre portabilidad4Los compiladores (normalmente) esperan que el

programa esté almacenado en ISO Latin-1/ASCII• Todas las palabras reservadas de Java se codifican en ASCII

4Se recomienda escribir los programas de Java en ASCII• Por ejemplo: para portabilidad de PC a Mac sin problemas