声明变量和赋值
1 2 3 4 5 6 7 8 9
| int age;
age = 25;
double price = 19.99;
|
类的定义和创建对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class car { String name; int age;
void introduce() { System.out.println("我是" + name + "车,今年车龄:" + age + "岁。"); } }
car c = new car(); c.name = "Bumblebee"; c.age = 20; c.introduce();
|
循环
for
已知道迭代次数,或者知道迭代条件时,for更加直观
while
循环次数不确定,需要根据条件是否成立的,使用while
1 2 3 4 5 6 7 8 9 10
| while (条件) { }
do { } while (条件);
|
选择
if
从简单条件到复杂条件,if都可以
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| if (条件) { }
if (条件) { } else { }
if (条件1) { } else if (条件2) { } else { }
|
switch
需要特定的值成立时,switch语句更加简洁易读
1 2 3 4 5 6 7 8 9 10
| switch (表达式) { case 值1: break; case 值2: break; default: }
|
方法的定义和调用
1 2 3 4 5 6 7 8
| public int add(int a, int b) { return a + b; }
int sum = add(5, 3);
|
数据结构
数组
1
| int[] numbers = {1, 2, 3, 4, 5};
|
集合
1 2 3 4
| Set<String> names = new HashSet<>(); names.add("Alice"); names.add("Bob"); System.out.println(names);
|
列表
1 2 3 4
| List<Integer> scores = new ArrayList<>(); scores.add(85); scores.add(90); System.out.println(scores);
|
映射
1 2 3 4
| Map<String, Integer> ages = new HashMap<>(); ages.put("Alice", 25); ages.put("Bob", 30); System.out.println(ages);
|
栈
1 2 3 4
| Stack<String> stack = new Stack<>(); stack.push("First"); stack.push("Second"); System.out.println(stack);
|
对列
1 2 3 4
| Queue<Double> queue = new LinkedList<>(); queue.offer(3.14); queue.offer(2.71); System.out.println(queue);
|
树
1 2 3 4 5 6 7 8 9 10 11 12 13
| class TreeNode { int value; TreeNode left; TreeNode right; TreeNode(int value) { this.value = value; } } TreeNode root = new TreeNode(10); root.left = new TreeNode(5); root.right = new TreeNode(15); System.out.println(root.value);
|
链表
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class ListNode { int value; ListNode next; ListNode(int value) { this.value = value; } }
ListNode head = new ListNode(1); head.next = new ListNode(2); head.next.next = new ListNode(3); System.out.println(head.value);
|
异常处理
异常处理是在编程中用于处理可能发生的错误情况的一种机制。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| try { int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("发生除以零的异常:" + e.getMessage()); catch (ArithmeticException e) { } catch (NullPointerException e) { } catch (Exception e) { } finally { System.out.println("无论是否发生异常,这里都会执行。"); }
|
继承和多态
多态:多态性的实际效果是,你可以使用父类的引用变量来引用子类的对象,然后根据实际对象的类型调用相应的方法。
@Override :是Java中的一个注解(Annotation),用于标识一个方法是在子类中对父类中的方法进行重写(覆盖)。当你在子类中重写父类的方法时,为了确保你的重写是正确的,你可以使用 @Override 注解。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Animal { void makeSound() { System.out.println("Animal makes a sound"); } }
class Dog extends Animal { @Override void makeSound() { System.out.println("Dog barks"); } }
Animal animal1 = new Animal(); Animal animal2 = new Dog(); animal1.makeSound(); animal2.makeSound();
|
接口与实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| interface Shape { double getArea(); }
class Circle implements Shape { double radius;
Circle(double r) { radius = r; }
@Override public double getArea() { return Math.PI * radius * radius; } }
Shape shape = new Circle(5); double area = shape.getArea(); System.out.println("Circle area: " + area);
|
在这个示例中,我们首先定义了一个名为 Shape 的接口,其中有一个 getArea 方法,用于获取图形的面积。然后,我们创建了一个实现了 Shape 接口的类 Circle,该类表示一个圆,它有一个属性 radius 表示半径。
在 Circle 类中,我们实现了 getArea 方法,根据圆的半径计算并返回面积。这是我们遵循接口要求的方式来为每种形状提供计算面积的方法。
在主程序中,我们使用多态性的概念。我们声明了一个 Shape 类型的引用变量 shape,并将其初始化为一个 Circle 对象。由于 Circle 实现了 Shape 接口,我们可以使用 Shape 引用变量来引用 Circle 对象。
然后,我们调用 shape.getArea() 方法,实际上是调用了 Circle 类中的 getArea 方法。这是因为 shape 引用的对象是 Circle 类的一个实例。最后,我们将计算得到的面积输出。
通过这个示例,你可以看到多态性的好处:无论是 Circle、Square 还是其他实现了 Shape 接口的类,只要它们实现了相同的方法,我们就可以使用相同的接口引用来调用这些方法,使得代码更加灵活和可扩展。