疑惑:java初学者

问题描述

java中的main为什么要用static修饰呢还有main为什么在类定义里面呢?

解决方案

解决方案二:
java的语法规则,必须从main(String[]args)开始定义为static,因为刚进入main方法时,没有任何实例初始化,static修饰的变量和方法在类加载的时候便加载了所以static修饰main方法,可以在不new实例的情况下自己执行
解决方案三:
引用1楼magi1201的回复:

java的语法规则,必须从main(String[]args)开始定义为static,因为刚进入main方法时,没有任何实例初始化,static修饰的变量和方法在类加载的时候便加载了所以static修饰main方法,可以在不new实例的情况下自己执行

楼上正解,补充点,java是完全面向对象的,所有的方法都要定义在类中,main方法也不例外
解决方案四:
楼主以前学C/C++?
解决方案五:
首先main是一个方法,java是面向对象的方法必须要写在类里,且若为普通方法,需要通过实例化对象来调用,static方法可直接用类名.方法名来调用另外main应该是java规定的程序运行时会去寻找的方法名,static修饰也就是无需实例化,只要加载了当前类就可以调用所以调用顺序应该是先加载main方法所在的类,然后再调用main方法
解决方案六:
王八的屁股,规定
解决方案七:
该回复于2014-09-19 14:30:49被版主删除
解决方案八:
引用2楼windsunmoon的回复:

Quote: 引用1楼magi1201的回复:
java的语法规则,必须从main(String[]args)开始定义为static,因为刚进入main方法时,没有任何实例初始化,static修饰的变量和方法在类加载的时候便加载了所以static修饰main方法,可以在不new实例的情况下自己执行

楼上正解,补充点,java是完全面向对象的,所有的方法都要定义在类中,main方法也不例外

看到您的话有点不解面向对象语言,所有的语言都要依赖类吗?
解决方案九:
这是Java自身要编译运行代码必须的main方法啊,就想c/c++中的intmain()
解决方案十:
学习中,知识点就是要按照规定来写的,不按规定写就会报错,多了解了解规范吧
解决方案十一:
为了兼容罢了,因为java的函数是不能脱离类存在的,如果不加static,那么在运行这个main方法之前你还得把main所在的类new出来,这与main作为入口函数的功能是冲突的,所以就得将main声明为静态的,这样虽然形式上main还是在类里面,但实际上和c里面的全局函数没区别了。
解决方案十二:
对于那些规定没必要去扣,有些东西记住就行
解决方案十三:
main用static关键字修饰,目的是告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,静态方法在内存中的位置是固定的,即当定义了类以后这段代码就已经存在了。
解决方案十四:
main方法是一个入口而已,就是写死了而已,为啥是static的呢因为在类加载的时候,你可以直接用类名调用static的方法但是为啥要设计成static的呢,不加static就不能调用了吗其实也是可以的就是比较麻烦因为如果你不设计成static的就要new出来对象,但是当你new的时候你知道你这个调用main方法的构造器吗?有的有默认的还好说,没默认的不就麻烦了吗?所以直接就定义成static的得了
解决方案十五:
引用1楼magi1201的回复:

java的语法规则,必须从main(String[]args)开始定义为static,因为刚进入main方法时,没有任何实例初始化,static修饰的变量和方法在类加载的时候便加载了所以static修饰main方法,可以在不new实例的情况下自己执行

解释的很到位,
解决方案:
首先Java运行的主接口就是main方法,main是一个方法,调用必须有类的对象,所以方法必须定义在类中。Java的main方法之所以定义为static是因为,静态的是不需要创建对象的,java运行是把类加载到虚拟机(JVM)中运行,这样当类加载到JVM当中时不需要创建对象就可以直接调用main方法,从而程序才能开始运行。
解决方案:
main是Java编程的入门。鉴于楼主是Java初学者,所以,你目前只需了解程序是由main开始执行的即可。不必纠结太多,随着对Java的深入理解,你会慢慢理解HelloWorld并不是那么简单。
解决方案:
java程序的入口,记住就行
解决方案:
初学时最好先不要扣的这么深,main的写法先记住就行,哥们继续往下学吧,随着后面知识的概念和理解你就会明白的。。。
解决方案:
边学边用在理解一时理解不了用多了慢慢体会后面还有好多抽象的东西很钦佩楼主对待事物的态度做事情的态度编程不是那么容易的事情
解决方案:

解决方案:
引用楼主leletao777的回复:

java中的main为什么要用static修饰呢还有main为什么在类定义里面呢?

1.定义为static的目的是想在类外可以访问main函数;2.既然已经是static,定义在类里面或者是类外面是一样的,但定义在类里面是为了体现java“一切都是类”的思想。

时间: 2024-11-03 06:28:56

疑惑:java初学者的相关文章

Java初学者入门需掌握的30个基本概念

初学|概念 基本概念 1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率. 2.OOP中最重要的思想是类,类是模板是蓝图,从类中构造一个对象,即创建了这个类的一个实例(instance). 3.封装:就是把数据和行为

java类的问题-JAVA初学者,学了,if while for 了,有个人想知道,一年之内一对兔子能繁殖多少对?

问题描述 JAVA初学者,学了,if while for 了,有个人想知道,一年之内一对兔子能繁殖多少对? 有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面.已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子.假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?(提示:斐波那契数列)顺便说下思路数!感谢> 解决方案 兔子的规律为数列,1,1,2,3,5,8,13,21?public?class?Fobonacc

java初学者求教:关于线程安全问题

问题描述 java初学者求教:关于线程安全问题 List list = new ArrayList(); list = Collections.synchronizedList(list); 这时list是线程安全的,那么当我用增强for循环遍历list, 并且使用list的remove方法时,是不是就不安全了? 另外,如果list集合中存放的是一些带有图片的对象,比如dog public void paintTest(Graphisc g){ for(dog d:list){ g.drawIm

求助大神帮忙 在线等-JAVA初学者的提问?在线等!

问题描述 JAVA初学者的提问?在线等! 这三个表之间有什么关系 解决方案 ......... 能有什么关系啊. 瞬间觉得你提问是不是没有这么简单. 解决方案二: 哦,原来没有关系啊!我一直在找有什关系呢?看来我想多了 解决方案三: 第2张表的BILLID是第1张表主键的外键,第2张表的SUPPLIERID是第3张表主键的外键 解决方案四: 主外键关联的关系啊,US表中.useid是主键,另外两个id字段是关联的外键,通过主外键关联的关系可以实现通过一张表的数据查询到相关联的另外一张表的数据,实

我是java初学者,大神帮忙解答我写的递归函数哪里错了?

问题描述 我是java初学者,大神帮忙解答我写的递归函数哪里错了? package com.jian.action; public class Action { static int count = 0,i=0; public static void digui(String num){ char[] num1 = num.toCharArray(); if(count<num1.length-1){ if (num1[i]=='a') { count++; }i++; System.out.p

java初学者,求大神指点

问题描述 java初学者,求大神指点 int i = 0:int sum:while(i<100) { sum =i; sum+=i; i++; }System.out.println(sum); 这是主方法里面运行的代码,错误信息提示输出行的sum未初始化,我不太懂,为什么,求高手指点 解决方案 给sum赋值就ok了 解决方案二: 赋初值:int sum = 0; 解决方案三: sum是局部变量吧,如果是全局变量的话就不用赋初值,会有默认值的,但是 局部变量在使用前必须初始化或者赋值 解决方案

java初学者 为什么两个格式相同的代码编译出来结果不同求大神指导

问题描述 java初学者 为什么两个格式相同的代码编译出来结果不同求大神指导 import java.util.*; public class a { public static void main(String[] args){ Scanner in=new Scanner(System .in); System.out.println("请出拳"); System.out.println("请选择: 1剪刀 2石头 3布"); int a=in.nextInt(

java初学者,求教!!!!!!!11

问题描述 java初学者,求教!!!!!!!11 题目描述 每门课的成绩分为A.B.C.D.F五个等级,为了计算平均绩点,规定A.B.C.D.F分别代表4分.3分.2分.1分.0分. 输入格式 有多组测试样例.每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔. 输出 每组输出结果占一行.如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数.否则,输出"Unknown". 样例输入 A B C D F B F F C C A D C

java代码-java初学者提问 在类中 用static成员变量实例化自身类 程序的执行顺序过程是怎样的?

问题描述 java初学者提问 在类中 用static成员变量实例化自身类 程序的执行顺序过程是怎样的? class Demo03 { public static void main(String[] args) { A.show(); } } class A { //构造方法 A(){ System.out.println("构造方法执行"); System.out.println(b); System.out.println(c); } static A a=new A(); sta