variable entera
entero | Número de Bytes | Rango de datos |
---|---|---|
byte | 1 | [-128,127] |
corto | 2 | [-32768,32767] |
En t | 4 | [-2 ^ 31, 2 ^ 31-1] |
largo | 8 | [-2 ^ 63, 2 ^ 63-1] |
Nota: El número de Bytes empresa independiente del sistema
de byte es la unidad básica del espacio de representación por ordenador de
uso de la computadora representación binaria de los datos creemos que ocho bits (bits) es un byte (byte) ..
1 KB = 1024 bytes, 1 MB = 1024 KB, 1 GB = 1024 MB
de datos representados por 4 bytes cubre -2 ^ 31 -> 2 ^ 31-1, se trata de 21 -21 mil millones y cien millones
public class Solution {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}
Si se excede el rango de alcance máximo int, se producirá desbordamiento
public class Solution {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE + 1);
}
Se encontró que la máxima int 1, pero como mínimo, la vista de esta situación, tenemos que utilizar una gama más amplia de tipos de datos para representar la introducción de largo tiempo variable entera
- La sintaxis básica y crear variables int son básicamente el mismo, solo cambia el tipo a largo
- El valor de ajuste inicial 10L, representa un número entero largo. Mayo 10l
public class Solution {
public static void main(String[] args) {
System.out.println(Long.MAX_VALUE );
System.out.println(Long.MIN_VALUE );
}
}
En comparación con int, mayores rangos largos
variable float
tipo de punto flotante | Número de Bytes |
---|---|
flotador | 4 |
doble | 8 |
Cumplir con los estándares IEEE
public class Solution {
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a / b);
}
}
La razón se debe a que el número entero dividido por un entero o entero, por lo que se debe cambiar a una doble
public class Solution {
public static void main(String[] args) {
double a = 1;
double b = 2;
System.out.println(a / b);
}
Mira un ejemplo
public class Solution {
public static void main(String[] args) {
double a = 1.1;
System.out.println(a * a);
}
}
El resultado es que
la razón es porque el intento de utilizar el espacio de memoria puede ser limitada representación decimal infinita, no está obligado a ser un cierto grado de error de precisión.
variables de punto flotante de precisión simple flotan un valor inicial
float num = 1.0f; // 写作 1.0F 也可以
Debido a la gama de precisión de datos pequeño indicado, generalmente utilizados en los proyectos de flotación son
prioridades doble, no se recomienda el uso de flotador.
Char tipo de variable
char ch = 'A';
char a = '啊';
Es un carácter entero de la naturaleza del uso de la computadora caracteres ASCII representados en el lenguaje C, y la representación de Java el uso de Unicode de caracteres. Por lo tanto un carácter ocupa dos bytes, caracteres representados por más especies, incluido el chino.
Nota : el tipo de byte y el tipo de carácter no relacionada
variable booleana
- tipo booleano de la variable sólo dos valores, verdaderos para la representación falsa verdadero, falso.
- Java no es el int tipo booleano y la conversión, 1 indica la ausencia de cierto, 0 representa el uso de tal falsa.
- Tipo de implementos booleanos algunos JVM es de 1 byte, algunos de los cuales se representó un poco, esto no está claramente definido
Tipo de variable de cadena
1. Los tipos anteriores y diferentes, cadena no es un tipo primitivo, pero el tipo de referencia (explicación de enfoque posterior).
2. cadena de cierta representación directa menos conveniente de los personajes necesitará ser escapado
carácter de escape | explicación |
---|---|
\norte | Wrap |
\ t | pestaña horizontal |
\ ' | Las comillas simples |
\ " | Las comillas dobles |
\ \ | barra invertida |
public class Solution {
public static void main(String[] args) {
String str = "result = ";
int a = 10;
int b = 20;
String result = str + a + b;
System.out.println(result);
}
}
Códigos descritos anteriormente, cuando hay un comportamiento cadena de expresión de cadena carácter +, empalme se lleva a cabo.
ámbito de la variable
Es decir, la gama puede ser variable en efecto, es generalmente bloque de definición de la variable (frenos) donde
denominar las variables
- Un nombre de variable sólo puede contener números, letras, guiones bajos
- Los números no comienzan con
- entre mayúsculas y minúsculas
Los nombres de clase recomiendan gran joroba de nomenclatura: FirstTest
variables y nombres de los métodos recomendados pequeña joroba nomenclatura: maxValue
constante
- Los literales
10 | literales int (decimales) |
010 | literales int (octal). 010 es los números decimales que comienzan con 0 8 |
0x10 | literales int (hexadecimal). 0x10 es números decimales por el 0x comenzando 16 |
10L | literales largos también pueden escribirse como 10L (L minúscula) |
1.0 | literales dobles también se pueden 1.0d o 1,0 D escritos |
1.5e2 | duplicar constante literal. notación científica. equivalente a 1,5 * 10 ^ 2 |
1.0f | flotar constantes literales pueden escribirse 1.0f |
cierto | constante literal boolen, el mismo, así como falsa |
'una' | charla constante literal, comillas simples sólo un carácter |
"a B C" | Cuerda constantes literales, comillas dobles pueden tener varios caracteres |
- palabra clave modificación final de las constantes
razón dada es: Las constantes no puede ocurrir en el programa modificado se está ejecutando.
tipo de conversión
int y largo / doble cada asignación
public class Solution {
public static void main(String[] args) {
int a = 10;
long b = 20;
a = b; // 编译出错, 提示可能会损失精度.
b = a; // 编译通过.
int a = 10;
double b = 1.0;
a = b; // 编译出错, 提示可能会损失精度.
b = a; //编译通过.
}
}
Conclusión: asignación entre diferentes tipos de variable numérica, se representa el rango de tipos más pequeños se pueden convertir implícitamente en una gran gama de tipos, viceversa
int y asignación mutua boolean
int a = 10;
boolean b = true;
b = a; // 编译出错, 提示不兼容的类型
a = b; // 编译出错, 提示不兼容的类型
Conclusión: int y boolean dos tipos de no relacionada, no se puede asignar a cada otro
literales int para la asignación de bytes
byte a = 100; // 编译通过
byte b = 256; // 编译报错, 提示从int转换到byte可能会有损失
Conclusión: Utilice literales de tiempo asignados, Java comprobará automáticamente para realizar algunas comprobaciones para determinar si se trata de la asignación razonable
Use yesos
int a = 0;
double b = 10.5;
a = (int)b;
int a = 10;
boolean b = false;
b = (boolean)a; // 编译出错, 提示不兼容的类型
conclusión:
- Yeso puede causar pérdida de precisión. Al igual que en el ejemplo anterior, después de la asignación, 10,5 se convierte en 10, por detrás se ignora el punto decimal.
- Moldeada no necesariamente tenga éxito, no tiene la fuerza de transferencia entre tipos dispares
Tipo de conversión Resumen
- Asignación entre diferentes tipos de variable numérica, representa el rango de tipos más pequeños se puede convertir implícitamente en una amplia gama de tipos.
- Si necesita tipo asignado a una amplia gama de variedad de pequeñas, necesidad de yeso, pero puede perder precisión.
- Cuando se una asignación constantes literales, Java será controlada automáticamente contra un rango de números
promoción numérica
resumen:
- La mezcla de diferentes tipos de operación de datos, un pequeño rango de elevación puede ser mayor rango.
- Por fin, el byte 4 más pequeña que la del tipo byte, se subió a los primeros cuatro bytes de la int, recálculo