Java入门 之 类和对象(三) - 关键字 static
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("\nchange 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("\nchange 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. 小结
posted on 2017-11-26 15:51 你的踏板车要滑向哪里 阅读(173) 评论(0) 收藏 举报
浙公网安备 33010602011771号