1.关于抽象类和接口叙述正确的
抽象类
特点:
复制代码
1
2
3
4
5
6
71.抽象类中可以构造方法 2.抽象类中可以存在普通属性,方法,静态属性和方法。 3.抽象类中可以存在抽象方法。 4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。 5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。 6,抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰
关键字使用注意:
抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。
接口
复制代码
1
2
3
4
5
6
7
81.在接口中只有方法的声明,没有方法体。 2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final 3.在接口中的方法,永远都被public来修饰。 4.接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类) 5.接口可以实现多继承 6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。 7,接口可以继承接口,用extends
2.导出类调用基类的构造器必须用到的关键字:(其实就是子类调用父类的构造器)
复制代码
1
2使用super()关键字,且放在子类构造函数的第一行
3.初始化过程是这样的(服了,第2遍记录了,初始化过程)
复制代码
1
2
3
4
51.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 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
12private 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
4str.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-编程-爬楼梯内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复