详解第一个Java程序 Holle Word!

本文详细剖析了Java的第一个程序"Hello World",包括Holleword类、public static、void关键字、String[] args参数以及System.out.println()的用法。解释了静态方法的工作原理、优势与弊端,并介绍了Java程序执行的底层知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

详解第一个Java程序 Holle Word!

该篇仅做学习使用,如有错误请诸位大神指正!

前言

相信大家在学习编程的过程中我们第一个学习的程序就是Holle Word!但是这个看似简单的程序实则蕴含很多东西,今天我们来详细分析一下。

public class Holleword {

	public static void main(String[] args) {
		System.out.println("Hello World!"); 

	}
}

Holleword类

public class Holleword {

	/*public static void main(String[] args) {
		System.out.println("Hello World!"); 

	}*/
}
  • Holleword类中有main()方法,说明这是一个Java应用程序,通过JVM直接启动运行的程序。
  • 既然是类,Java允许类不加public关键字约束,当然类的定义只能限制为public或者无限制关键字(默认的)

public static

//public class Holleword {

	public static //void main(String[] args) {
		//System.out.println("Hello World!"); 

	}
}
  • 若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法。静态方法只能调用静态变量,实例方法可以调用非静态变量,也可以调用静态变量。
  • 静态方法为类所有,可以通过对象来使用,也可以通过类来使用。但一般提倡通过类名来使用,因为静态方法只要定义了类,不必建立类的实例就可使用,而非静态方法只能被对象来使用。

为什么静态方法不用实例化
如果想要理解静态方法为什么不用实例化就要了解jvm的底层知识.

  1. jvm的实现是基于栈结构的.
  2. 类在加载时把类信息加载到Java的内存中的方法区(这是共享的,有唯一性),new对象时,会在堆区里生成新的类实例,每new一个就生成一个新的实例(这是私有的)
  3. 普通类的方法都是在执行到方法时才会在内存中开一个新的空间,在这个空间里创建新的栈再根据椎中的实例来储存方法体内的局部变量和执行方法操作.在方法结束返回时,丢弃这个栈空间.它是不能共享的,一用完就没了.再需要的话就再生成再运行再丢弃
  4. 静态方法是在加载类时就已经被加载方法区里,它是可以共享的,每次要用它只要调用即可,不同在栈区里去生成

静态方法的优势与弊端

  1. 在一些系统中使用非常频繁的方法都使用静态方法可以提高系统性能。
  2. 为了方便,不用实例化,但这样程序编译运行时就占用了系统资源
  3. 静态的属性和方法在程序启动的时候,就全部装入内存的,而不管这些方法、属性以后有没有用到。即使是没有人再访问程序,这部分内存仍然不会释放。还有就是,所有访问者看到的静态属性的数据几乎都是一样的,比如A用户设置了UserName这个属性,B用户访问的时候,得到的UserName仍然是A用户设置的那个。这种特性,如果用在固定数据中,那不会有太大问题,比如连接字符串之类的。

void

//public class Holleword {

	/*public static */void /*main(String[] args) {
		System.out.println("Hello World!"); 

	}
}

String[] args

//public class Holleword {

	/*public staticvoid main( */String[] args/*) {
		System.out.println("Hello World!"); 

	}
}
  • main方法中还有一个输入参数,类型为String[],这个也是java的规范,main()方法中必须有一个入参,类细必须String[] ,至于字符串数组的名字,这个是可以自己设定的,根据习惯,这个字符串数组的名字一般和sun java规范范例中main参数名保持一致,取名为args。 因此,main()方法定义必须是:“public static void main(String 字符串数组参数名[]) ”。

System.out.println(“Hello World!”);

  • 首先System是java.long 包的类(java.long 包在一开始创建.class文件时就已经加载完,所以不用手动加入)而out就是System里面的一个静态数据成员,而且这个成员是java.io.PrintStream类的引用。
  • 被关键字static修饰的成员可以直接通过"类名.成员名"来引用,而无需创建类的实例。所以System.out是调用了System类的静态数据成员out。
  • println()就是java.io.PrintStream类里的一个方法,作用是向控制台输出信息,因为System.out是java.io.PrintStream类的实例的引用,所以可以通过System.out.println(); 来调用此方法。
  • 如果想了解详细的底层System.out.println(“Hello World!”);可以查看初窥JAVA底层————System.out.println(“Hello World”);——Engine#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值