恒生回来的新问题→SQL
1.构造方法 模模糊糊记住然后蒙对了
2.C语言指针的题目蒙的
3.编程题两道都很简单
4.栈数据结构应用的几种场景 (逆序/程序装载/递归/链表的删除?) 选了13 还没找到答案
5.class A {} class B extends A{} 问B()的问题 回来写了下代码发现做错了
6.JAVA main方法里面的string [] args
不就是一个String数组么,传一个String数组参数进去
作为参数,写成String[] args、String[] aaaa、String... aaa都行
7.拓扑排序
例如,假定一个计算机专业的学生必须完成图3-4所列出的全部课程。在这里,课程代表活动,学习一门课程就表示进行一项活动,学习每门课程的先决条件是学完它的全部先修课程。如学习《数据结构》课程就必须安排在学完它的两门先修课程《离散数学》和《算法语言》之后。学习《高等数学》课程则可以随时安排,因为它是基础课程,没有先修课。若用AOV网来表示这种课程安排的先后关系,则如图3-5所示。图中的每个顶点代表一门课程,每条有向边代表起点对应的课程是终点对应课程的先修课。从图中可以清楚地看出各课程之间的先修和后续的关系。如课程C5的先修课为C2,后续课程为C4和C6。
5和1竟然是同一个方法,构造方法与继承的问题
public class NO_Hengsheng_1 { NO_Hengsheng_1(){ System.out.println("1"); } } public class NO_Hengsheng_2 extends NO_Hengsheng_1 { NO_Hengsheng_2(){ System.out.println("2"); } } public class NO_Hengsheng_3 extends NO_Hengsheng_2 { NO_Hengsheng_3(){ System.out.println("3"); } } public class NO_Hengsheng { public static void main(String[] args) { new NO_Hengsheng_3(); } }
继承问题,子类实例化生成对象时,把这个类加载到JVM上,会先生成类的实例,但是new关键字有一个特殊的性质就是会先调用类的无参构造方法,如果这个类继承了父类,则子类实例化时,会先调用父类的无参构造方法,因此在这儿B b = new B()的过程中,会先调用A类的无参构造方法
首先,方法是没有继承一说的,只有覆写或者重载,类和类之间才能叫继承。
其次,你所出现的效果,是类的一个初始化的顺序问题,子类在初始化的时候会先调用父类的构造方法,所以打出了你的那句话。
最后,子类可以使用super()显示调用父构造器,没有重写的必要。
编程题一:15个信教徒15个异教徒,30个人围成一圈报数,每报到9,则报数人卒,问怎么站可以让15个异教徒全死结束。
public class NO_Hengsheng_Kill { public static boolean is_in(int mark,int [] A){ for (int i=0;i){ if (mark==A[i]){ return true; } } return false; } public static int[] out(){ int mark=0; int [] outs = new int[15]; outs[14]=-1; int count = 0; while (outs[14]==-1){ for (int i=0;i<9;i++){ mark = mark + 1; if (mark == 31) mark = 1; if (is_in(mark,outs)){ mark=mark+1; } } outs[count] = mark; count++; } return outs; } public static void main(String[] args) { int [] save = new int[15]; save=out(); Arrays.sort(save); for (int i:save){ System.out.print(i+" "); } } }
应该是对的把,笔算了一下差不多;
编程题二:四位数3025,3025=(30+25)^2,按照这个规律求出所有1000-9999满足这个条件的四位数。
public class NO_Hengsheng_sqrt { public static void main(String[] args) { print_num(); } public static void print_num(){ for (int i=1000;i<10000;i++){ String a = Integer.toString(i); int x = Integer.parseInt(a.substring(0,2)); int y = Integer.parseInt(a.substring(2)); if ((x+y)*(x+y)==i){ System.out.println(i); } } } }
感觉有取巧的地方把,应该不是最优解,可能会有使用数学方法来计算会时间上更快一点;
SQL在下一篇博客复盘把