Java基础复习(1) 为什么在java中我们要将main定义为一个static方法?

2015-10-20

以前学习java知识,只是跟着用到的代码跳着学了些,学的不全还错漏成片……恩,好惨!

思来想去,是必须要好好复习加整理下,不然写出来的东西真没法读了。所以,就从今儿起一点一点的啃下去吧。

回头创建了Class文件,又看到了熟悉的main函数……然后,有了标题的问题。那么,今天就回顾这个问题吧。

 1 public class Review_p2 {
 2     public static void main(String[] args) {
 3         byte b = 3;
 4
 5         byte aa = 4;
 6         byte bb = 5;
 7
 8         //b = aa + bb;
 9                 //此时aa bb都是变量,且不能确定范围,不能判断是否会丢失精度,所以java不会赋值
10         System.out.println(b);
11     }
12 }

Review_p2.java

一般来说,在网上直接提出这个问题,得到的回复会是:主方法必须是静态的,java就这么规定的。那么,或许这个答案并是我们所想得到的。

那就继续看吧:

  • 先看static的作用:在类中,被static修饰符修饰的变量称为静态变量(也叫类变量),而static修饰的方法则是静态方法,static方法属于类而不是属于某个对象,所以static方法是可以直接通过类名调用的不必先创建出实例的。

那么这里的main也一样,static的main方法可以直接被jvm调用,不用先new出实例再执行。这样,我们在编译这段java代码时,解释器就是在当前的Review_p2类当中去调用静态的main方法,而不需要产生Review_p2这个类的对象,我们加载Review_p2类时,main方法也被加载作为java程序的入口。

同时要注意:在静态方法中,不能调用非静态方法及引用非静态变量。但是反过来却没问题。

这个是因为在类被加载时,静态变量和静态方法就分配了内存空间,当非静态方法调用他们的时候,他们已经有了内存空间,这里反过来就不可以了。

还有就是,看到有前辈提到以前main()方法可以不是static的,但是后来JSR规范强制规定了main()方法的格式必须是: public static void main(String[] args){...} ,如果是这样,那照规范做就行了,改了肯定也是方便你我他的。

时间: 2024-10-26 18:50:44

Java基础复习(1) 为什么在java中我们要将main定义为一个static方法?的相关文章

在java中为什么要把main方法定义为一个static方法?

我们知道,在C/C++当中,这个main方法并不是属于某一个类的,它是一个全局的方法,所以当我们执行的时候,c++编译器很容易的就能找到这个main方法,然而当我们执行一个java程序的时候,因为java都是以类作为程序的组织单元,当我们要执行的时候,我们并不知道这个main方法会放到哪个类当中,也不知道是否是要产生类的一个对象,为了解决程序的运行问题,我们将这个main方法定义为static,这样的话,当我们在执行一个java代码的时候,我们在命令提示符中写:java Point(Point为

Java基础复习笔记系列 四

Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时,不能指定其长度.不同于C 数组的小标可以是整型常量或整型表达式. .length方法是显示数组的长度:数组.length;String.length();一个是属性,一个是方法.注意区分. 2.数组的内存分析? Array a[]; a = new Integer(15); /*这个a在栈中,在堆

Java基础复习㈥ 内存分配

1.方法区 类的全限定名.直接超类的全限定名.该类是类或者接口.访问修饰符.直接超接口全限定名: 运行时常量池.字段.方法.静态变量.到类装载器的引用.到类class的引用 2.栈内存 局部变量区.操作数栈.帧数据区 3.堆内存 存放由new创建的对象和数组 *栈内存和堆内存 栈存取速度比堆快,仅次于寄存器,栈数据可以共享.栈中主要存放一些基本类型的变量和对象句柄 4.本地方法栈内存 5.String ① String str1 = "abc"; String str2 = "

Java基础复习笔记系列 五 常用类

Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String s2 = “hello”:结论:s1 == s2. 字符串常量放在data区. 3. String s3 = new String("hello"); String s4 = new String("hello");结论:s3 != s4.但s3.equals(s4).

java基础复习之对于String对象,可以使用“=”赋值,也可以使用new关键字赋值,两种方式有什么区别?

String类型是实际工作中经常用到的类型,从数据类型上划分,String是一个引用类型,是API中定义的一个类.所以String类型的对象可以用new创建,例如String name=new String("string");为变量name进行赋值,值为"string" ,然而String类比其他类有些特殊,可以使用'='直接赋值,如 String name="string";也是为变量name进行赋值,值为"string"

Java基础复习笔记系列 七 IO操作

Java基础复习笔记系列之 IO操作 1. 2.

Java基础复习笔记系列 十 GUI

Java基础复习笔记系列之 GUI 1. 2.

Java基础复习笔记系列 九 网络编程

Java基础复习笔记系列之 网络编程 1. 2.

Java基础复习笔记系列 八 多线程编程

Java基础复习笔记系列之 多线程编程 1. 2.