Quase todos os operadores só podem operar em "primitivas". Exceções são "=", "==" e "! =", Que operam todos os objetos. Além disso, a classe String suporta "+" e "+=".
O tipo básico armazena o valor numérico real. Em vez de se referir a um objeto. Portanto, ao atribuir valores a ele, o conteúdo de um local é diretamente copiado para outro lugar. Por exemplo, se A = B for usado para o tipo de dados básico, o conteúdo de B será copiado para a. Se A for modificado, B não será afetado por essa modificação. (Na idéia anterior de programação Java (2), sabemos que o tipo básico é armazenado na pilha. Assumindo a = 4, se não houver 4 na pilha, um espaço será aberto para fazer o valor 4. Depois de A = B, B -IT também aponta para a pilha. não afetará b)
No entanto, ao "atribuir valores" a um objeto, a situação mudará. Primeiro de tudo, sabemos que o que realmente operamos ao operar um objeto é uma referência ao objeto. Portanto, se "atribuir um objeto a outro objeto", ele está realmente copiando a "referência" de um lugar para outro. Isso significa que, se C = D for usado no objeto, C e D apontarão para o objeto que foi originalmente apontado apenas por D (os dois controles remotos (referências) podem operar e pressionar um conjunto de TV (objeto)).
Prioridade:
| Prioridade | Ligação | |
1 | Operador de sufixo | []. () (Chamada de função) | Da esquerda para a direita |
2 | Operador monológico | ! ~ ++ - +(operando único) (operando único) | Da direita para a esquerda |
3 | criar | novo | Da esquerda para a direita |
4 | Multiplicação e divisão | */ % | Da esquerda para a direita |
5 | Adição e subtração | + - | Da esquerda para a direita |
6 | Mudança | << >> >>>> | Da esquerda para a direita |
7 | relação | <<=>> = instanceof | Da esquerda para a direita |
8 | igual | ==! = | Da esquerda para a direita |
9 | Bit nejudado e | & | Da esquerda para a direita |
10 | Bitwise xor | ^ | Da esquerda para a direita |
11 | Bit nejudado ou | | | Da esquerda para a direita |
12 | Lógica e | && | Da esquerda para a direita |
13 | Lógico ou | || | Da esquerda para a direita |
14 | doença | ? : | Da direita para a esquerda |
15 | Atribuição | = += -= *= /= %= ^= << = >> = >>> = | Da direita para a esquerda |
(1) atribuição
O tipo principal usa "A = B" e o conteúdo em B é copiado para A. Se A for modificado, B não será afetado pela modificação.
A situação muda quando o objeto é "atribuído". Ao operar um objeto, o que realmente operamos é o seu identificador. Portanto, se você atribuir um valor de um objeto para outro, ele está na verdade copiando a alça de um lugar para outro. Isso significa que, se "C = D" for usado para o objeto, C e D acabarão apontando para o objeto que apenas D aponta para o primeiro lugar.
s1 curto = 1; s1 = s1 + 1; (O resultado da operação S1+1 é o tipo int e é necessário um tipo de elenco)
s1 curto = 1; s1 += 1; (pode ser compilado corretamente) += operador sem tipo de problema de conversão
(2) Operador aritmético
Operadores aritméticos de Java: mais sinal (+), sinal menos (-), sinal de divisão (/), sinal de multiplicação (*) e módulo (%, obtenha o restante da divisão inteira). A divisão inteira cortará os decimais diretamente, em vez de carregar.
(3) incremento e diminuição automáticos
Para pré-incremento e pré-incremento (como ++ A ou --a), a operação será executada primeiro e o valor será gerado.
Para pós-incremento e pós-incremento (como A ++ ou A--), o valor será gerado e a operação será executada.
(4) Operador relacional
Os operadores relacionais incluem <,>, <=,> =, = = ,! =
Igual e não igual a aplicar a todos os tipos de dados internos, mas outras comparações não se aplicam aos tipos booleanos.
Para comparar se o conteúdo real dos dois objetos é o mesmo, você deve usar o método especial igual () que se aplica a todos os objetos.
O método iguals () não se aplica aos "tipos principais". Esses tipos podem ser usados diretamente com == e! =.
O padrão de iguals () é o identificador de comparação. Portanto, a menos que você mude iguais () em sua nova classe, é impossível mostrar o comportamento que queremos
A maioria das bibliotecas de classes Java implementa iguais (), então compara o conteúdo dos objetos em vez de suas alças.
= = e! = compara o identificador de objeto, não o conteúdo real do objeto
(5) Operador lógico
Operadores lógicos &&, ||,! pode gerar um valor booleano
& && pode ser usado como operadores lógicos "e", mas && é "curto-circuito e". Ao calcular, o valor da expressão antes que o símbolo seja julgado pela primeira vez. Se o valor de toda a expressão puder ser determinado, a operação da expressão após o símbolo não será realizada.
Além disso, e pode ser usado como um operador de bits
(6) Operador bit -newwise
Bitwise e Operador (&)
Bitwise ou operador (|)
Bitwise xor (^, xor)
Bitwise não (~, também chamado de operador "não") pertence a um operador unário, gerando um valor oposto ao bit de entrada.
(7) Operador de turno
O operador de turno esquerdo (<<) pode mover o objeto de operação para a esquerda para o número de bits especificados à direita do operador (complemento 0 no bit baixo).
O operador de mudança correto assinado (>>) move o objeto de operação para a direita o número de bits especificados à direita do operador. O operador de mudança direto assinado usa extensão de sinal: se o valor for positivo, 0 será inserido na posição alta; Se o valor for negativo, 1 será inserido na posição alta
Operador de mudança direita não assinado (>>>), que usa "extensão zero": insira 0 em alta posição, independentemente de positivo ou negativo
(8) operador triplo if-else
Expressão booleana? Valor 0: Valor 1 O resultado da "expressão bolean" é verdadeiro e "Valor 0" é calculado, caso contrário "Valor 1" é calculado
(9) Operador de string +
int x = 0, y = 1, z = 2; system.out.println ("out:" + x + y + z);Aqui, o Java Compiler converte x, y e z em sua forma de corda em vez de adicioná -los primeiro
Ao usar "String +", se a expressão iniciar com uma string, todos os objetos de operação subsequentes serão convertidos em uma string.
Para conectar uma string com um sinal "plus" (usando versões anteriores de Java), certifique -se de garantir que o primeiro elemento seja uma string
(10) Operador de modelagem (elenco)
Para operações como "estreitando a conversão" (tipos de dados que podem acomodar mais informações e convertê -los em tipos menores, como o INT para curto), você pode enfrentar o risco de perda de informações. Neste ponto, o compilador nos forçará a fazer formas claras
Para "ampliação de conversão", não há necessidade de ter uma forma explicitamente, porque o novo tipo pode definitivamente acomodar o tipo de informação original e não causará nenhuma perda de informação
Os valores booleanos (Bolleans) não permitem nenhum processamento de estilo, e quaisquer outros tipos principais podem ser moldados juntos.
Depois de moldar o flutuador ou o valor duplo em um valor inteiro, a parte decimal é sempre "cortada" sem transporte.
Quanto o Math.Round (11.5) é igual? Quanto o Math.Round (-11,5) é igual?
Math.round(11.5)==12 Math.round(-11.5)==-11
O método redondo retorna o número inteiro mais próximo do parâmetro. Depois de adicionar 1/2 ao parâmetro, encontre seu piso.
Resumir
O exposto acima é sobre este artigo discutindo os operadores de Java e suas prioridades, e espero que seja útil para todos. Amigos interessados podem continuar se referindo a este site:
Princípio do algoritmo de correspondência multimodo e código de implementação Java
Explicação detalhada de como usar operadores de função rxjava
Uma breve discussão sobre a conversão entre matrizes de string, strings e modelagem em java
Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!