我是靠谱客的博主 无聊抽屉,这篇文章主要介绍Java随记5-编程-爬楼梯,现在分享给大家,希望可以做个参考。

1.关于抽象类和接口叙述正确的

抽象类

特点:

复制代码
1
2
3
4
5
6
7
1.抽象类中可以构造方法 2.抽象类中可以存在普通属性,方法,静态属性和方法。 3.抽象类中可以存在抽象方法。 4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。 5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。 6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰

关键字使用注意:

抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。

接口

复制代码
1
2
3
4
5
6
7
8
1.在接口中只有方法的声明,没有方法体。 2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final 3.在接口中的方法,永远都被public来修饰。 4.接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类) 5.接口可以实现多继承 6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。 7,接口可以继承接口,用extends

2.导出类调用基类的构造器必须用到的关键字:(其实就是子类调用父类的构造器)

复制代码
1
2
使用super()关键字,且放在子类构造函数的第一行

3.初始化过程是这样的(服了,第2遍记录了,初始化过程)

复制代码
1
2
3
4
5
1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法; 4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法;

(1)初始化父类的普通成员变量和代码块,执行 C c = new C(); 输出C
(2)super(“B”);表示调用父类的构造方法,不调用父类的无参构造函数,输出B
(3) System.out.print(“B”);

4.

复制代码
1
2
3
4
5
/** * String split 这个方法默认返回一个数组, * 如果没有找到分隔符, * 会把整个字符串当成一个长度为1的字符串数组 * 返回到结果, 所以此处结果就是1 */
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
private static void testSpringSpilte(){ String str = "12,3"; String str2 = "123"; System.out.print(str.split(",").length); System.out.print(str2.split(",").length); } } 结果 2 1
复制代码
1
2
3
4
str.split(",")方法是把str字符串根据分割符","划分成一个字符串数组, 如果str字符串中找不到分隔符",",则把整个str字符串放入字符串数组的第一个元素。 因此str.split(",").length=1。

5.在你面前有一个n阶的楼梯,你一步只能上1阶或2阶。请问,当N=11时,你可以采用多少种不同的方式爬完这个楼梯(),当N=9时呢呢()?——Java 爬楼梯

复制代码
1
2
3
4
5
6
7
8
9
你需要爬11楼的时候,你倒回去一步只能待在第10楼或者第9楼。换句话说就是到达第9楼的方法次数加上第10楼的方法次数。 如果你待在第10楼,就得待在第9楼或者第8楼 如果你待在第9楼,就得待在第8楼或者第7楼 ...... 如果你待在第3楼,就得待在第1楼或者第2楼 爬1楼一种方法, 爬2楼两种方法。 爬3楼就是爬1楼方法次数加2楼的方法次数。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
用数学表达就是: a(11=a(10+a(9=144 a(10=a(9+a(8=89 a(9=a(8+a(7=55 a(8=a(7+a(6=34 a(7=a(6+a(5=21 a(6=a(5+a(4=13 a(5=a(4+a(3=8 a(4=a(3+a(2=5 a(3=a(2+a(1=3 a(2=2 a(1=1

思想: 爬到第n阶的方法数等于第n-1阶方法数与第n-2阶楼梯的方法数之和。 f(n) = f(n-1) + f(n-2);

复制代码
1
2
3
4
5
6
7
8
9
1 class Solution { public int climbStairs(int n) { if(n == 0 || n == 1 || n == 2) return n; return climbStairs(n-1) + climbStairs(n-2); } }

法2

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
参考斐波那契数方法 class Solution { public int climbStairs(int n) { if (n == 1) { return 1; } int first = 1; int second = 2; for (int i = 3; i <= n; i++) { int third = first + second; first = second; second = third; } return second; } }
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
3 参考动态规划法 class Solution { public int climbStairs(int n) { if (n == 1) { return 1; } int[] dp = new int[n + 1]; dp[1] = 1; dp[2] = 2; for (int i = 3; i <= n; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[n]; } }

最后

以上就是无聊抽屉最近收集整理的关于Java随记5-编程-爬楼梯的全部内容,更多相关Java随记5-编程-爬楼梯内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部