为什么我看很多书上都这么写呢?这是为什么啊?
public class ABCDEF
{
ABCDEF()
{
……
主程序;
……
}
void main()
{
new ABCDEF();
}
}
为什么主程序不写在main方法里,而非要写在构造函数里呢?
public class ABCDEF
{
ABCDEF()
{
……
主程序;
……
}
void main()
{
new ABCDEF();
}
}
为什么主程序不写在main方法里,而非要写在构造函数里呢?
调试欢乐多
public static void main(String[] args) {
int i,j;
int[] yanghui = new int[9];
System.out.println("杨辉三角:");
yanghui[0] = 1;
for (i = 0; i < yanghui.length; i++) {
for (j = i; j > 0; j--) {
yanghui[j] = yanghui[j] + yanghui[j-1]; }
for (j = 0; j <yanghui.length - i - 1; j++) {
System.out.print("\t");
}
for (j = 0; j <= i; j++) {
System.out.print(yanghui[j]+"\t\t");
}
System.out.println();
}
}
}//勉强写了一个,不知是否是你想要的。图形没有粘贴好,很痛苦。
public class Test {
public static int N = 5;
public static void outPut(char c){
System.out.println(c+"图:");
}
public static void mapA(){
outPut('A');
for (int i = 0; i < N; i++) {
for (int j = 0; j < i + 1; j++) {
System.out.print('*');
}
System.out.println();
}
}
public static void mapB(){
outPut('B');
for (int i = 0; i < N; i++) {
for (int j = 0; j <= i ; j++) {
if(i==2&&j==1||((j==1||j==2)&&i==3))
System.out.print(" ");
else
System.out.print('*');
}
System.out.println();
}
}
public static void mapC(){
outPut('C');
for (int i = 0; i < N; i++) {
for (int j = 0; j < N - i - 1; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * i + 1; j++) {
System.out.print('*');
}
System.out.println();
}
}
public static void mapD(){
outPut('D');
char[][] arr = new char[N][2*N-1];
for (int i = 0; i < N; i++) {
for (int j = 0; j < 2 * N - 1 ; j++) {
arr[i][j] = ' ';
if(i==N-1||i+j==4||j-i==4)
arr[i][j] = '*';
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < 2 * N - 1; j++) {
System.out.print(arr[i][j]);
}
System.out.println();
}
}
public static void mapE(){
outPut('E');
for(int i=0;i<N;i++){
for(int j=0;j<N-2*Math.abs(N/2-i);j++)
System.out.print('*');
System.out.println();
}
}
public static void mapF(){
outPut('F');
for (int i = 0; i < N; i++) {
for (int j = 0; j < N ; j++) {
if(i == 0 || i == N-1)
System.out.print('*');
else if(j == 0 || j == 2)
System.out.print('*');
if(j == 1 && i != 0 && i != N-1)
System.out.print(" ");
}
System.out.println();
}
}
public static void main(String[] args) {
mapA();
mapB();
mapC();
mapD();
mapE();
mapF();
}
}
public class NumberCount {
public static int count[] = {0,0,0,0,0,0,0,0,0,0};
public static void countNumber(int n){
count[n]++;
}
public static void print(){
System.out.println("\n统计结果如下:");
for (int i = 0; i < count.length; i++) {
System.out.println("有"+"'"+i+"':"+count[i]+"个!");
}
}
public static void main(String[] args) {
int i;
int[] number = new int[100];
for (i = 0; i < number.length; i++) {
number[i] = (int)(Math.random()*10);
}
System.out.print("100个随机数如下:");
for (i = 0; i < number.length; i++) {
if(i%10 == 0)
{
System.out.println("");
}
System.out.print(number[i]+" ");
}
for (i = 0; i < number.length; i++) {
countNumber(number[i]);
}
print();
}
}
而mian方法 并不是所有的类都有main方法! 当ABCDEF这个类不做为主类时,也就是main方法不会被执行到了! 如果把主程序写在构造函数里,也就是不管是不是主类都会执行到啦。 愚见!
看到你把main错写成mian了,我回想起了一些往事我一哥们,写单片机上的C语言程序,出错,让我看
我一看也看不出什么不对来,现象是,如果只有一个主函数,那么程序是正常的,如果写个延时函数,则程序就不运行了,即使延时函数里什么也不写,主函数也不调用延时函数,也不行。后来发现原来主函数写成mian了,但是只有主函数的时候程序执行正常,我当时就以为mian和main是通用的了,后来想一想,原来:程序没有main函数时,自动招待第一个函数。
写构建器中好处是每次其他程序中new一个该对象的时候,都可以执行这些代码。
写main中好处是可以直接被用户执行。
根据需要做选择好了。
但是也得说说我的想法
写在一个构造函数里,在main里new那个对象的时候就执行了构造函数里的主程序了。。
跟直接写在main里是一个的。。同时,写在了构造函数里扩展性比较好。。
然而实际问题中往往需要很多函数去完成很多功能。
构造函数就像一个箱子封装了很多命令和方法,我们把同一类或者常用的方法封装在构造函数里便于操作和控制,更利于查找错误维护方便,如果都写在main()方法里会导致main()方法里代码过于多与复杂也不利于控制和检查。
尽量吧方法模块化,使main()变得简单,是程序变得容易读懂。
构造方法是用来实例化对象调用的 同时也可以给成员变量赋值 或者实现其他的功能
main方法就不用说了 也可以实现其他的功能
其他的方法就自己定义了 看需要实现什么功能了 功能最好单一 易懂 方便修改等等
请问能发给我一下吗?不胜感激……
我的联系邮箱是[email protected]
非常感谢……
!
============
正解