Java入门 之 类和对象(三)

1. 类

  1.1 类的一般形式

  1.2 方法的重载(overloading)

2. 对象

  2.1 对象的创建和使用

  2.2 构造函数

3. 关键字 static

  3.1 静态变量

    3.1.1 普通的变量都是属于某个对象的,有一个对象就有一个这个数据的副本。静态变量则是整个类只有一个变量,它跟对象是没有关系的,跟它相关联的是类而不是对象。

package chap5;

public class StaticDemo1 {
	
	// 声明普通变量
	int commanint = 0;
	// 声明静态变量
	static int staticint = 0;
	
	StaticDemo1(int x){
		commanint = x;
	}
	
	public static void main(String[] args) {
		// 创建两个对象
		StaticDemo1 s1 = new StaticDemo1(1);
		StaticDemo1 s2 = new StaticDemo1(2);
		// 比较静态变量和普通变量
		System.out.println("s1.commanint = " + s1.commanint);
		System.out.println("s2.commanint = " + s2.commanint);
		System.out.println("s1.staticint = " + s1.staticint);
		System.out.println("s2.staticint = " + s2.staticint);
		
		// 改变s1普通变量的值,仅影响s1的普通变量
		s1.commanint++;
		System.out.println("
change commanint value:");
		System.out.println("s1.commanint = " + s1.commanint);
		System.out.println("s2.commanint = " + s2.commanint);
		System.out.println("s1.staticint = " + s1.staticint);
		System.out.println("s2.staticint = " + s2.staticint);
		
		// 通过s1改变静态变量的值,静态变量的值全部改变
		s1.staticint++;
		System.out.println("
change staticint by changing s1");
		System.out.println("s1.staticint = " + s1.staticint);
		System.out.println("s2.staticint = " + s2.staticint);
	}
}

    3.1.2 上例中通过一个对象改变静态变量的值,可以看到两个对象的值都改变了。实际上上例中访问静态变量的方法是不规范的,规范的方法是使用“类名.变量名”来访问。

package chap5;

public class Student 
{
	int id = 0;
	static int studentNum = 0;
	Student(int x)
	{
		id = x;
		studentNum ++;
	}
	public static void main(String args[])
	{
		Student s1 = new Student(1000);
		Student s2 = new Student(1001);
		Student s3 = new Student(1002);
		Student s4 = new Student(1003);
		System.out.println("s1 student number:" + s1.id);
		System.out.println("s2 student number:" + s2.id);
		System.out.println("s3 student number:" + s3.id);
		System.out.println("s4 student number:" + s4.id);
		// 使用“类名.变量名”来访问静态变量
		System.out.println("student count:" + Student.studentNum);
	}
}

  3.2 静态方法

    3.2.1 使用“类名.方法名”来访问静态方法。一般在工具类中定义一些静态方法来处理一些事情,这样可以方便地使用这些静态方法。在Java常用的数学工具类Math类中的方法大多数是静态的,可以很方便地访问。

package chap5;

public class StaticMethod {
	public static void main(String args[]){
		System.out.println("Print information by Static Method");
		MyMethod.printString("str type");
		MyMethod.printInt(5);
	}
}


class MyMethod{
	static void printString(String str){
		System.out.println(str);
	}
	static void printInt(int i){
		System.out.println(i);
	}
}

    3.2.2 使用静态方法时需要注意以下两点:

      - 静态方法不能直接访问非静态变量

      - 非静态方法可以直接访问静态变量

package chap5;

public class Demo1 {

	int x = 0;
	
	public static void main(String[] args) {
		// 静态方法中调用非静态变量,非法
		System.out.println(x);
	}
}

  3.3 静态常量

    3.3.1 实际应用中静态变量不常用,最常用的是静态常量,用来存储程序中不会改变的信息。静态常量的定义如下:

public static final int X = 123;

    3.3.2 该变量X在程序中是不可以改变的,不能通过赋值改变它的值。

    3.3.3 静态变量和静态常量的初始化是调用构造函数之前完成的。

package chap5;

public class Demo2 {
	
	static int x = 0;

	static {
		x = 100;
	}
	
	Demo2(){
		System.out.println(x);
	}
	
	public static void main(String[] args) {
		// 创建一个对象,创建对象之前会先执行static代码块,注意程序输出
		Demo2 d = new Demo2();
	}
}

4. 参数传递

  4.1 基本类型的参数传递

  4.2 对象类型的参数传递

5. 包

  5.1 包的使用

  5.2 导入包

  5.3 在Eclipse中使用包

6. 小结

原文地址:https://www.cnblogs.com/wnzhong/p/7899183.html