Java类和对象的特征

静态变量、静态方法

static关键字的含义

 关键字:static的含义的是:静态的。
 static可以修饰类中的属性和方法,被static修饰的属性我们称之为变量,被static修饰的方法我们称之为类方法。
 面向对象的重要特征之一是封装,即各个对象只能访问自己的成员变量和成员方法,若要使某些变量和方法被该类的所有对象共享,则必须定义为静态变量和静态方法。

静态变量

 类的变量分为静态变量和实例变量2种,static修饰的是静态变量,没有使用static修饰的是实例变量。

静态变量和实例变量二者的区别:

  1. 静态变量在内存中只有一个内存空间,在加载类的过程中完成静态变量的内存分配,可以直接通过类名访问。
  2. 每创建一个新的实例对象,就会为实例变量分配不同的内存,各个对象访问自己的实例变量。

注意:
 无论创建了一个类的多个对象,静态变量只初始化一次,所有的实例都可以访问此静态变量,而且可以通过类名直接访问。

示例:

/**
 * 使用实例变量实现共同的售票
 * */
public class Demo_one {
    public static void main(String[] args) {
          Saler saler = new Saler();
          saler.name="张三";
          saler.sale();
          Saler saler1 = new Saler();
          saler1.name="李四";
          saler1.sale();
          //开始具体卖票
          saler.sale();
          saler1.sale();
          saler.sale();
          saler1.sale();
          saler.sale();
          saler1.sale();
          saler.sale();
    }

}
class Saler{
    public String name;
    public int tickets = 5;
    //定义模拟卖票方法
    public void sale(){
        if(tickets > 0){
            System.out.println(name+"售票一张,当前剩余:"+ --tickets);
        }
    }
}

结果如下图:
在这里插入图片描述可以发现,二个售票员都在单独的卖票,每个人都卖5份,而实际中是二个人共同卖5份。所以如果同一个类的多个对象可以共享这个变量需要设置成静态的。

示例:

class Saler{
    public String name;
    //只需要在需要共享的变量前加static关键字就可以。
    public static int tickets = 5;

    //定义模拟卖票方法
    public void sale(){
        if(tickets > 0){
            System.out.println(name+"售票一张,当前剩余:"+ --tickets);
        }
    }
}

结果如下图
在这里插入图片描述这样就可以正常的卖票了。

静态方法

 static修饰的方法叫做静态方法,可以直接使用“类名.方法()”来调用。

语法:

  [权限修饰符] static 返回值类型 方法名称(类型 参数1,类型 参数2){
     方法体;
  }

注意:
 static修饰方法时候,该关键字static处于访问权限修饰符的后面,返回值类型的前面。静态方法中只能调用一个类的静态成员(静态属性和静态方法),不能直接调用同一个类的实例成员。

示例:

/**
 * 使用静态方法,完成售票
 * */
public class Demo_one {
    public static void main(String[] args) {
        Saler.sale();
        Saler.sale();
        Saler.sale();
        Saler.sale();
        Saler.sale();
        Saler.sale();
        Saler.sale();
    }
}
class Saler{
    public static int tickets = 5;
    //定义模拟卖票方法
    public static void sale(){
        if(tickets > 0){
            System.out.println("售票一张,当前剩余:"+ --tickets);
        }
    }
}

final修饰变量

 修饰变量的时候,表示该变量的值不可改变,成为常量。

语法:

final 数据类型 变量名 =;

final的特征

  1. final修饰符可以修饰静态变量、实例变量和局部变量,分别表示静态常量、实例常量和局部常量。
  2. final类型的变量必须显示地初始化,否则将导致编译错误。
  3. final变量只能被赋值一次。
  4. 在定义final常量时,一般以大写字母命名,且多个单词之间使用下划线隔开。
  5. 常量只能赋值一次。

示例:

/**
 * 设置一个静态常量,一个普通常量还有一个局部常量
 * */
public class Demo_one {
    public static void main(String[] args) {
       System.out.println("=================");
       Saler saler = new Saler();
       saler.methodd();
        Saler saler1 = new Saler();
        saler1.methodd();
        Saler saler2 = new Saler();
        saler2.methodd();
    }
}
class Saler{
    final static int age = 21;
    final  Double num = Math.random();
    public void methodd(){
        final int total;
        total = 2;
        System.out.println("局部常量total的值是"+total);
        System.out.println("静态常量age的值是"+age);
        System.out.println("常量num的值是"+num);
        System.out.println("-----------------");
    }
}

 定义final变量的时候,必须同时为其赋初始值。

什么是包

 Java中的类似于Windows系统的文件夹。文件夹的作用是可以区分不同目录下的同名文件。

包的命名

 包的命名通常是域名反转,全部名称使用小写。

JavaSE类库中的常用包

 JDK提供了一些Java的常用包,主要包括3种:

  1. Java.lang包:包含线程类(Thread)、异常类(Exception)、系统类(System)、整数类(Integer)和字符串类(String)等。通常在编写Java程序时使用。Java.lang包是由Java虚拟机自动引入的包,即使程序没有“import java.*”语句来引入此包,它也会被自动引入。
  2. Java.io包:输入/输出包,包含各种输入流类和输出流类。例如:文件输入流类(FileInputStream类)、文件输出流类(FileOutputStream类)等。
  3. Java.util包:提供日期类(Date)、集合类(Collection)等实用类。
    除了以上的3种,JDK中还有很多其他的包,例如:用于数据库编程的Java.sql包、用于网络程序的Java。rmi包以及用于编写声音程序的Javax.sound包。
发布了22 篇原创文章 · 获赞 2 · 访问量 1126

猜你喜欢

转载自blog.csdn.net/javaasd/article/details/105670464