package com.logic.debug_;
public class Debug01 {
public static void main(String[] args) {
//演示逐行执行代码
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += i;
System.out.println("i = " + i);
System.out.println("sum = " + sum);
}
System.out.println("退出for循环...");
}
}
package com.logic.debug_;
public class Debug02 {
public static void main(String[] args) {
//看一下数组越界的异常
int[] arr = {1, 10, -1};
for (int i = 0; i <= arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("退出for循环...");
}
}
package com.logic.debug_;
import java.lang.reflect.Array;
import java.util.Arrays;
public class Debug03 {
public static void main(String[] args) {
int[] arr = {1, -1, 10, -20, 100};
//我们看看Arrays.sort方法底层实现->Debug
//演示如何追源码 看看Java设计者是怎么实现的
//小技巧 将光标放在某个变量上 可以看到最新的数据
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}
package com.logic.debug_;
import java.lang.reflect.Array;
import java.util.Arrays;
//演示执行到下一个断点,同时支持动态的下断点/去断点
public class Debug04 {
public static void main(String[] args) {
int[] arr = {1, -1, 10, -20, 100};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i] + "\t");
}
System.out.println("hello100");
System.out.println("hello200");
System.out.println("hello300");
System.out.println("hello400");
System.out.println("hello500");
System.out.println("hello600");
System.out.println("hello700");
}
}
package com.logic.debug_;
//使用断点调试的方法 追踪下一个对象创建的过程 Person[name age constructor]
//使用断点调试 查看动态绑定机制的如何工作
public class DebugExercise {
public static void main(String[] args) {
//创建对象的流程
//1.加载Person类信息
//2.初始化 默认初始化 显式初始化 构造器初始化
//3.返回对象的地址
Person person = new Person(20, "logic");
System.out.println(person);
}
}
class Person {
public String name;
public int age;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
package com.logic.poly_.dynamic_;
public class DynamicBinding {
public static void main(String[] args) {
A a = new B();
System.out.println(a.sum());
System.out.println(a.sum1());
}
}
class A {
public int i = 10;
public int sum() {
return getI() + 10;
}
public int sum1() {
return i + 10;
}
public int getI() {
return i;
}
}
class B extends A {
public int i = 20;
// public int sum() {
// return i + 20;
// }
public int getI() {
return i;
}
// public int sum1() {
// return i + 10;
// }
}