Você pode fazer Integer n = 9;devido à autoboxing (a menos que você estiver usando uma versão muito antiga do java)
Alderath
Respostas:
320
inté um tipo primitivo. Variáveis do tipo intarmazenam o valor binário real do número inteiro que você deseja representar. int.parseInt("1")não faz sentido porque nãoint é uma classe e, portanto, não possui métodos.
Integeré uma classe, não diferente de qualquer outra na linguagem Java. Variáveis do tipo Integerarmazenam referências a Integerobjetos, assim como qualquer outro tipo de referência (objeto). Integer.parseInt("1")é uma chamada para o método estático parseIntda classe Integer(observe que esse método realmente retorna um inte não um Integer).
Para ser mais específico, Integeré uma classe com um único campo do tipo int. Essa classe é usada onde você precisa intser tratado como qualquer outro objeto, como em tipos genéricos ou situações em que você precisa de nulidade.
Observe que todo tipo primitivo em Java possui uma classe de wrapper equivalente :
byte tem Byte
short tem Short
int tem Integer
long tem Long
boolean tem Boolean
char tem Character
float tem Float
double tem Double
As classes de wrapper herdam da classe Object e as primitivas não. Portanto, ele pode ser usado em coleções com referência a objeto ou com genéricos.
Desde o java 5, temos autoboxing, e a conversão entre as classes primitiva e wrapper é feita automaticamente. Cuidado, no entanto, pois isso pode introduzir erros sutis e problemas de desempenho; ser explícito sobre conversões nunca é demais.
Quero ressaltar, acho que essa é a resposta perfeita por dois motivos: 1 - Concisa e precisa, mantendo o público / as pessoas em mente 2 - Fornece orientações para detalhes adicionais, em vez de colocar tudo no texto da resposta as perguntas podem ser respondidas com precisão e concisão (algumas exigem muito mais detalhes e nuances para serem precisas e completas), mas acho que todas as respostas devem tentar ser simples e diretas.
25316 DRich
11
Acho que é o contrário. "int é um tipo primitivo" não diz nada, se você não sabe o que é um tipo primitivo. (E se você souber, provavelmente já sabe a diferença entre int e Inteiro). E enviar o leitor para dois links denominados "Link 1" e "Link 2" é bastante inútil, especialmente se comparado a apenas citar as seções relevantes.
Steve Bennett
7
Um número inteiro é basicamente apenas um invólucro para o tipo primitivo int. Ele permite que você use todas as funções da classe Integer para tornar a vida um pouco mais fácil para você.
Se você é novo no Java, algo que você deve aprender a apreciar é a documentação do Java. Por exemplo, qualquer coisa que você queira saber sobre a Classe Inteira está documentada em detalhes.
Isso é retirado da documentação da classe Integer:
A classe Integer agrupa um valor do tipo primitivo int em um objeto. Um objeto do tipo Inteiro contém um único campo cujo tipo é int.
Isso de certa forma erra o ponto. Por exemplo, como Integeré uma classe, ele pode ser armazenado em contêineres (diferentemente dos tipos primitivos).
Oliver Charlesworth
6
Uma variável int contém um valor inteiro assinado de 32 bits. Um número inteiro (com I maiúsculo) mantém uma referência a um objeto do tipo (classe) número inteiro ou nulo.
Java lança automaticamente entre os dois; de Inteiro para int sempre que o objeto Inteiro ocorre como argumento para um operador int ou é atribuído a uma variável int ou um valor int é atribuído a uma variável Inteiro. Esse casting é chamado de boxe / unboxing.
Se uma variável inteira referenciando nulo estiver fora da caixa, explícita ou implicitamente, uma NullPointerException será lançada.
(No texto acima, o termo "variável" significa variável local, campo ou parâmetro)
Integerrefere-se ao tipo de wrapper em Java, enquanto que inté um tipo primitivo. Tudo, exceto os tipos de dados primitivos em Java, é implementado da mesma maneira que os objetos que implicam em Java são uma linguagem de programação orientada a objetos pura e altamente qualificada. Se necessário, todos os tipos de primitivas também estão disponíveis como tipos de wrapper em Java. Você pode ter algum benefício de desempenho com tipos primitivos e, portanto, os tipos de invólucro devem ser usados apenas quando necessário.
No seu exemplo, como abaixo.
Integer n =9;
a constante 9está sendo encaixotada automaticamente ( auto-boxinge unboxingocorre automaticamente a partir java 5de então) Integere, portanto, você pode usar a declaração dessa maneira e também Integer n = new Integer(9). Isso é realmente alcançado através da declaraçãoInteger.valueOf(9).intValue();
int é um tipo primitivo e não um objeto. Isso significa que não há métodos associados a ele. Inteiro é um objeto com métodos (como parseInt).
Com o java mais recente, há funcionalidade para o boxe automático (e o unboxing). Isso significa que o compilador inserirá Integer.valueOf (int) ou integer.intValue () quando necessário. Isso significa que é realmente possível escrever
Inteiro é uma classe / objeto de wrapper e int é do tipo primitivo. Essa diferença desempenha um papel enorme quando você deseja armazenar valores int em uma coleção, porque eles aceitam apenas objetos como valores (até jdk1.4). O JDK5 em diante por causa da caixa automática é uma história totalmente diferente.
O JDK5 + também aceita apenas objetos; é só que autoboxing permite que o compilador automaticamente chamar Integer.valueOf(i)ou Integer.intValue()para você. Collection<int>ainda não vai funcionar. Portanto, não é uma história totalmente diferente - é a mesma história, com apenas um pouco de taquigrafia.
yshavit
acordado. Desculpe, minha redação pode não refletir isso.
Kd
3
Em Java, int é um tipo de dados primitivo, enquanto Integer é uma classe Helper, é usado para converter um tipo de dado em outro.
inté um tipo primitivo que representa um número inteiro. Considerando que Integeré um objeto que envolve int. O Integerobjeto oferece mais funcionalidades, como conversão para hex, string, etc.
Você também pode usar os conceitos de POO com Integer. Por exemplo, você pode usar Inteiro para genéricos (ou seja ).Collection<Integer>
Java usa tipos primitivos (também chamados de tipos simples), como int ou double , para manter os tipos de dados básicos suportados pela linguagem. Tipos primitivos , em vez de objetos, são usados para essas quantidades em prol do desempenho . Usar objetos para esses valores adicionaria uma sobrecarga inaceitável até mesmo para os cálculos mais simples. Portanto, os tipos primitivos não fazem parte da hierarquia de objetos e não herdam Object .
Apesar do benefício de desempenho oferecido pelos tipos primitivos, há momentos em que você precisará de uma representação de objeto. Por exemplo, você não pode passar um tipo primitivo por referência a um método . Além disso, muitas das estruturas de dados padrão implementadas pelo Java operam em objetos, o que significa que
você não pode usar essas estruturas de dados (específicas do objeto) para armazenar tipos primitivos . Para lidar com essas (e outras) situações, o Java fornece wrappers de tipo, que são classes que encapsulam um tipo primitivo dentro de um objeto.
As classes de wrapper se relacionam diretamente ao
recurso de caixa automática do Java . Os wrappers de tipo são Duplo, Flutuante, Longo, Inteiro, Curto, Byte, Caractere e Booleano . Essas classes oferecem uma ampla variedade de métodos que permitem integrar totalmente os tipos primitivos na hierarquia de objetos do Java.
Para otimizar o tempo de execução do código Java, foram adicionados inttipos primitivos , incluindo etc. float, boolmas eles vêm com classes de wrapper para que, se necessário, você possa convertê-los e usá-los como objeto Java padrão, juntamente com muitos utilitários que são seus membros funções (como Integer.parseInt("1")).
inté um tipo de dados primitivo, enquanto Integeré um tipo de referência ou wrapper (classe) em Java.
Depois java 1.5disso, introduza o conceito de caixa automática e unboxing, você pode inicializar as duas coisas intou Integerassim.
int a=9Integer a =9// both valid After Java 1.5.
por que Integer.parseInt("1");mas não int.parseInt("1");??
Integeré uma classe definida na jdkbiblioteca e parseInt()é um método estático pertence à Integerclasse
Então, Integer.parseInt("1");é possível em java. mas inté do tipo primitivo (assuma como uma palavra-chave) em java. Então, você não pode ligar parseInt()com int.
Integer n = 9;
devido à autoboxing (a menos que você estiver usando uma versão muito antiga do java)Respostas:
int
é um tipo primitivo. Variáveis do tipoint
armazenam o valor binário real do número inteiro que você deseja representar.int.parseInt("1")
não faz sentido porque nãoint
é uma classe e, portanto, não possui métodos.Integer
é uma classe, não diferente de qualquer outra na linguagem Java. Variáveis do tipoInteger
armazenam referências aInteger
objetos, assim como qualquer outro tipo de referência (objeto).Integer.parseInt("1")
é uma chamada para o método estáticoparseInt
da classeInteger
(observe que esse método realmente retorna umint
e não umInteger
).Para ser mais específico,
Integer
é uma classe com um único campo do tipoint
. Essa classe é usada onde você precisaint
ser tratado como qualquer outro objeto, como em tipos genéricos ou situações em que você precisa de nulidade.Observe que todo tipo primitivo em Java possui uma classe de wrapper equivalente :
byte
temByte
short
temShort
int
temInteger
long
temLong
boolean
temBoolean
char
temCharacter
float
temFloat
double
temDouble
As classes de wrapper herdam da classe Object e as primitivas não. Portanto, ele pode ser usado em coleções com referência a objeto ou com genéricos.
Desde o java 5, temos autoboxing, e a conversão entre as classes primitiva e wrapper é feita automaticamente. Cuidado, no entanto, pois isso pode introduzir erros sutis e problemas de desempenho; ser explícito sobre conversões nunca é demais.
fonte
C#
todos os tipos de dados têm "aliases" eint.Parse()
faz sentido (embora ele realmente não)C#
é completamente irrelevante aqui.Inteiro é uma classe e int é um tipo primitivo.
Leia estes links:
fonte
Um número inteiro é basicamente apenas um invólucro para o tipo primitivo int. Ele permite que você use todas as funções da classe Integer para tornar a vida um pouco mais fácil para você.
Se você é novo no Java, algo que você deve aprender a apreciar é a documentação do Java. Por exemplo, qualquer coisa que você queira saber sobre a Classe Inteira está documentada em detalhes.
Isso é retirado da documentação da classe Integer:
A classe Integer agrupa um valor do tipo primitivo int em um objeto. Um objeto do tipo Inteiro contém um único campo cujo tipo é int.
fonte
Integer
é uma classe, ele pode ser armazenado em contêineres (diferentemente dos tipos primitivos).Uma variável int contém um valor inteiro assinado de 32 bits. Um número inteiro (com I maiúsculo) mantém uma referência a um objeto do tipo (classe) número inteiro ou nulo.
Java lança automaticamente entre os dois; de Inteiro para int sempre que o objeto Inteiro ocorre como argumento para um operador int ou é atribuído a uma variável int ou um valor int é atribuído a uma variável Inteiro. Esse casting é chamado de boxe / unboxing.
Se uma variável inteira referenciando nulo estiver fora da caixa, explícita ou implicitamente, uma NullPointerException será lançada.
(No texto acima, o termo "variável" significa variável local, campo ou parâmetro)
fonte
Integer
refere-se ao tipo de wrapper em Java, enquanto queint
é um tipo primitivo. Tudo, exceto os tipos de dados primitivos em Java, é implementado da mesma maneira que os objetos que implicam em Java são uma linguagem de programação orientada a objetos pura e altamente qualificada. Se necessário, todos os tipos de primitivas também estão disponíveis como tipos de wrapper em Java. Você pode ter algum benefício de desempenho com tipos primitivos e, portanto, os tipos de invólucro devem ser usados apenas quando necessário.No seu exemplo, como abaixo.
a constante
9
está sendo encaixotada automaticamente (auto-boxing
eunboxing
ocorre automaticamente a partirjava 5
de então)Integer
e, portanto, você pode usar a declaração dessa maneira e tambémInteger n = new Integer(9)
. Isso é realmente alcançado através da declaraçãoInteger.valueOf(9).intValue();
fonte
int é um tipo primitivo e não um objeto. Isso significa que não há métodos associados a ele. Inteiro é um objeto com métodos (como parseInt).
Com o java mais recente, há funcionalidade para o boxe automático (e o unboxing). Isso significa que o compilador inserirá Integer.valueOf (int) ou integer.intValue () quando necessário. Isso significa que é realmente possível escrever
que é interpretado como
fonte
Inteiro é uma classe / objeto de wrapper e int é do tipo primitivo. Essa diferença desempenha um papel enorme quando você deseja armazenar valores int em uma coleção, porque eles aceitam apenas objetos como valores (até jdk1.4). O JDK5 em diante por causa da caixa automática é uma história totalmente diferente.
fonte
Integer.valueOf(i)
ouInteger.intValue()
para você.Collection<int>
ainda não vai funcionar. Portanto, não é uma história totalmente diferente - é a mesma história, com apenas um pouco de taquigrafia.Em Java, int é um tipo de dados primitivo, enquanto Integer é uma classe Helper, é usado para converter um tipo de dado em outro.
Por exemplo:
Os tipos de dados primitivos armazenam a memória disponível mais rápida em que a classe Helper é complexa e armazenam na memória heap.
referência do Java Essential Training "David Gassner".
fonte
int
é um tipo primitivo que representa um número inteiro. Considerando queInteger
é um objeto que envolveint
. OInteger
objeto oferece mais funcionalidades, como conversão para hex, string, etc.Você também pode usar os conceitos de POO com
Integer
. Por exemplo, você pode usar Inteiro para genéricos (ou seja ).Collection
<Integer>
fonte
Isto é retirado de Java: The Complete Reference, Nona Edição
fonte
Para otimizar o tempo de execução do código Java, foram adicionados
int
tipos primitivos , incluindo etc.float
,bool
mas eles vêm com classes de wrapper para que, se necessário, você possa convertê-los e usá-los como objeto Java padrão, juntamente com muitos utilitários que são seus membros funções (comoInteger.parseInt("1")
).fonte
int
é um tipo de dados primitivo, enquantoInteger
é um tipo de referência ou wrapper (classe) em Java.Depois
java 1.5
disso, introduza o conceito de caixa automática e unboxing, você pode inicializar as duas coisasint
ouInteger
assim.Integer
é uma classe definida najdk
biblioteca eparseInt()
é um método estático pertence àInteger
classeEntão,
Integer.parseInt("1");
é possível em java. masint
é do tipo primitivo (assuma como uma palavra-chave) em java. Então, você não pode ligarparseInt()
comint
.fonte