面向对象基础2

main方法

java中执行一个java程序的方式:先将.java文件转换为.class文件,然后调用main方法。

那么,什么是main方法呢?

首先,java需要加载类之后就调用方法,不需要类的实例化,所以方法必须修饰为static

main只是用于调用,所以不需要返回值,所以需要void

main方法需要虚拟机访问,因此必须为public(由虚拟机的特殊性决定的)

因为java规定main方法必须能够传入参数,以便有时在执行时传入参数,所以参数处必须为String数组形式:String[]args

因此,遵循以上原则,main方法需要这样写:

publicstatic void main(String[] args){  }

java的类加载器

一个main方法具体是怎么由java虚拟机执行的呢?

编译器将.java文件编译为.class文件

然后虚拟机登场了,将class文件解析,并且用java.lang.ClassLoader 将其转换为一个Class的对象,然后调用newInstance()方法,就可以把类实例化了,然后再调用这个类的一个名字为main的方法,main方法就可以运行了。

但是,需要注意的是,假如虚拟机发现已经通过ClassLoader加载了一个类之后,就不会再次加载了,但是会再次调用newInstance()方法。这也就是为什么类中的static属性只加载一次的原因。简单来说,main方法的执行就是通过反射机制实现的。

简单的类加载过程模拟:(模拟,并非真正的实现方式)

Classclass1=Class.forName("test.Test1");

Objectobj=class1.newInstance();

Method method1=class1.getMethod("main",new Class[] {String[].class });

method1.invoke(class1,null);//这里null应该为执行class文件时传入的参数

标识符

标识符是什么东西呢?就是咱们自己起的一些名字,比如给类(Class)起的名字,给方法起的名字等等。

标识符有一些规范:

1.肯定的,不能是java的关键字,比如我想给方法 起名为void,然后返回值为int,那么方法写成这样了:

int void(){  }

那么,谁能看懂这个到底是返回什么的吗?而且这样很混乱,不是吗?

2.不能是特殊符号和标点符号,简单来说,只能是数字,字母,下划线。当然中文也可以。原因嘛,规定了。

3.不能是数字开头,因为假如允许数字开头,我可以这样写一个标识符:1。那么请问,我怎么区分这是数字还是标识符呢?

常见标识符规范

包名:全部小写(如:multiplicationtable)
类名:每个单词的首字母大写(如:MultiplicationTable)
变量名:第一个字母小写,以后每个单词的首字母大写(如:multiplicationTable)
常量:全部使用大写字母,单词间用下划线隔开(如:MULTIPLICATION_TABLE)

控制语句

控制语句分为条件型和循环型。

条件型:用于对数据的过滤,只对符合要求的部分进行操作。

循环型:对于一些有规律的变化的程序段,可以用循环来解决,但是有时规律还是挺难找的。

至于swtich,因为只能判断int或者低于int的数字,因此作用范围太小,现实中一般不用,因为if,else足可以替代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值