Java的main方法与类的加载的联系
鉴于许多同学对这个main方法的迷惑!我这里提供一些意见,希望对大家有帮助!呵呵!
****我们说加载先:
Java的类是用到才开始加载的,并且在每个类的构造器调用之前,类的每个域(成员变量)都要首先被编译器初始化一次,然后才轮到构造器来干活儿。但是,Java的初始化是惰性的,它没有C++构造函数的苛刻的要求,Java编译器会保证每个变量在使用之前会被初始化,因此Java中只要求程序员在合适的地方为类成员给一个有效的值即可。
一个static变量在没有类实例的时候也是可以使用的,这就要求static必须被恰当地初始化,也就是说,在构造器的调用之前,加载类的时候,Java编译器会允许JVM运行一段代码,至少可能会有几行。
****程序开始的时候类加载的时候所做的工作流程是怎样的?
每当执行Java编译器的时候,编译器会寻找指定的类,当它找到类时,首先需要初始化static变量,因为这些成员可以在没有实例的情况下运行,接着,再按照变量的声明顺序依次初始化类的成员,成员初始化完毕之后才为自己调用构造器,一切进行完毕之后,才可以调用方法。但主类比较特殊,主方法会在构造器之前,static变量初始化之后调用,这是由于Java的惰性初始化,在main方法被调用之前无法知道是否存在主类的实例。
Java的初始化和构造的分离使得Java提供了代码块作为初始化成员的工具和支持无名类的利器,而这样一来,初始化的工作就不免会被扩展,程序员可以嵌入额外的初始化步骤。由于Java的成员分普通成员和static成员,初始化代码块也分static的,例如:
public class Foo{
int a;
int b;
static int c;
{
a=-1;
b=1;
}//这个就是所谓的初始化代码块
static {
c=100;
}//static成员有专属的static初始化代码块
相关文档:
http://hi.baidu.com/0_net/blog/item/8566fc2bb730c293033bf63e.html
一.获得控制台用户输入的信息
/** *//**获得控制台用户输入的信息
* @return
* @throws IOException
*/
public St ......
用的是MySQL数据库。
1,建一个userdb库,再建userinfo表,字段:id(int),username(varchar),password(varchar)。
create database userdb;
use userdb;
create table userinfo(
id int(10) not null auto_increment,
username varchar(20),
password varchar(20),
primary key(id));
2,DBConnection.jav ......
2010-04-26 22:36
import java.util.Scanner;
public class _calendar {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入年份:");
Scanner sc = new Scanner(System.in);
int year = sc.nextInt(); ......
昨天看张孝祥的java高级教程,他说一半面试java中英文简写意思的都是一些大公司,一个考察你真的用过这些东西,确实对这些东西有个基本了解,同时需要你具有一定的英语水平。所以暂时补补课,呵呵。
API (Application Programming Interface) 应用编程接口
JRE (Java Runtime Enviroment) Java 运行时环境
JDK (Java Dev ......
如果你去面试的时候,面试官考你,为什么要在java中的main方法前加public static void这些修饰符,你知道如何去回答吗?下面我为大家讲解一下吧!如果有什么缺漏的话!欢迎大家的指点!
首先,为什么要用public:
因为在运行程序时,jvm要调用main方法,但我们都应该知道jvm ......