English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A variável é a solicitação de memória para armazenar valores. Isso significa que, ao criar uma variável, é necessário solicitar espaço na memória.
O sistema de gerenciamento de memória aloca espaço de armazenamento para variáveis com base no tipo, e o espaço alocado pode ser usado apenas para armazenar dados do tipo correspondente.
Portanto, através da definição de variáveis de diferentes tipos, é possível armazenar inteiros, decimais ou caracteres na memória.
Os dois maiores tipos de dados do Java:
tipos de dados integrados
tipos de dados referenciados
O Java oferece oito tipos de dados básicos. Seis tipos de números (quatro inteiros, dois ponto flutuantes), um tipo de caractere e um tipo booleano;
byte:
O tipo de dados byte é8inteiro, assinado, representado por complemento de dois;
O valor mínimo é -128(-2^7);
O valor máximo é 127(2^7-1);
O valor padrão é 0;
O tipo de dados byte é usado para economizar espaço em grandes arrays, principalmente para substituir inteiros, pois o espaço ocupado por uma variável byte é apenas um quarto do tipo int;
Exemplo: byte a = 100,byte b = -50。
short:
O tipo de dados short é 16 número inteiro, representado por complemento de dois binário
O valor mínimo é -32768(-2^15);
O valor máximo é 32767(2^15 - 1);
O tipo de dados Short também pode economizar espaço, como o byte. Uma variável short é metade do espaço ocupado por uma variável int;
O valor padrão é 0;
Exemplo: short s = 1000, short r = -20000。
int:
O tipo de dados int é32número inteiro, representado por complemento de dois binário;
O valor mínimo é -2,147,483,648(-2^31);
O valor máximo é 2,147,483,647(2^31 - 1);
Geralmente, as variáveis inteiiras são do tipo int por padrão;
O valor padrão é 0;
Exemplo: int a = 100000, int b = -200000。
long:
O tipo de dados long é 64 número inteiro, representado por complemento de dois binário;
O valor mínimo é -9,223,372,036,854,775,808(-2^63);
O valor máximo é 9,223,372,036,854,775,807(2^63 -1);
Este tipo é principalmente usado em sistemas que precisam comparar grandes números inteiros;
O valor padrão é 0L;
Exemplo: long a = 100000L, Long b = -200000L。
"L" teoricamente não difere entre maiúsculas e minúsculas, mas se escrito como "l", é fácil confundir-se com o número"1"Confuso, difícil de distinguir. Portanto, é melhor usar maiúsculas.
float:
O tipo de dados float é de precisão simples,32bits, conforme o padrão IEEE 754número flutuante padrão;
O float pode economizar espaço de memória ao armazenar grandes arrays de números flutuantes;
O valor padrão é 0.0f;
Os números flutuantes não podem ser usados para representar valores exatos, como moeda;
Exemplo: float f1 = 234.5f。
double:
O tipo de dados double é de precisão dupla,64 bits, conforme o padrão IEEE 754número flutuante padrão;
O tipo de número flutuante padrão é double;
O tipo de dados double não pode representar valores exatos, como moeda;
O valor padrão é 0.0d;
Exemplo: double d1 = 123.4.
boolean:
O tipo de dados boolean representa uma informação de um bit;
Existem apenas dois valores: true e false;
Este tipo é usado apenas como um sinalizador para registrar true/situação falsa;
O valor padrão é false;
Exemplo: boolean one = true。
char:
O tipo de dados char é um único 16 caractere Unicode;
O valor mínimo é \u0000 (ou seja, 0);
O valor máximo é \uffff (ou seja,65,535);
O tipo de dados char pode armazenar qualquer caractere;
Exemplo: char letter = 'A';.
Para o intervalo de valores dos tipos básicos de números, não é necessário memorizar forçosamente, pois seus valores já estão definidos como constantes nas classes de pacote correspondentes. Veja o exemplo a seguir:
public class PrimitiveTypeTest { public static void main(String[] args) { // byte System.out.println("Tipo básico: byte, números de bits binários: ") + Byte.SIZE) System.out.println("Classe de pacote: java.lang.Byte") System.out.println("O valor mínimo: Byte.MIN_VALUE=") + Byte.MIN_VALUE) System.out.println("O valor máximo: Byte.MAX_VALUE=") + Byte.MAX_VALUE) System.out.println(); // short System.out.println("Tipo básico: short Número de bits binários:") + Short.SIZE) System.out.println("Classe de pacote: java.lang.Short") System.out.println("O valor mínimo: Short.MIN_VALUE=") + Short.MIN_VALUE) System.out.println("O valor máximo: Short.MAX_VALUE=") + Short.MAX_VALUE) System.out.println(); // int System.out.println("Tipo básico: int Número de bits binários:") + Integer.SIZE) System.out.println("Classe de pacote: java.lang.Integer") System.out.println("O valor mínimo: Integer.MIN_VALUE=") + Integer.MIN_VALUE) System.out.println("O valor máximo: Integer.MAX_VALUE=") + Integer.MAX_VALUE) System.out.println(); // long System.out.println("Tipo básico: long Número de bits binários:") + Long.SIZE) System.out.println("Classe de pacote: java.lang.Long") System.out.println("O valor mínimo: Long.MIN_VALUE=") + Long.MIN_VALUE) System.out.println("O valor máximo: Long.MAX_VALUE=") + Long.MAX_VALUE) System.out.println(); // float System.out.println("Tipo básico: float Número de bits binários:") + Float.SIZE) System.out.println("Classe de pacote: java.lang.Float") System.out.println("O valor mínimo: Float.MIN_VALUE=") + Float.MIN_VALUE); System.out.println("Valor máximo: Float.MAX_VALUE=") + Float.MAX_VALUE); System.out.println(); // double System.out.println("Tipo básico: double Número de bits binários:") + Double.SIZE); System.out.println("Classe de pacote: java.lang.Double"); System.out.println("Valor mínimo: Double.MIN_VALUE=") + Double.MIN_VALUE); System.out.println("Valor máximo: Double.MAX_VALUE=") + Double.MAX_VALUE); System.out.println(); // char System.out.println("Tipo básico: char Número de bits binários:") + Character.SIZE); System.out.println("Classe de pacote: java.lang.Character"); // Emitir Character.MIN_VALUE em forma numérica em vez de caractere para a consola System.out.println("Valor mínimo: Character.MIN_VALUE=") + (int) Character.MIN_VALUE); // Emitir Character.MAX_VALUE em forma numérica em vez de caractere para a consola System.out.println("Valor máximo: Character.MAX_VALUE=") + (int) Character.MAX_VALUE); } }
O resultado da compilação do código acima é mostrado a seguir:
Tipo básico: byte Número de bits binários:8 Classe de pacote: java.lang.Byte Valor mínimo: Byte.MIN_VALUE=-128 Valor máximo: Byte.MAX_VALUE=127 Tipo básico: short Número de bits binários:16 Classe de pacote: java.lang.Short Valor mínimo: Short.MIN_VALUE=-32768 Valor máximo: Short.MAX_VALUE=32767 Tipo básico: int Número de bits binários:32 Classe de pacote: java.lang.Integer Valor mínimo: Integer.MIN_VALUE=-2147483648 Valor máximo: Integer.MAX_VALUE=2147483647 Tipo básico: long Número de bits binários:64 Classe de pacote: java.lang.Long Mínimo: Long.MIN_VALUE=-9223372036854775808 Máximo: Long.MAX_VALUE=9223372036854775807 Tipo Básico: float Tamanho em Bits:32 Classe de Envoltório: java.lang.Float Mínimo: Float.MIN_VALUE=1.4E-45 Máximo: Float.MAX_VALUE=3.4028235E38 Tipo Básico: double Tamanho em Bits:64 Classe de Envoltório: java.lang.Double Mínimo: Double.MIN_VALUE=4.9E-324 Máximo: Double.MAX_VALUE=1.7976931348623157E308 Tipo Básico: char Tamanho em Bits:16 Classe de Envoltório: java.lang.Character Mínimo: Character.MIN_VALUE=0 Máximo: Character.MAX_VALUE=65535
Os valores mínimos e máximos dos Float e Double são exibidos em forma de notação científica, com o "E" no final+número "E" antes deve ser multiplicado por10quantas vezes? Por exemplo3.14E3é3.14 × 103 =3140,3.14E-3 é 3.14 x 10-3 =0.00314.
Na verdade, o JAVA também possui outro tipo básico void, que também tem sua classe de envoltório java.lang.Void, mas não podemos operá-los diretamente.
A tabela a seguir lista os valores padrão de todos os tipos do Java:
Tipo de Dados | Valores Padrão |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | 'u0000' |
String (ou qualquer objeto) | null |
boolean | false |
public class Test { static boolean bool; static byte by; static char ch; static double d; static float f; static int i; static long l; static short sh; static String str; public static void main(String[] args) { System.out.println("Bool: ") + bool); System.out.println("Byte: ") + by); System.out.println("Character: ") + ch); System.out.println("Double: ") + d); System.out.println("Float: ", + f); System.out.println("Integer: ", + i); System.out.println("Long: ", + l); System.out.println("Short: ", + sh); System.out.println("String: ", + str); } }
O resultado da saída do exemplo é:
Bool: false Byte: 0 Character: Double: 0.0 Float: 0.0 Integer: 0 Long: 0 Short: 0 String: null
No Java, as variáveis de tipo de referência são muito semelhantes ao C/C++Ponteiro. Tipos de referência apontam para um objeto, e a variável que aponta para o objeto é uma variável de referência. Essas variáveis são especificadas como um tipo específico no momento da declaração, como Employee, Puppy, etc. Uma vez declarada, a tipo não pode ser alterada.
Objetos e arrays são tipos de dados de referência.
O valor padrão de todos os tipos de referência é null.
Uma variável de referência pode ser usada para referenciar qualquer tipo compatível.
Exemplo: Site site = new Site("w3codebox")
As constantes não podem ser modificadas durante a execução do programa.
No Java, o palavra-chave final é usada para modificar constantes, da mesma forma que os variáveis:
final double PI = 3.1415927;
Embora os nomes das constantes também possam ser em minúsculas, geralmente usa-se letras maiúsculas para facilitar a identificação das constantes.
Literals podem ser atribuídos a qualquer tipo embutido. Por exemplo:
byte a = 68; char a = 'A'
byte, int, long e short podem ser representados em decimal,16e8forma de sistema numérico.
Quando se usa constantes, o prefixo 0 indica 8 Sistemas numéricos, enquanto o prefixo 0x representa 16 Sistemas numéricos, por exemplo:
int decimal = 100; int octal = 0144; int hexa = 0x64;
Como em outras linguagens, as constantes de string no Java são sequências de caracteres entre aspas duplas. Abaixo estão exemplos de literals de tipo string:
"Hello World" "two\nlines" ""This is in quotes""
Constantes de string e constantes de caractere podem conter qualquer caractere Unicode. Por exemplo:
char a = '\u000'1'; String a = "\u0001";
O Java suporta algumas sequências de caracteres de escape especiais.
Símbolo | Significado do caractere |
---|---|
\n | Quebra de linha (0x0a) |
\r | Retorno de carro (0x0d) |
\f | Página de retorno (0x0c) |
\b | Backspace (0x08) |
\0 | Caractere nulo (0x0) |
\s | Espaço (0x20) |
\t | Tabulação |
\" | Aspas duplas |
\' | Aspas simples |
\\\ | Barra invertida |
\ddd | Caracteres octal (ddd) |
\uxxxx | 16Caracteres Unicode em sistema de numeración (xxxx) |
Os dados inteiros, reais (constantes) e de caractere podem ser operados em mistura. Durante a operação, os dados de diferentes tipos são convertidos para o mesmo tipo e então operados.
A conversão é de baixo para alto.
Baixo ------------------------------------> Alto byte,short,char—> int —> long—> float—> double
A conversão de tipo de dados deve atender às seguintes regras:
1. Não pode-se realizar conversão de tipo no tipo de dados boolean.
2. Não pode-se converter um tipo de dados de objeto em um objeto de classe não relacionada.
3. Quando se converte um tipo de dados de capacidade maior para um tipo de dados de capacidade menor, deve-se usar conversão de tipo forçada.
4. Durante o processo de conversão, pode ocorrer overflow ou perda de precisão, por exemplo:
int i =128; byte b = (byte)i;
porque o tipo byte é 8 bits, o valor máximo é127,portanto, quando o tipo int é forçado a converter para o tipo byte, o valor 128 ocorrerá overflow.
5. A conversão de número decimal para inteiro através da descarte dos dígitos decimais, não arredondando, por exemplo:
(int)23.7 == 23; (int)-45.89f == -45
Deve ser garantido que o número de bits do tipo de dados antes da conversão seja menor que o número de bits do tipo de dados após a conversão, por exemplo: o número de bits do tipo de dados short é16bits,pode ser automaticamente convertido para32do tipo int,de mesmo modo,o número de bits do tipo float é32,pode ser convertida automaticamente para64bits do tipo double.
public class ZiDongLeiZhuan{ public static void main(String[] args){ char c1='a';//Defina um tipo char int i1 = c1;//Conversão automática do tipo char para int System.out.println("O valor igual a após a conversão automática do tipo char para int"+i1); char c2 = 'A';//Defina um tipo char int i2 = c2+1;//Cálculo do tipo char e int System.out.println("O valor calculado do tipo char e int é igual a"+i2); } }
O resultado da execução é:
O valor igual a após a conversão automática do tipo char para int97 O valor calculado do tipo char e int é igual a66
Análise:c1 O valor é um caractere a , the corresponding int type value can be found by looking up the ASCII code table 97, A corresponds to the value 65, so i2=65+1=66.
1. The condition is that the data type to be converted must be compatible.
2. Format: (type)value type is the data type to be cast Example:
public class QiangZhiZhuanHuan{ public static void main(String[] args){ int i1 = 123; byte b = (byte)i1;//Casting to byte System.out.println("The value after casting int to byte is equal to"+b); } }
Running Result:
The value after casting int to byte is equal to123
1. The default type for integers is int.
2. There is no such case for floating-point numbers, because when defining the float type, it is necessary to follow the number with F or f.
This section explains the basic data types of Java. The next section will discuss different variable types and their usage.