Fundamentos de Java
Material de Estudio
  1. Ver CD de Pañol
  2. Manual en línea
  3. Programas del texto Guía (que está en biblioteca)
  4. Ejemplos de que acompañan al SDK (Software Development Kit) Ver en /usr/local/java/j2sdk/demo
Ejemplos
  1. Welcome
  2. ImageViewer
  3. Applet:  WelcomeApplet    Prueba    Código  (ver html)
Ideas Generales
  1. Un programa Java es la definición de una clase que contiene el método main, a través de él se pueden invocar acciones o servicios de otros objetos y clases.
  2. Una clase es la especificación que define una categoría de entes reales o no reales. Candidatos para definir una clase son generalmente sustantivos como: persona, muebles, pasaporte,  cuenta. Toda clase define el comportamiento (métodos) y/o los atributos (datos) de la categoría de entes que representa.
  3. Un Objeto es una instancia de una clase. Es un caso particular de los especificados por la clase. Se carateriza por tener: una Identidad, un Estado y un Comportamiento. El primero se define al crear el objeto y puede haber varias identidades para un mismo objeto (Agustín J. González == persona de rut XXXXXXX-X). El estado es el conjunto de valores que tienen los atributos en un instante. El comportamiento es el conjunto de métodos definidos para la clase.
    Por ejemplo: Paula podría ser una instancia de la clase persona. Si la clase persona tiene definida la edad como atributo, Paula tendría 6 años. Si la clase persona tiene definido el comportamiento hacerUnDibujo(), Paula podría hacer un dibujo si se lo pedimos: dibujoEjemplo=Paula.hacerUnDibujo();  Suponemos aquí que el método retorna un objeto que almacenamos en dibujoEjemplo, el cual es una instancia de la case Dibujo, por ejemplo.
    El comportamiento generalmente se relaciona con verbos o preguntas si su salida es booleana.
  4. El lenguaje tiene clases predefinidas y podemos crear nuevas. A partir de ellas podemos crear objetos para lo que se nos dé la gana.
  5. Los lenguajes orientados a objetos no son otra cosa que una definición de reglas sintácticas para expresar todo lo que es conveniente poder hacer con estos objetos para vincularlos y con ellos plantear las soluciones a los problemas.
  6. A través de ejemplos iremos viendo esas reglas y cómo se usan.
Aspectos sintácticos
  1. Tipos primitivos en Java: Hay 8.

Tipo
Tamaño
Entero
int
4
short
2
long
8
byte
1
Punto flotante
float
4
double
8
Caracter
char
2
Booleano
boolean

  1. Constantes
    Se usa la palabra reservada final.
    Ejemplo: final double CM_PER_INCH= 2.54;
  2. Operadores: Los mismos que en C y con casi igual semántica difiere en la comparación.
  3. El booleano es distinto que el entero => while(1) .... no vale en Java   if (a=3) ... es error en Java
  4. Los string no son primitivos => son objetos => if ("Hola" == "Hola") ... es falso debido a que en Java los nombres de los objetos no son más que referencias a ellos en Java.
    Lo anterior equivale a: Sea
    String a="Otro" , b="Otro"; //luego
    if (a==b)   ...  // es falso porque a y b se refieren a objetos distintos que casualmente tienen igual estado.
    Por otro lado, si tenemos:
    String a="Mas"; 
    String b=a;
    if (a ==b) ... // es verdadero.
  5. En Java todos los objetos son asignados y pasados como referencias (sintaxis de punteros en C). Cuando definimos un nombre para un objeto (variable), sólo se crea el nombre para un objeto. Luego, debemos crear el objeto y asignarlo al nombre. En cierta forma esto es similar a crear un puntero y luego hacer un malloc para una ubicación en memoria al objeto requerido.
    Los tipos básicos o primitivos de arriba, siguen al semántica de C para su acceso y paso de parámetros (paso por valor). En el caso de objetos, pasamos la referencia al objeto porque el nombre es pasado por valor, pero éste es la referencia al objeto.
Control de flujo
El control de flujo: while, for, switch, if, etc... son iguales que en C excepto que no hay goto en Java (y hay una versión rotulada del break).

Estudio de temas vía ejemplos:FirstSample.java,   InputTest.javaLotteryOdds.javaLotteryArray.java