Java | Conceptos básicos | Comprobación de fugas (1)

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:

  1. Comentarios de una sola línea : para //empezar, se comentará el contenido.
    // 这是一个单行注释
    
  2. Comentarios multilínea : para /*empezar, */el contenido estará entre el final, se comenta
    /*
     这是一个多行注释
     这是一个多行注释
     这是一个多行注释
     */
    
  3. 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
 */

distingue mayúsculas y minúsculas

Tipos de datos de Java

tipo de datos 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 0bempezar , seguida de un número binario
    int num = 0b10;
    // num ==> 2
    
  • Representación octal: octal para 0empezar , seguido de octal
    int num = 010;
    // num ==> 8
    
  • Representación hexadecimal : Hex al 0xprincipio , seguido de un número hexadecimal
    int 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 booleanescribir conversión de tipo de datos.
    no puede cst booleano

  • 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
     */
    
  • charTipo y inttipo de cada tarea

    • En 0 ~ 65535el rango chary el inttipo se pueden asignar entre sí
    • Si la definición de la pantalla intdespués de la variable, se convierte en charnecesaria fundido
      public 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
      */
      

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 ⇒ * 22 << 2⇒ 2 3 = 8
  • >>: Desplazar a la derecha ⇒ / 28 >> 23 √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

Referencia

Supongo que te gusta

Origin blog.csdn.net/qq_37164975/article/details/108428829
Recomendado
Clasificación