idead断点调试_17、IDEA断点调试、测试题

本文介绍了IntelliJ IDEA的断点调试步骤,包括设置断点、开启调试会话、单步调试等。同时,文章还讲解了Java编程中的包、抽象类、构造函数、继承等基础知识,以及一个简单的数学问题的解决方案,涉及动态规划。最后,文章对比了两种求特定数字序列和的不同算法,展示了高效编程技巧。
摘要由CSDN通过智能技术生成

IDEA断点调试

1、设置断点

选择要设置断点的代码行,在行号的区域后面单击左键即可。

2、开启调试会话

点击Debug按钮开启调试。

IDEA下方出现Debug视图,红色箭头指向的是现在调试程序停留的代码行,方法f2()中程序的第23行。

Frames是程序的方法调用栈区,在这个区域显示了程序执行到断点处所调用过的方法,越下面的方法越早被调用。

3、单步调试

3.1、step over

点击红色箭头指向的按钮,程序向下执行一行,(如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行)

3.2、step into

点击红色箭头指向的按钮,程序向下执行一行,如果该行有自定义方法,则进入自定义方法的逻辑(不会进入官方类库的方法)。

3.3、force step into

该按钮在调试时能进入任何方法。

3.4、step out

如果在调试的时候,step into / force step into进入了一个方法,并觉得该方法没有问题,你就可以使用step out跳出该方法,返回该方法被调用处的下一行语句,注意:该方法已执行完毕。

3.5、Drop Frame

点击该按钮后,你将返回到当前方法的调用处重新执行,并且所有上下文变量都回到那个时候,只要调用链中还有上级方法,可以跳到其中的任何一个方法。

4、高级调试

4.1、跨断点调试

设置多个断点开始调试。

想移动到下一个断点,点击红色箭头指向的按钮。

4.2、设置变量值

这个功能可以更加快速的跳出循环语句。

4.3、跳到断点处和跳到光标所在行

纠错

1、下面关于Java中包的叙述正确的是 ACD

A、在Java中可以使用import语句导入包

B、在Java中可以使用package语句导入包

C、位于同一个包中的类,不需要导入包就可以直接访问

D、不同的包中可以出现类名相同的类

在Java中package用于定义包,import用于导入包。

2、下列有关抽象类的叙述正确的是 C

A、抽象类中一定含有抽象方法

B、抽象类既能被实例化也能被继承

C、抽象类的声明必须包含abstract关键字

D、抽象类中不能有构造方法

3、下列关于构造函数的说法正确的是 AB

A、方法名必须与类名相同

B、使用new关键字创建对象时,Java虚拟机会自动调用构造函数

C、我们在定义一个类时,必须要声明至少一个构造函数

D、构造函数中不能使用return语句

一个类默认会存在一个无参的构造函数,所以可以不用声明;

构造函数中可以使用return语句,但是只能是return;

4、关于继承,以下说法正确的是 AD

A、Java中只支持单继承,一个类只能继承一个类,但是可以有多个子类

B、一个类如果没有自己写无参构造方法,那么子类将无法继承

C、子类可以当父类用,父类不可以当子类用

D、子类重写父类方法时访问权限不能更低

在继承中,父类的构造方法不能继承,但是子类可以通过super关键字进行调用

子类可以当父类用,叫做多态;父类可以当子类用,应该叫向下转型。

5、下列说法正确的是 ABD

A、实例方法可以直接调用超类的实例方法

B、实例方法可以直接调用超类的类方法

C、实例方法可以直接调用其他类的实例方法

D、实例方法可以直接调用本类的类方法

实例方法调用其他类的实例方法,必须先创建对象,通过对象调用

6、小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。

package org.westos.demo2;

/**

* @author lwj

* @date 2020/5/8 20:36

*/

public class Test {

public static void main(String[] args) {

double sum = 0;

double dayOfMoney = 2.5;

int cost = 6;

int index = 0;

int total = 100;

while (sum < total) {

index++;

sum += dayOfMoney;

if (index % 5 == 0) {

sum -= cost;

}

}

System.out.println(index);

//74

}

}

7、求 s=a+aa+aaa+aaaa+aa...a 的和,其中a是一个数字,例如

2+22+222+2222+2.....2 最大有几个2由键盘录入得到

例如提示用户 请输入你要求和的数字

用户输入的是3

请输入你要的最大的数字个数

用户输入的是5

那么就是求 3+33+333+3333+33333 的和。

我的方法(low)

package org.westos.demo2;

import java.util.Scanner;

/**

* @author lwj

* @date 2020/5/8 20:40

*/

public class Demo {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入你要求和的数字:");

int num = sc.nextInt();

System.out.println("请输入你要的最大数字的个数:");

int length = sc.nextInt();

StringBuilder sb = new StringBuilder();

for (int i = 0; i < length; i++) {

sb.append(num);

}

String s = sb.toString();

int max = Integer.parseInt(s);

int add = add(max);

System.out.println(add);

//37035

}

public static int add(int num) {

if (num / 10 == 0) {

return num;

}

return num + add(num / 10);

}

}

//3

//5

//37035

老师的方法(时间复杂度、空间复杂度小)

class Demo2 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入你要求和的数字:");

int num = sc.nextInt();

System.out.println("请输入你要的最大数字的个数:");

int length = sc.nextInt();

//3 + 33 + 333 + 3333 + 33333

int temp = 0;

//代表每个元素

int sum = 0;

for (int i = 0; i < length; i++) {

temp += num;

sum += temp;

num *= 10;

}

System.out.println(sum);

//37035

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值