一、main方法解析
public static void main(String[]args) {
}
程序一开始执行是从main方法开始的。
Public:为了让虚拟机能调用main方法。
Static:不希望加载main方法的时候产生对象,所以用static方便虚拟机直接调用main方法。
Void:不需要返回类型。
String[] args:有时候运行程序的时候要传入一些参数,所以出现String数组。
二、访问修饰符
public(公共的):被public修饰的属性和方法能够被所有类访问。
Protected(受保护的):被protected修饰的属性和方法可以在类内部、相同包以及该类的子类所访问(可以位于不同的包下,继承)。
Private(私有的):被privatec修饰的属性和方法只能在该类内部使用。
默认的(不加任何访问修饰符):在类内部以及相同包下面的类所访问。
三、局部变量与成员变量
1、局部变量必须初始化,成员变量可以不用初始化。局部变量调用后会自动消失(被垃圾回收机制回收),而成员变量定义了不会。例如:我们在方法里定义一个局部变量,当方法调用完后局部变量自动消失,当再次调用方法时才出现。看下面的一个实例:
package cn.com.test1;
public class test {
int a = 0;
a为成员变量,
public void result() {
for (int j = 0; j < 10; j++) {
System.out.println(a++);
}
}
public void result2() {
for (int i = 0; i < 10; i++) {
int b = 0;//局部变量,当调用完后自动消失,再次调用时才出现,所以输出结果总是0。
System.out.println(b++);
}
}
public static void main(String[] args) {
test t = new test();
t.result();
System.out.println("-------------");
t.result2();
}
}
输出结果:a为:0到9
b为:9个0
四、类与对象
瓶子是类,而这个瓶子,那个有标签的瓶子是对象
符合一类事物的特征的具体的某个东西是对象。
每个对象都有自己的属性,我们可以根据属性来区分对象,而方法不可以。例如我们区分一只猫可以根据猫的颜色来区分,而不能根据它能不能捉老鼠来区分。
对象(类)之间的关系:
关联关系:
继承关系:xx是一种xx
聚合关系:xx是xx的一部分
实现关系:
多态:
等等
首先定义类才有对象
问题求解方法:
第一步考虑有哪些类和对象
第二步考虑类和对象有哪些属性
第三步考虑类或对象间的关系以及它们的方法
为什么使用面向对象?
可重用性、可拓展性、维护和替换方便。。。。
五、导入与包
1、 包:用于将完成不同功能的类分门别类,放在不同的目录(包)下,包的命名规则为:将公司域名反转作为包名,www.baidu.com,则包名可以表示为:com.baidu,对于包名,每个字母都需要小写。如果定义类的时候没有使用package,那么java就认为我们所定义的类位于默认的包里面。
2、 编译带有package声明的java源文件有两种方式:
a) 直接编译,然后根据类中所定义的包名,一一手工建立目录结构,最后将生成的class文件放在该目录结构中(很少使用,比较麻烦)
b) 使用编译参数—d,方式为javac –d.源文件.Java,这样在编译后,编译器会自动帮我们建立好包所对应的目录结构。
3、 有两个包名,分别为:aa.bb.cc和aa.bb.cc.dd,那么我们称后者为前者的子包。
4、 导入(import):将使用package分离的各个类导入回来,让编译器能够找到所需要的类。语法:import javax.swing.*
5、 Importaa.bb.*表示导入aa.bb下面所有的类,并不会导入aa.bb.cc下面的类。
6、 关于package、import、class的顺序问题:
A、 首先需要定义包,可选
B、 接下来是使用import进行导入,可选
C、 然后才是class或者interface的定义
7、如果两个类在同一个包下面,则不需要导入,直接使用。