Ver Mensaje Individual
  #7 (permalink)  
Antiguo 31/07/2008, 22:41
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Diferencias entre java y C++

Hola,

Solamente me gustaría aclarar lo siguiente...

Cita:
Iniciado por astaros Ver Mensaje
... Una de las diferencias entre Java y C++, es que Java introdujo arrays que realmente lo son ...
Que es un array verdadero ? C++ tiene arrays falsos ? Quien define qué es un array ? En Java el Array es un objeto, por lo que tiene mayor funcionalidad, igual que si usas Vector:: en C++.

Cita:
Iniciado por astaros Ver Mensaje
... y eliminaron la aritmetica de punteros ...
La aritmetica de punteros se eliminó completamente, puesto que Java es un lenguage que funciona en diferentes sistemas operativos y arquitecturas. Funciona indistintamente en un procesador de 16, 32 o 64 bits sin necesidad de compilar de nuevo el código, al contrario de C++. Creo que ocultando los punteros al programador (acceso directo a memoria) fue importante para eliminar los inconvenientes entre varias arquitecturas de hardware y software.

Pero tiene un concepto de "referencias", que en su debido límite viene a compararse a los punteros.

Código:
// ************ Java
public class Test {
  private class _v {
    public _v(int v) { value = v; };
    public int value;
  }
  public Test() {
    _v p = new _v(1);
    _v q;
    q = p;
    System.out.println(p.value + " " + p.toString()); // 1 Test$_v@19821f
    System.out.println(q.value + " " + q.toString()); // 1 Test$_v@19821f
  }
  public static void main(String[] args) {
    new Test();
  }
}

// ************ C++
#include "iostream"
using namespace std;
class _v {
public:
  _v(int v) { value = v; };
  int value;
};
int main() {
  _v* p = new _v(1);
  _v* q;
  q = p;
  cout << p->value << " " << (void *)p << endl; // 1 00032E18
  cout << q->value << " " << (void *)q << endl; // 1 00032E18
  delete q;
  return 0;
}
En Java, q hace referencia a p de una forma parecida a un puntero.
En C, son punteros. (Solo hay 1 instancia de _v en los dos ejemplos).

Cita:
Iniciado por djagu_26 Ver Mensaje
... ya que posee un GC(garbage collector) que cuando pasa(automatica no hay forma de llamarlo) ...
Runtime r = Runtime.getRuntime();
r.gc();

Cita:
Iniciado por Xinef Ver Mensaje
... que tenga tipos de datos primitivos o básicos le quita porcentaje. . Es decir, Java no es orientado a objetos "puro".
Para cada tipo primitivo hay una clase que encapsula el tipo.

Saludos,