Вы находитесь на странице: 1из 4

Tamao copa - una historia acerca de las variables

La cafetera Coffee Corral en el Rancho es famoso por estas partes para su


coleccin taza nica. Si usted realmente necesita entender los valores vas
y los objetos se utilizan en Java, tienes que empezar aqu.
Me gusta tazas. Grandes vasos, pequeas tazas. Tazas pintadas de t,
enormes cuencos cappuccino, vasos con logotipos de la cafetera de la
UCLA. Copas Pint mi mismo en el "All Fired Up" tienda de cermica. Tazas
con curvas, manijas sexy. Tazas metlicas que ahora que conozco deben
nunca, nunca ir en el microondas.
As que cuando pienso en las variables, naturalmente pienso ... tazas. Una
variable es simplemente una taza. Tiene un tamao, y que puede contener
algo. En Java, tazas vienen en dos estilos principales: primitiva y referencia.
Cupsd primitivos tienen valores primitivos. Copas de referencia tienen los
mandos a distancia a los objetos.
Vamos a empezar con las primitivas. Tazas primitivos son como las copas que
tienen en la cafetera. Si usted est familiarizado con Starbucks ya sabes lo
que quiero decir. Vienen en diferentes tamaos y cada tamao tiene un
nombre como bajo, alto, grande. Al igual que en "Me gustara un java
mocha grande con crema batida extra. Ah, y el uso de leche descremada
por favor")
Nuestra casa de caf tiene una foto de las copas en la barra, para que los
clientes sepan qu orden. Se ve as:

En Java, primitivas enteros viene en diferentes tamaos, y los tamaos tienen


nombres. Se ven as:

Estas copas tienen un valor. As que en lugar de decir: "Me gustara un asado
francs de altura", dice usted que el compilador, "Me gustara un int con el
nmero 90, por favor." Y eso es lo que obtienes. (Tambin hay que darle su
taza un nombre, pero ya llegaremos a eso ms adelante.

El nmero 90 se deja caer en su taza diminuta. Pero qu pasa con los


nmeros de punto flotante? (las cosas con puntos decimales) Consiguen sus
propias tazas tambin.

Y hay otra taza para booleanos, que puede almacenar valores de


verdadero o falso. Y una taza de sillas, que almacenan caracteres
individuales como la letra 'c' o 'z'. En Java, cada una de estas tazas (float,
char, largo, etc.) es un tamao especfico. Byte es el ms pequeo, doble y
larga son los ms grandes. En lugar de medida en mililitros (o onzas como lo
hacemos en los EE.UU.) variables de Java tienen un tamao medido en bits:
byte - 8 bits
short - 16 bits
int - 32 bits
long - 64 bits
Todos estos tipos enteros estn firmados. El bit ms a la izquierda representa
el signo (positivo o negativo) y no forma parte del valor. As que con un byte,
por ejemplo, usted no recibe el conjunto de 8 bits para representar su valor.
Usted obtiene 7. Esto le da una orden, por bytes, de: (-2 al 7) a (2 al 7) -1.
Por qu ese pequeo -1 en el final? Debido a que el cero es all, y cero
cuenta como negativo. Funciona de la misma manera con los dems.
float - 32 bits
double - 64 bits

Nmeros de punto flotante estn en el estndar IEEE 754. Si eso significa algo
para usted, muy bien. Si no lo hace, bueno, entonces, vas a tener que luchar
a travs de la disertacin tcnica largo en nmeros de punto que me siento
obligado a insertar aqu flotante. Qu diablos, me voy a saltar la misma.
Retomamos nuestras variables primitivas, ya en curso.
Char - 16 bits, UNSIGNED
(Formato Unicode - para Ingls, se asigna a la perfeccin a ASCII con los
altos 8 bits simplemente colgando como un montn de ceros)
boolean - hmm ... no se supone que preguntar. Contiene un valor de
verdadero o falso, pero es realmente almacena como un valor numrico,

probablemente en una taza bytes de tamao. Trate de no pensar en el


tamao; todo lo que sabe es que tiene un valor lgico.
Vamos a llegar a las Copas realmente interesante ... Referencias
En Java, si usted quiere meter un objeto en una variable, recuerda que el
objeto es creado en el montn de basura-coleccionable. Siempre. As que
no es en la variable. No hay vasos gigantes, ampliable que se pueden hacer
suficientemente grande para contener cualquier objeto. Y a diferencia de
C / C ++, no hay tazas que sujetan la ubicacin de memoria exacta del
objeto.
En Java, los objetos se crean en el montn, y una referencia al objeto se
almacena en la taza. Piense en ello como un mando a distancia para un
tipo especfico de objeto.

En el caf de Corral, un cliente puede pedir un control remoto para TV Piden


as: "Me gustara una referencia a un nuevo Sony 32 de televisin por favor,
y el nombre de la TV." que en Java se parece a:

Pero observe el nombre escrito en la copa. Las copas tienen nombres nicos.
Imagnese si usted tena un montn de mandos a distancia, y nadie saba
cul controla que la televisin. As que hacemos la gente pone nombres en
sus tazas de control remoto. Pero el nombre no est en el objeto - el objeto
tiene un identificador nico, como un nmero de serie, pero eso no es lo
mismo que lo que usted nombra la referencia! El nombre de referencia (el
nombre en la taza) es su eleccin.
Es lo mismo para las primitivas - lo que las copas de esta manera: "Me
gustara un byte con el nmero 7, y el nombre x favor".

Para referencias a objetos, tambin puede pedir un control remoto de


autoservicio... un control remoto en el que no tiene un objeto de televisin
escogi todava. Usted todava obtener el control remoto en la copa, pero
"programa" que a distancia de la televisin especfica ms adelante.
En Java dices:
Sony 32 TV; // Declarar pero no inicializar con un Sony 32 objeto real.
Es como decir, "Me gustara una referencia a un televisor Sony de 32 aos, y
el nombre de la 'tv' a distancia, pero voy a escoger la televisin actual ms
tarde.". Usted recibe la copa, se obtiene la distancia, pero no hay objeto y
la distancia no es el control de nada. En Java, un mando a distancia que se
refiere a la nada es una referencia con un valor de null. As que lo que
realmente est dentro de esa taza? Qu es un mando a distancia? En
Java, controles remotos se llaman referencias. Almacenan un valor que la
Mquina Virtual Java (JVM) utiliza para llegar a su objetivo. Es seguro que se
ve y se siente mucho como un puntero, y podra muy bien ser un puntero a
un puntero, o ... no se puede saber. Es un detalle de implementacin que,
como programador, no se puede acceder. Ni siquiera pensar en ello. No
hay manera de utilizar ese valor distinto para acceder a los mtodos y
variables del objeto real de la referencia se refiere a. Eso es parte de lo que
hace de Java ms seguro que C / C ++. No se puede ir directamente a
cualquier posicin de memoria arbitraria. La JVM asigna memoria en su
nombre, por su objeto y almacena una cosa direccin-como en la copa de
referencia (que es muy probable que una taza de 32 bits, pero no garantiza
que sea). Si esto te deprime, tomar una respiracin profunda, tener un buen
gran taza de t caliente y superarlo. Cuando usted comienza a hacer
CORBA se le agradece all de la creencia de que usted no tiene que
hacerse cargo de la memoria.

Вам также может понравиться