基础重点部分

数据类型

整型

  • int 4字节
  • short 2字节
  • long 8字节
  • byte 1字节

浮点类型

  • float 4字节
  • double 8字节

char类型

boolean型

True/False

枚举类型(enumerated type)

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
public class EnumExample {
    public static void main(String[] args) {
        Day day = Day.MONDAY;

        switch (day) {
            case MONDAY:
                System.out.println("Mondays are tough.");
                break;
            case FRIDAY:
                System.out.println("Fridays are better.");
                break;
            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are the best.");
                break;
            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }
}

字符串

  • 字符串的子串
package com.cusnd.study;

public class StringTest {
    public static void main(String[] args) {
        String greeting = "Hello World!";
        String s = greeting.substring(0,3);
        System.out.println(s);

    }
}
  • 字符串的拼接。

  • 字符串无法字节更改,但可以将其分割为字串后。对字串进行拼接。

  • 检测字符串是否相等:
    s.equals(greeting);,如果相等,这个方法返回true,如果不相等,这个方法返回false。

  • 空串和字符串,可以通过 str.length == 0;str.equals("") 来判断。

  • 构建字符串

    StringBuilder builder = new StringBuilder();
    builder.append(ch);
    builder.append(str);
    String result = sb.toString;
    public class StringExample {
      public static void main(String[] args) {
          // 使用字符串字面量
          String literalStr = "Hello, World!";
    
          // 使用String类的方法
          String str1 = "Hello";
          String str2 = "World";
          String concatenated = str1 + ", " + str2 + "!";
          String replaced = concatenated.replace("World", "Java");
    
          // 使用StringBuilder
          StringBuilder sb = new StringBuilder();
          sb.append("Hello").append(", ").append("StringBuilder");
          sb.insert(5, " Example");
          String sbResult = sb.toString();
    
          // 使用StringBuffer
          StringBuffer sbf = new StringBuffer();
          sbf.append("Hello").append(", ").append("StringBuffer");
          sbf.insert(5, " Example");
          String sbfResult = sbf.toString();
    
          // 输出结果
          System.out.println("Literal String: " + literalStr);
          System.out.println("Concatenated String: " + concatenated);
          System.out.println("Replaced String: " + replaced);
          System.out.println("StringBuilder Result: " + sbResult);
          System.out.println("StringBuffer Result: " + sbfResult);
      }
    }
    

    官方文档里有详细介绍。

输入与输出

读取输入

Scanner in = new Scanner(System.in);
String name = in.nextLine;
package com.cusnd.study;

import java.util.Scanner;

public class StringTest {
    public static void main(String[] args) {
        String greeting = "Hello World!";
        String s = greeting.substring(0,3);
        System.out.println(s);
        Scanner in = new Scanner(System.in);
        String name = in.nextLine();
        System.out.println(name);
    }
}

条件语句

if(conditions) {

statements1;

statements2;

}
while(conditions) {

statements1;

statements2;

}
for(int i = 1;i<=10;i++){
    System.out.println("No."+i);
}
int variableNumber = 7;
swtich(variableNumber){
    case 7:
    System.out.println("This is a 7");
    break; //break语句用于跳出循环
    default:
    System.out.println("Try again later");
    break;
}
public class SwitchCaseExample {
    public static void main(String[] args) {
        int number = 2;

        switch (number) {
            case 1:
            case 2:
            case 3:
                System.out.println("Number is 1, 2, or 3");
                break;
            case 4:
            case 5:
                System.out.println("Number is 4 or 5");
                break;
            default:
                System.out.println("Number is not between 1 and 5");
                break;
        }
    }
}
//在这一段代码中,只要数字是1或2或3,就会触发同一个输出。

中断控制流程的语句

  • 带标签的break,和不带标签的break

    public class LabeledBreakExample {
      public static void main(String[] args) {
          outerLoop: // 标签
          for (int i = 0; i < 5; i++) {
              for (int j = 0; j < 5; j++) {
                  if (i * j > 6) {
                      break outerLoop; // 跳出outerLoop标签标识的循环
                  }
                  System.out.println("i: " + i + ", j: " + j);
              }
          }
          System.out.println("Exited outer loop");
      }
    }
    //这是带标签的break
    public class BreakExample {
      public static void main(String[] args) {
          for (int i = 0; i < 10; i++) {
              if (i == 5) {
                  break; // 跳出循环
              }
              System.out.println(i);
          }
      }
    }
    //这是不带标签的break
    
  • countinue

    public class ContinueExample {
      public static void main(String[] args) {
          for (int i = 0; i < 10; i++) {
              if (i % 2 == 0) {
                  continue; // 跳过偶数
              }
              System.out.println(i);
          }
      }
    }
    
  • 在void方法里使用return和非void方法里使用return

    public class ReturnExample {
      public static void main(String[] args) {
          testMethod();
          System.out.println("This will not be printed");
      }
    
      public static void testMethod() {
          System.out.println("This will be printed");
          return;
          // System.out.println("This will not be printed"); // 此行代码不会被执行
      }
    }
    //在void方法里使用return
    public class ReturnValueExample {
      public static void main(String[] args) {
          int result = add(2, 3);
          System.out.println("Result: " + result);
      }
    
      public static int add(int a, int b) {
          return a + b;
      }
    }
    //在非void方法里使用return
  • throw语句

    public class ThrowExample {
      public static void main(String[] args) {
          try {
              checkAge(15);
          } catch (Exception e) {
              System.out.println(e.getMessage());
          }
      }
    
      public static void checkAge(int age) throws Exception {
          if (age < 18) {
              throw new Exception("Age is less than 18");
          }
          System.out.println("Age is valid");
      }
    }
    

大数计算

java.math包里有两个很有用的类,BigInteger和BigDecimal

具体参考官方文档

数组

int[] a = new int[100]

访问数组元素。

for each循环

for(int element:a){
    System.out.println(element);
}

面向对象

类指定了如何构造对象,由一个类构造对象的过程被称为创造这个类的一个实例。

在控制台打印非字符串对象的时候,默认调用toString()方法 (支持对方法的重写)。

在Java面向对象编程中,字段(Field)是类中的一个成员变量,用于表示类的属性。字段是类的一部分,并且属于类的实例,每个实例可以有不同的字段值。字段可以是各种数据类型,如基本类型(int、float、char等)或对象类型。

方法的重写(Overriding)

方法的重写是指子类提供了与父类在方法签名(方法名、参数列表和返回类型)相同的方法,但具有不同的实现。在Java中,重写方法主要用于提供子类特定的实现,从而取代父类中的方法实现。

重写的规则
  • 方法签名相同:子类方法必须与父类方法具有相同的方法名、参数列表和返回类型。

  • 访问权限不低于父类:子类方法的访问权限不能低于父类方法的访问权限。例如,如果父类方法是public的,那

    么子类方法也必须是public的。

  • 子类方法不能抛出比父类更多的异常:子类方法抛出的异常不能比父类方法更多或更广泛的异常。

  • @Override注解:虽然不是强制的,但建议使用@Override注解,以确保方法签名正确并进行重写。

this的具体用法

  • 引用当前对象。

    public class Example {
      public void display() {
          System.out.println(this); // 打印当前对象的引用
      }
    
      public static void main(String[] args) {
          Example obj = new Example();
          obj.display(); // 打印Example对象的引用
      }
    }
    
  • 调用当前对象的方法

    public class Example {
      public void method1() {
          System.out.println("Method 1");
      }
    
      public void method2() {
          this.method1(); // 调用当前对象的method1方法
      }
    
      public static void main(String[] args) {
          Example obj = new Example();
          obj.method2(); // 输出"Method 1"
      }
    }
  • 访问当前对象的成员变量

    public class Example {
      private int value;
    
      public void setValue(int value) {
          this.value = value; // 使用this区分成员变量和局部变量
      }
    
      public int getValue() {
          return this.value; // 访问当前对象的成员变量
      }
    
      public static void main(String[] args) {
          Example obj = new Example();
          obj.setValue(10);
          System.out.println(obj.getValue()); // 输出10
      }
    }
    
  • 调用当前类的构造方法

    public class Example {
      private int x;
      private int y;
    
      public Example() {
          this(0, 0); // 调用另一个构造方法
      }
    
      public Example(int x, int y) {
          this.x = x;
          this.y = y;
      }
    
      public void display() {
          System.out.println("x = " + x + ", y = " + y);
      }
    
      public static void main(String[] args) {
          Example obj = new Example();
          obj.display(); // 输出"x = 0, y = 0"
      }
    }