Tabla de contenido
REPL de Java 9 (JShell)
REPL (Read Eval Print Loop) significa un entorno de programación interactivo .
JShell es una herramienta de entorno de programación interactiva agregada en Java 9 .
Notas de Java
Hay tres tipos de anotaciones Java:
- Comentarios de una sola línea : para
//
empezar, se comentará el contenido.// 这是一个单行注释
- Comentarios multilínea : para
/*
empezar,*/
el contenido estará entre el final, se comenta/* 这是一个多行注释 这是一个多行注释 这是一个多行注释 */
- Comentarios de JavaDoc : comentarios de documentación desde
/**
el principio hasta*/
el final, puede escribir información descriptiva en el medio, para ayudar a generar archivos de ayuda/** * @author 作者 * @version 版本 * @since 最小 JDK 版本 * @param 方法形参描述 * @return 方法返回值描述 * @exception 对方法可能抛出的异常进行描述(推荐描述 Runtime 异常) * @throws 对方法可能抛出的异常进行描述(推荐描述 非Runtime 异常) * @deprecated 不建议使用该方法 */
Se pueden buscar algunos comentarios de código interesantes
有趣的代码注释
Java distingue entre mayúsculas y minúsculas
public class CaseSensitive {
public static void main(String[] args) {
System.out.println("Java 是大小写敏感的:");
String man = "Jack";
String Man = "John";
System.out.println("man: " + man);
System.out.println("Man: " + Man);
System.out.println("==================");
String woman = "Rose";
// String woman = "Mei";
System.out.println("woman: " + woman);
}
}
/* 输出如下:
Java 是大小写敏感的:
man: Jack
Man: John
==================
woman: Rose
*/
Tipos de datos de Java
Después de JDK 7, puede estar entre la _
partición subrayada digital
jshell> int num1 = 123_456;
num1 ==> 123456
jshell> long num2 = 123_3454355_345L;
num2 ==> 1233454355345
jshell> byte num3 = 1_20;
num3 ==> 120
jshell> float num4 = 123_63724_2.24F;
num4 ==> 1.2363724E8
jshell> double num5 = 12_34.45;
num5 ==> 1234.45
Expansión de enteros
- Representación decimal : representación normal
int num = 10; // num ==> 10
- Representación binaria : binaria para
0b
empezar , seguida de un número binarioint num = 0b10; // num ==> 2
- Representación octal: octal para
0
empezar , seguido de octalint num = 010; // num ==> 8
- Representación hexadecimal : Hex al
0x
principio , seguido de un número hexadecimalint num = 0x10; // num ==> 16
Expansión de punto flotante
Los números de punto flotante tienen problemas de precisión, ¡es mejor evitar el uso de números de punto flotante para comparar!
jshell> float num1 = 0.1F;
num1 ==> 0.1
jshell> double num2 = 1.0 / 10;
num2 ==> 0.1
jshell> num1 == num2
$21 ==> false
Cuando se trata de bancos u otras empresas que requieren una precisión particularmente alta, utilice BigDecimal (herramientas de procesamiento de números grandes) para el procesamiento.
Conversión de tipo de datos
低 ---------------------------------------------- 高
byte, short, char -> int -> long -> float -> double 小数优先级 > 整数优先级
-
低级数据
⇒高级数据
==> conversión automática -
高级数据
⇒低技数据
==> emitir (agregando una variable antes de la(目的类型)
implementación)public class TypeCast { public static void main(String[] args) { System.out.println("低 -> 高"); byte num1 = 120; int num2 = num1; System.out.println(num1); System.out.println(num2); System.out.println("高 -> 低"); long num3 = 233L; int num4 = (int) num3; // 强制转换 System.out.println(num3); System.out.println(num4); System.out.println("低 -> 高 & 整数 -> 浮点数"); long num5 = 12345678L; float num6 = num5; System.out.println(num5); System.out.println(num6); System.out.println("高 -> 低 & 浮点数 -> 整数"); float num7 = 1234.567F; long num8 = (long) num7; // 强制转换 System.out.println(num7); System.out.println(num8); } }
-
No puede
boolean
escribir conversión de tipo de datos.
-
Puede haber problemas como desbordamiento de la memoria o pérdida de precisión durante la conversión de tipos.
public class TypeCast { public static void main(String[] args) { System.out.println("高 -> 低 & 内存溢出"); int num9 = 128; System.out.println(num9); System.out.println((byte) num9); System.out.println("高 -> 低 & 精度问题"); System.out.println((int) 23.45); System.out.println((int) -23.4556F); } } /* 输出如下: 高 -> 低 & 内存溢出 128 -128 高 -> 低 & 精度问题 23 -23 */
-
char
Tipo yint
tipo de cada tarea- En
0 ~ 65535
el rangochar
y elint
tipo se pueden asignar entre sí - Si la definición de la pantalla
int
después de la variable, se convierte enchar
necesaria fundidopublic class Char2Int { public static void main(String[] args) { char a1 = 'a'; int a2 = 'a'; System.out.println(a1); System.out.println(a2); int A1 = 65; char A2 = 65; System.out.println(A1); System.out.println(A2); char B1 = 'B'; int B2 = B1; System.out.println(B1); System.out.println(B2); int b1 = 98; char b2 = (char) b1; System.out.println(b1); System.out.println(b2); } } /* 输出如下: a 97 65 A B 66 98 b */
- En
variable
Tres elementos de variable
- Tipo variable
- nombre de la variable
- variable
Declaración de variable (y asignación)
变量类型 变量名 = 变量值;
- Puede declarar múltiples variables en una línea en Java (pero no se recomienda declarar múltiples variables en una línea )
int a = 1, b = 2, c = 3; a ==> 1 b ==> 2 c ==> 3 int a, b, c; a ==> 0 b ==> 0 c ==> 0
Según el alcance, hay 3 tipos de variables en Java
- Variables de clase : las variables independientes de los métodos, modificadas con static y luego modificadas con final son constantes ( no hay orden entre los modificadores, sea quien sea antes o después ).
- Las variables de instancia : No se puede inicializar se crea una instancia, será automáticamente variable de instancia se inicializa con el valor por defecto de su tipo (
数字 ⇒ 0
,boolean ⇒ false
,引用类型 ⇒ null
). - Variable local : el valor debe declararse e inicializarse antes de su uso .
public class Variable{
static final String ZHANG_SAN = "zhangsan";
static int allClicks = 0; // 类变量
String str = "Hello, World"; // 实例变量
public static void main(String[] args) {
int num = 0; // 局部变量
System.out.println(num);
System.out.println(ZHANG_SAN);
}
}
Operador
Tipo automático
En la operación, el tipo de resultado de la operación se promoverá automáticamente al tipo más alto en la operación mixta .
jshell> Integer.MAX_VALUE
$1 ==> 2147483647
jshell> Integer.MAX_VALUE + 1
$2 ==> -2147483648
jshell> Integer.MAX_VALUE + 1L
$3 ==> 2147483648
jshell> 1 + 1.0
$4 ==> 2.0
en vez de
instanceof se utiliza para determinar si un objeto pertenece a un tipo específico .
class Human {
}
class Man extends Human {
}
public class InstanceOf {
public static void main(String[] args) {
Human human = new Human();
Man man = new Man();
System.out.println(man instanceof Man);
System.out.println(man instanceof Human);
System.out.println(man instanceof Object);
System.out.println(human instanceof Object);
}
}
Operador lógico | operación de cortocircuito
Operación de cortocircuito :
false && [Any...] // 后面没有执行
true || [Any...] // 后面没有执行
public class ShortOutOperation {
public static void main(String[] args) {
int c = 5;
boolean n = (c < 4) && (c++ > 5); // c < 4 为 false, 如果执行了后面,c 必然变成 6
System.out.println(n);
System.out.println(c);
int d = 5;
boolean m = (d > 4) || (d-- == 4); // d > 4 为 true, 如果执行了后面,d 必然变成 4
System.out.println(m);
System.out.println(d);
}
}
/* 输出如下:
false
5
true
5
*/
Operación de bits
&
: versus|
: O~
: No^
: XOR- ⇒ Lo mismo es 0, la diferencia es 1
- ⇒ Se puede entender como
异
: la diferencia es 1 (verdadero), y la diferencia es 0 (falso) - ⇒
二进制加法
: 0 + 0 = 0, 0 + 1 = 1
<<
: Desplazar a la izquierda ⇒ * 2 ⇒2 << 2
⇒ 2 3 = 8>>
: Desplazar a la derecha ⇒ / 2 ⇒8 >> 2
⇒ 3 √8 = 2
Concatenación de cadenas +
Siempre que +
cualquier lado de ambos lados de una cadena de caracteres, estará conectado.
jshell> "" + 10 + 20
$1 ==> "1020"
jshell> 10 + "" + 20
$2 ==> "1020"
jshell> 10 + 20 + ""
$3 ==> "30"
Precedencia del operador
No ()
envuelvan deliberadamente recuerdos, paréntesis inciertos