基础重点部分
数据类型
整型
- 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" } }