Java Introducció a Java G. Navarro Dep. d’Enginyeria de la Informació i les Comunicacions Escola Tècnica Superior d’Enginyeries Universitat Autònoma de Barcelona university-log G. Navarro Java Intro 1 / 20 Java Outline 1 Introducció a Java Una classe en Java Organització Hello World Més característiques sobre Java Java Threads Java IO Arrays a Java Strings a Java Javadoc Referències university-log G. Navarro Java Intro 2 / 20 Java class org hi more threads io array str doc ref Introducció a Java I Llenguatge d’alt nivell orientat a objectes. university-log G. Navarro Java Intro 3 / 20 Java class org hi more threads io array str doc ref Introducció a Java I Llenguatge d’alt nivell orientat a objectes. Portable (basat en màquina virtual): university-log G. Navarro Java Intro 3 / 20 Java class org hi more threads io array str doc ref Introducció a Java I Llenguatge d’alt nivell orientat a objectes. Portable (basat en màquina virtual): university-log G. Navarro Java Intro 3 / 20 Java class org hi more threads io array str doc ref Introducció a Java I Llenguatge d’alt nivell orientat a objectes. Portable (basat en màquina virtual): Incorpora mecanismes de seguretat. university-log G. Navarro Java Intro 3 / 20 Java class org hi more threads io array str doc ref Introducció a Java II Fortament tipat. (strong static typing) university-log G. Navarro Java Intro 4 / 20 Java class org hi more threads io array str doc ref Introducció a Java II Fortament tipat. (strong static typing) Sintaxi, operadors i control de flux molt similar a C++. university-log G. Navarro Java Intro 4 / 20 Java class org hi more threads io array str doc ref Introducció a Java II Fortament tipat. (strong static typing) Sintaxi, operadors i control de flux molt similar a C++. Totalment OO. university-log G. Navarro Java Intro 4 / 20 Java class org hi more threads io array str doc ref Introducció a Java II Fortament tipat. (strong static typing) Sintaxi, operadors i control de flux molt similar a C++. Totalment OO. Tipus primitius: boolean, char (16bits), byte (8bits), int, float, double, . . . university-log G. Navarro Java Intro 4 / 20 Java class org hi more threads io array str doc ref Introducció a Java II Fortament tipat. (strong static typing) Sintaxi, operadors i control de flux molt similar a C++. Totalment OO. Tipus primitius: boolean, char (16bits), byte (8bits), int, float, double, . . . Multithreading. university-log G. Navarro Java Intro 4 / 20 Java class org hi more threads io array str doc ref Introducció a Java II Fortament tipat. (strong static typing) Sintaxi, operadors i control de flux molt similar a C++. Totalment OO. Tipus primitius: boolean, char (16bits), byte (8bits), int, float, double, . . . Multithreading. No hi ha punters. university-log G. Navarro Java Intro 4 / 20 Java class org hi more threads io array str doc ref Introducció a Java II Fortament tipat. (strong static typing) Sintaxi, operadors i control de flux molt similar a C++. Totalment OO. Tipus primitius: boolean, char (16bits), byte (8bits), int, float, double, . . . Multithreading. No hi ha punters. No hi ha gestió explícita de memòria (garbage collector). university-log G. Navarro Java Intro 4 / 20 Java class org hi more threads io array str doc ref Una classe a Java class A { int x; A(int number){ this.x = number; } void suma(int b){ this.x = this.x + b; } } university-log G. Navarro Java Intro 5 / 20 Java class org hi more threads io array str doc ref Una classe a Java class A { Constructor. No hi ha destructor!. int x; A(int number){ this.x = number; } void suma(int b){ this.x = this.x + b; } } university-log G. Navarro Java Intro 5 / 20 Java class org hi more threads io array str doc ref Una classe a Java class A { int x; Constructor. No hi ha destructor!. Creació d’objectes: A a = new A(2); A(int number){ this.x = number; } void suma(int b){ this.x = this.x + b; } } university-log G. Navarro Java Intro 5 / 20 Java class org hi more threads io array str doc ref Una classe a Java class A { Constructor. No hi ha destructor!. Creació d’objectes: int x; A a = new A(2); A(int number){ this.x = number; } Accés a mètodes: a.suma(4); void suma(int b){ this.x = this.x + b; } } university-log G. Navarro Java Intro 5 / 20 Java class org hi more threads io array str doc ref Una classe a Java class A { Creació d’objectes: int x; A a = new A(2); A(int number){ this.x = number; } Accés a mètodes: void suma(int b){ this.x = this.x + b; } } Constructor. No hi ha destructor!. a.suma(4); Herència simple. No múltiple. class B extends A{ ... } university-log G. Navarro Java Intro 5 / 20 Java class org hi more threads io array str doc ref Organització del codi Cada classe =⇒ un fitxer (normalment). university-log G. Navarro Java Intro 6 / 20 Java class org hi more threads io array str doc ref Organització del codi Cada classe =⇒ un fitxer (normalment). Package: grup de classes interrelacionades. java.io, java.net. university-log G. Navarro Java Intro 6 / 20 Java class org hi more threads io array str doc ref Organització del codi Cada classe =⇒ un fitxer (normalment). Package: grup de classes interrelacionades. java.io, java.net. Accés a components: university-log G. Navarro Java Intro 6 / 20 Java class org hi more threads io array str doc ref Organització del codi Cada classe =⇒ un fitxer (normalment). Package: grup de classes interrelacionades. java.io, java.net. Accés a components: Classe: public, package. university-log G. Navarro Java Intro 6 / 20 Java class org hi more threads io array str doc ref Organització del codi Cada classe =⇒ un fitxer (normalment). Package: grup de classes interrelacionades. java.io, java.net. Accés a components: Classe: public, package. Membres: private, protected, public, package. university-log G. Navarro Java Intro 6 / 20 Java class org hi more threads io array str doc ref Organització del codi Cada classe =⇒ un fitxer (normalment). Package: grup de classes interrelacionades. java.io, java.net. Accés a components: Classe: public, package. Membres: private, protected, public, package. Altres: university-log G. Navarro Java Intro 6 / 20 Java class org hi more threads io array str doc ref Organització del codi Cada classe =⇒ un fitxer (normalment). Package: grup de classes interrelacionades. java.io, java.net. Accés a components: Classe: public, package. Membres: private, protected, public, package. Altres: Classe: abstract (virtual), final (cons), . . . university-log G. Navarro Java Intro 6 / 20 Java class org hi more threads io array str doc ref Organització del codi Cada classe =⇒ un fitxer (normalment). Package: grup de classes interrelacionades. java.io, java.net. Accés a components: Classe: public, package. Membres: private, protected, public, package. Altres: Classe: abstract (virtual), final (cons), . . . Membres: static, abstract, final, . . . university-log G. Navarro Java Intro 6 / 20 Java class org hi more threads io array str doc ref Hello World public class HelloWorld{ public static final void main(String[] args){ System.out.println("Hello World"); } } university-log G. Navarro Java Intro 7 / 20 Java class org hi more threads io array str doc ref Hello World public class HelloWorld{ public static final void main(String[] args){ System.out.println("Hello World"); } } university-log G. Navarro Java Intro 7 / 20 Java class org hi more threads io array str doc ref Hello World public class HelloWorld{ public static final void main(String[] args){ System.out.println("Hello World"); } } university-log G. Navarro Java Intro 7 / 20 Java class org hi more threads io array str doc ref Més sobre Java Interfícies. university-log G. Navarro Java Intro 8 / 20 Java class org hi more threads io array str doc ref Més sobre Java Interfícies. public interface Sumador{ public int suma(int a, int b); } class A implements Sumador{ ... public int suma(int a, int b){ return a + b; } } university-log G. Navarro Java Intro 8 / 20 Java class org hi more threads io array str doc ref Més sobre Java Interfícies. Polimorfisme. university-log G. Navarro Java Intro 8 / 20 Java class org hi more threads io array str doc ref Més sobre Java Interfícies. Polimorfisme. Persona pep = new Professor(); university-log G. Navarro Java Intro 8 / 20 Java class org hi more threads io array str doc ref Més sobre Java Interfícies. Polimorfisme. Sobrecarrega university-log G. Navarro Java Intro 8 / 20 Java class org hi more threads io array str doc ref Més sobre Java Interfícies. no hi ha sobrecarrega d’operadors, si hi ha sobrecarrega d’mètodes. Polimorfisme. Sobrecarrega university-log G. Navarro Java Intro 8 / 20 Java class org hi more threads io array str doc ref Encara més sobre Java Referències university-log G. Navarro Java Intro 9 / 20 Java class org hi more threads io array str doc ref Encara més sobre Java Referències Paràmetres es passen per valor sempre. university-log G. Navarro Java Intro 9 / 20 Java class org hi more threads io array str doc ref Encara més sobre Java Referències Paràmetres es passen per valor sempre. Manipulem objectes amb referències, no hi ha punters. university-log G. Navarro Java Intro 9 / 20 Java class org hi more threads io array str doc ref Encara més sobre Java Referències Paràmetres es passen per valor sempre. Manipulem objectes amb referències, no hi ha punters. Excepcions: blocs try-catch. university-log G. Navarro Java Intro 9 / 20 Java class org hi more threads io array str doc ref Encara més sobre Java Referències Paràmetres es passen per valor sempre. Manipulem objectes amb referències, no hi ha punters. Excepcions: blocs try-catch. Més robust i rígid que C++ =⇒ throws public int suma(int a) throws OverflowException{ ... } university-log G. Navarro Java Intro 9 / 20 Java class org hi more threads io array str doc ref Encara més sobre Java Referències Paràmetres es passen per valor sempre. Manipulem objectes amb referències, no hi ha punters. Excepcions: blocs try-catch. Més robust i rígid que C++ =⇒ throws public int suma(int a) throws OverflowException{ ... } Excepcions estan jerarquitzades. university-log G. Navarro Java Intro 9 / 20 Java class org hi more threads io array str doc ref Java Threads Cada thread es subclasse de la classe Thread. university-log G. Navarro Java Intro 10 / 20 Java class org hi more threads io array str doc ref Java Threads Cada thread es subclasse de la classe Thread. Ha de sobreescriure el mètode run(). university-log G. Navarro Java Intro 10 / 20 Java class org hi more threads io array str doc ref Java Threads Cada thread es subclasse de la classe Thread. Ha de sobreescriure el mètode run(). Altres mètodes: start(), yield(), sleep(), . . . . university-log G. Navarro Java Intro 10 / 20 Java class org hi more threads io array str doc ref Java Threads Cada thread es subclasse de la classe Thread. Ha de sobreescriure el mètode run(). Altres mètodes: start(), yield(), sleep(), . . . . public class MyThread extends Thread{ ... public void run(){ ... } } MyThread a = new MyThread(); a.start(); university-log G. Navarro Java Intro 10 / 20 Java class org hi more threads io array str doc ref Java Threads Cada thread es subclasse de la classe Thread. Ha de sobreescriure el mètode run(). Altres mètodes: start(), yield(), sleep(), . . . . public class MyThread extends Thread{ ... public void run(){ ... } } MyThread a = new MyThread(); a.start(); Es pot fer d’altres maneres (implementant la interfície Runnable). university-log G. Navarro Java Intro 10 / 20 Java class org hi more threads io array str doc ref Java IO: java.io.* InputStream: productor de bytes. OutputStream: consumidor de bytes. university-log G. Navarro Java Intro 11 / 20 Java class org hi more threads io array str doc ref Java IO: java.io.* InputStream: productor de bytes. OutputStream: consumidor de bytes. university-log G. Navarro Java Intro 11 / 20 Java class org hi more threads io array str doc ref Java IO: java.io.* InputStream: productor de bytes. OutputStream: consumidor de bytes. Rader/Writer: streams orientats a caràcters. university-log G. Navarro Java Intro 11 / 20 Java class org hi more threads io array str doc ref Java IO: java.io.* InputStream: productor de bytes. OutputStream: consumidor de bytes. Rader/Writer: streams orientats a caràcters. BufferedReader reader = new FileReader("hola.txt"); reader.readLine(); university-log G. Navarro Java Intro 11 / 20 Java class org hi more threads io array str doc ref Java IO: Example try{ FileInputStream fis = new FileInputStream("origen.txt"); FileOutputStream fos = new FileOutputStream("desti.txt"); int c; while((c=fis.read()) != −1){ fos.write(c); } fis.close(); fos.close(); }catch(FileNotFoundException fnfe){ ... }catch(IOException ioe){ ... } university-log G. Navarro Java Intro 12 / 20 Java class org hi more threads io array str doc ref Java IO: Decorators Els streams es poden encadenar per anar tractant el flux. university-log G. Navarro Java Intro 13 / 20 Java class org hi more threads io array str doc ref Java IO: Decorators Els streams es poden encadenar per anar tractant el flux. OutputStream out; out = new GZIPOutputStream(new FileOutputStream("out−file")); university-log G. Navarro Java Intro 13 / 20 Java class org hi more threads io array str doc ref Java IO: Decorators Els streams es poden encadenar per anar tractant el flux. OutputStream out; out = new GZIPOutputStream(new FileOutputStream("out−file")); university-log G. Navarro Java Intro 13 / 20 Java class org hi more threads io array str doc ref Arrays Arrays: int[] a; //declara variable com array de int a = new int[10]; //crea l’array amb 10 elements for (int i=0; i < a.length; i++){ //processar a[i] } int[] b = {1, 2, 3, 4, 5}; //declara, crea i inicialitza university-log G. Navarro Java Intro 14 / 20 Java class org hi more threads io array str doc ref Arrays Arrays: int[] a; //declara variable com array de int a = new int[10]; //crea l’array amb 10 elements for (int i=0; i < a.length; i++){ //processar a[i] } int[] b = {1, 2, 3, 4, 5}; //declara, crea i inicialitza També permet arrays multidimensionals university-log G. Navarro Java Intro 14 / 20 Java class org hi more threads io array str doc ref Arrays Arrays: int[] a; //declara variable com array de int a = new int[10]; //crea l’array amb 10 elements for (int i=0; i < a.length; i++){ //processar a[i] } int[] b = {1, 2, 3, 4, 5}; //declara, crea i inicialitza També permet arrays multidimensionals Java disposa d’una API molt bona de Collections. university-log G. Navarro Java Intro 14 / 20 Java class org hi more threads io array str doc ref String Classe String: String str1 = new String("M’agrada Java"); String str2 = "I love Java"; university-log G. Navarro Java Intro 15 / 20 Java class org hi more threads io array str doc ref String Classe String: String str1 = new String("M’agrada Java"); String str2 = "I love Java"; immutable, university-log G. Navarro Java Intro 15 / 20 Java class org hi more threads io array str doc ref String Classe String: String str1 = new String("M’agrada Java"); String str2 = "I love Java"; immutable, no cal terminació d’string, university-log G. Navarro Java Intro 15 / 20 Java class org hi more threads io array str doc ref String Classe String: String str1 = new String("M’agrada Java"); String str2 = "I love Java"; immutable, no cal terminació d’string, unicode, university-log G. Navarro Java Intro 15 / 20 Java class org hi more threads io array str doc ref String Classe String: String str1 = new String("M’agrada Java"); String str2 = "I love Java"; immutable, no cal terminació d’string, unicode, concatenació: + university-log G. Navarro Java Intro 15 / 20 Java class org hi more threads io array str doc ref String Classe String: String str1 = new String("M’agrada Java"); String str2 = "I love Java"; immutable, no cal terminació d’string, unicode, concatenació: + Mètodes de la classe String: getBytes(), split(regexp), i molts més university-log G. Navarro Java Intro 15 / 20 Java class org hi more threads io array str doc ref String Classe String: String str1 = new String("M’agrada Java"); String str2 = "I love Java"; immutable, no cal terminació d’string, unicode, concatenació: + Mètodes de la classe String: getBytes(), split(regexp), i molts més Comparació: str1.equals(str2); str1.equalsIgnoreCase(str2); university-log G. Navarro Java Intro 15 / 20 Java class org hi more threads io array str doc ref Javadoc: Documentació de l’API aka la Bíblia Documentació de l’API de Java amb Javadoc university-log G. Navarro Java Intro 16 / 20 Java class org hi more threads io array str doc ref Javadoc d’un package university-log G. Navarro Java Intro 17 / 20 Java class org hi more threads io array str doc ref Javadoc d’una classe university-log G. Navarro Java Intro 18 / 20 Java class org hi more threads io array str doc ref Referències Informació sobre la pràctica (links, fòrums, . . . ): ccd-dc0.uab.es/xarxesI/. university-log G. Navarro Java Intro 19 / 20 Java class org hi more threads io array str doc ref Referències Informació sobre la pràctica (links, fòrums, . . . ): ccd-dc0.uab.es/xarxesI/. Java Home Page: java.sun.com: J2SE 5.0. university-log G. Navarro Java Intro 19 / 20 Java class org hi more threads io array str doc ref Referències Informació sobre la pràctica (links, fòrums, . . . ): ccd-dc0.uab.es/xarxesI/. Java Home Page: java.sun.com: J2SE 5.0. Internet està ple de tutorials the Java: http://programacion.com/java/, The Java Tutorial. ... university-log G. Navarro Java Intro 19 / 20 Java class org hi more threads io array str doc ref Referències Informació sobre la pràctica (links, fòrums, . . . ): ccd-dc0.uab.es/xarxesI/. Java Home Page: java.sun.com: J2SE 5.0. Internet està ple de tutorials the Java: http://programacion.com/java/, The Java Tutorial. ... Llibres: Thinking in Java (Bruce Eckel). ... university-log G. Navarro Java Intro 19 / 20 Java class org hi more threads io array str doc ref Happy Hacking! university-log G. Navarro Java Intro 20 / 20