Casi todos los operadores solo pueden operar con "primitivas". Las excepciones son "=", "==" y "! =", Que operan todos los objetos. Además, la clase de cadena admite "+" y "+=".
El tipo básico almacena el valor numérico real. En lugar de referirse a un objeto. Entonces, al asignarle valores, el contenido de un lugar se copia directamente a otro lugar. Por ejemplo, si A = B se usa para el tipo de datos básico, entonces el contenido de B se copia a A. Si A se modifica, B no se verá afectado por esta modificación en absoluto. (En la idea anterior de programación de Java (2), sabemos que el tipo básico se almacena en la pila. Suponiendo que a = 4, si no hay 4 en la pila, se abrirá un espacio para hacer el valor 4. Después de a = b, b también apunta al 4 en la pila. En este momento, A se abrirá a 5. Luego se buscará nuevamente en la pizarra. no afectará b)
Sin embargo, al "asignar valores" a un objeto, la situación cambiará. En primer lugar, sabemos que en lo que realmente operamos cuando operamos un objeto es una referencia al objeto. Entonces, si "asignar un objeto a otro objeto", en realidad está copiando la "referencia" de un lugar a otro. Esto significa que si C = D se usa en el objeto, tanto C como D apuntarán al objeto que originalmente solo fue apuntado por D (ambos controles remotos (referencias) pueden operar y presionar un televisor (objeto)).
Prioridad:
| Prioridad | Vínculo | |
1 | Operador de sufijo | []. () (Llamada de función) | De izquierda a derecha |
2 | Operador monológico | ! ~ ++ - +(operando único) (operando único) | De derecha a izquierda |
3 | crear | nuevo | De izquierda a derecha |
4 | Multiplicación y división | */ % | De izquierda a derecha |
5 | Suma y resta | + - | De izquierda a derecha |
6 | Cambio | << >> >>>> | De izquierda a derecha |
7 | relación | <<=>> = instanciaf | De izquierda a derecha |
8 | igual | ==! = | De izquierda a derecha |
9 | bit a bit y | Y | De izquierda a derecha |
10 | xor bit a bit | ^ | De izquierda a derecha |
11 | bit a bit o | | | De izquierda a derecha |
12 | Lógica y | && | De izquierda a derecha |
13 | Lógico o | || | De izquierda a derecha |
14 | condición | ? : | De derecha a izquierda |
15 | Asignación | = += -= *= /= = %= ^= << = >> = >>> = | De derecha a izquierda |
(1) Asignación
El tipo principal usa "A = B", y el contenido en B se copia a A. Si A se modifica, entonces B no se verá afectado por la modificación en absoluto.
La situación cambia cuando el objeto está "asignado". Al operar un objeto, lo que realmente operamos es su manejo. Entonces, si asigna un valor de un objeto a otro, en realidad está copiando el mango de un lugar a otro. Esto significa que si se usa "c = d" para el objeto, entonces C y D eventualmente apuntarán al objeto al que solo d apunta en primer lugar.
corto S1 = 1; S1 = S1 + 1; (El resultado de la operación S1+1 es el tipo int, y se requiere un tipo de lanzamiento)
corto S1 = 1; S1 += 1; (se puede compilar correctamente) += operador sin problemas de conversión de tipo
(2) operador aritmético
Operadores aritméticos de Java: signo más (+), menos signo (-), signo de división (/), signo de multiplicación (*) y módulo (%, obtenga el resto de la división entera). La división entera cortará los decimales directamente, en lugar de llevar.
(3) incremento automático y disminución
Para el preincremento y el preincremento (como ++ a o --a), la operación se realizará primero y se generará el valor.
Para el posterior al incremento y el posterior al incremento (como A ++ o A--), se generará el valor y se realizará la operación.
(4) operador relacional
Los operadores relacionales incluyen <,>, <=,> =, = =,! =
Igual y no igual para aplicar a todos los tipos de datos incorporados, pero otras comparaciones no se aplican a los tipos booleanos.
Para comparar si el contenido real de los dos objetos es el mismo, debe usar el método especial igual () que se aplica a todos los objetos.
El método Equals () no se aplica a los "tipos principales". Esos tipos se pueden usar directamente con == y! =.
El valor predeterminado de igual () es el mango de comparación. Entonces, a menos que cambie igual () en su nueva clase, es imposible mostrar el comportamiento que queremos
La mayoría de las bibliotecas de clase Java implementan igual (), por lo que en realidad compara el contenido de los objetos en lugar de sus manijas.
= = y! = compara el mango del objeto, no el contenido real del objeto
(5) Operador lógico
Operadores lógicos &&, ||,! puede generar un valor booleano
& y && puede usarse como operadores lógicos "y", pero && es "cortocircuito y". Al calcular, el valor de la expresión antes del símbolo se juzga primero. Si se puede determinar el valor de toda la expresión, no se realiza la operación de la expresión después del símbolo.
Además, y se puede usar como un operador de bit
(6) Operador de bit a bit
Bitwise y operador (&)
Bitwise u operador (|)
bitwise xor (^, xor)
Bitwise no (~, también llamado operador "no") pertenece a un operador unario, generando un valor opuesto al bit de entrada.
(7) Operador de turno
El operador de desplazamiento izquierdo (<<) puede mover el objeto de operación a la izquierda a la cantidad de bits especificados a la derecha del operador (complemento 0 en el bit bajo).
El operador de desplazamiento derecho firmado (>>) mueve el objeto de operación a la derecha el número de bits especificados a la derecha del operador. El operador de desplazamiento derecho firmado utiliza la extensión del signo: si el valor es positivo, 0 se inserta en la posición alta; Si el valor es negativo, 1 se inserta en la posición alta
Operador de desplazamiento derecho sin firmar (>>>), que utiliza "extensión cero": inserte 0 en una posición alta independientemente de positivo o negativo
(8) Triple operador if-else
Expresión booleana? Valor 0: Valor 1 El resultado de la "expresión de Bolean" es verdadero, y se calcula el "valor 0", de lo contrario se calcula el "valor 1"
(9) Operador de cadena +
int x = 0, y = 1, z = 2; system.out.println ("out:" + x + y + z);Aquí, Java Compiler convierte X, Y y Z en su forma de cadena en lugar de agregarlos primero
Cuando se usa "String +", si la expresión comienza con una cadena, entonces todos los objetos de operación posteriores se convertirán en una cadena.
Para conectar una cadena con un signo "más" (usando versiones anteriores de Java), asegúrese de asegurarse de que el primer elemento sea una cadena
(10) Operador de modelado (Cast)
Para operaciones como "Conversión de estrechamiento" (tipos de datos que pueden acomodar más información y convertirlos en tipos más pequeños, como INT TO Short), puede enfrentar el riesgo de pérdida de información. En este punto, el compilador nos obligará a hacer formas claras
Para la "conversión amplia", no hay necesidad de formarse explícitamente, porque el nuevo tipo definitivamente puede acomodar el tipo de información original y no causará ninguna pérdida de información.
Los valores booleanos (boleanos) no permiten ningún procesamiento de estilo en absoluto, y cualquier otro tipo principal puede formarse juntos.
Después de dar forma al flotador o al valor doble en un valor entero, la parte decimal siempre está "cortada" sin ningún transporte.
¿Cuánto es igual a Math.round (11.5)? ¿Cuánto es igual a Math.round (-11.5)?
Math.round(11.5)==12 Math.round(-11.5)==-11
El método redondo devuelve el entero largo más cercano al parámetro. Después de agregar 1/2 al parámetro, encuentre su piso.
Resumir
Lo anterior se trata de este artículo que discute a los operadores de Java y sus prioridades, y espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a este sitio:
Principio de algoritmo de coincidencia de cadena multimodo y código de implementación de Java
Explicación detallada de cómo usar operadores de funciones rxjava
Una breve discusión sobre la conversión entre matrices de cuerdas, cuerdas y formas en Java
Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!