静态变量成员变量

目录

一、构造方法

二、创建对象

三、static关键字

四、静态变量和成员变量

五、JDK帮助文档的使用

六、Math类的使用


一、构造方法

构造方法的作用是创建对象,给对象中的成员进行初始化

  1. 特点:方法名与类名相同;没有返回值类型(包括void);没有具体的返回值。

  1. 构造方法的重载

    和方法的重载类似,只要他们的参数列表(形参个数或形参类型)不一样,就可以定义同名构造方法。

    构造方法重载的注意事项:

    如果我们没有给出构造方法,那么系统会给出一个无参构造方法;

    如果我们给出了有参构造方法,系统则不会提供默认的无参构造方法。

    例如以下的构造方法是正确的

     public class Student {
         int age ;
         char sex ;
         String name ;
         Student(){        
         }
         Student(int age){  
         }
         Student(int age, char sex){      
         }
     }

二、创建对象

  1. 创建对象的步骤(Student s=new Student();示例)

 (1):加载Student.class文件进内存
 (2):在栈内存为s开辟空间
 (3):在堆内存为学生对象开辟空间
 (4):对学生对象的成员变量进行默认初始化
 (5):对学生对象的成员变量进行显示初始化
 (6):通过构造方法对学生对象的成员变量赋值
 (7):学生对象初始化完毕,把对象地址赋值给s变量
  1. 案例1

    定义一个长方形(Rectangle)类,定义求周长(length)和面积(area)的方法,然后定义一个测试类Test,进行测试。

    Rectangle类:

 public class Rectangle {
     private double len;
     private double width;
     public Rectangle(double len, double width) {
         this.len = len;
         this.width = width;
     }
     public double getArea() {
         return len * width;
     }
     public double getLength() {
         return (2 * len + 2 * width);
     }
     public double getLen() {
         return len;
     }
     public void setLen(int len) {
         this.len = len;
     }
     public double getWidth() {
         return width;
     }
     public void setWidth(double width) {
         this.width = width;
     }
 }

Test测试类:

 public class Test {
     public static void main(String[] args) {
         Rectangle rectangle = new Rectangle(20.4, 19.1);
         double area = rectangle.getArea();
         System.out.println(area);
         double length = rectangle.getLength();
         System.out.println(length);
     }
 }
  1. 案例2

    定义一个员工(Employee)类,自己分析出几个成员,然后给出成员变量,构造方法,getXxx()/setXxx()方法,以及一个显示所有成员信息的方法。并测试。

Employee类:

 public class Employee {
     private String name;
     private int age;
     private char sex;
     public void printInformation() {
         System.out.println("name:" + this.name);
         System.out.println("age:" + this.age);
         System.out.println("sex:" + this.sex);
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public int getAge() {
         return age;
     }
     public void setAge(int age) {
         this.age = age;
     }
 ​
     public char getSex() {
         return sex;
     }
     public void setSex(char sex) {
         this.sex = sex;
     }
     public Employee(String name, int age, char sex) {
         this.name = name;
         this.age = age;
         this.sex = sex;
     }
 }

Test测试类:

 public class Test3 {
     public static void main(String[] args) {
         Employee employee = new Employee("Alice",25,'女');
         employee.printInformation();
     }
 }

三、static关键字

  1. static关键字是什么?

我们可以从一个实例中来观察它的作用:

定义一个Person类,将nationality变量定义为static:

 public class Person {
     private String name;
     static String nationality;
     public Person(String name) {
         this.name = name;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
 }

写出测试类Test:

 public class Test {
     public static void main(String[] args) {
         Person person1 = new Person("Alice");
         Person person2 = new Person("Jack");
         Person person3 = new Person("lilei");
         person1.nationality="Amarican";
         System.out.println(person1.nationality);
         System.out.println(person2.nationality);
         System.out.println(person3.nationality);
         person3.nationality="Chinese";
         System.out.println(person1.nationality);
         System.out.println(person2.nationality);
         System.out.println(person3.nationality);
     }
 }

该测试类的运行结果如下:

由此可见,static关键字修饰的变量类似于一个公共的容器,也就是它被所有的对象共享。

  1. static关键字的特点

    1. 随着类的加载而加载,是先于对象存在的

    2. 被所有的对象共享

    3. 可以通过类名来调用

  2. static关键字的注意事项

    在静态的方法中是没有this关键字的;静态的方法只能访问静态的成员变量和静态的成员方法。

四、静态变量和成员变量

  1. 所属不同

    静态变量属于类,所以也称为类变量

    成员变量属于对象,所以也称为对象变量或者实例变量

  2. 内存中的位置不同

    静态变量存储于方法区的静态区,JDK1.7之后静态变量存储在堆内存中

    成员变量存储于堆内存

  3. 内存出现时间不同

    静态变量随着类的加载而加载,随着类的消失而消失

    成员变量随着对象的创建而存在,随着对象的消失而消失

  4. 调用不同

    静态变量可以通过类名来调用,也可以通过对象调用,推荐使用雷鸣调用

    成员变量只能通过对象名来调用

五、JDK帮助文档的使用

步骤:

  1. 找到JDK文档,打开

  1. 点击显示,找到索引,会出现输入框

  1. 查看要查找的类,例如Scanner

六、Math类的使用

  1. Math类

    Math类在java.lang下,所以我们在使用时不需要导包。

    Math类中的random()方法可以用来获取随机数,范围是大于等于0.0且小于1.0

  2. Math类的使用

    例如需要获取1-100之间的随机数,可以对Math.random()稍加嵌套,就可以完成。

    获取1-100随机数的代码如下:

     public class Test4 {
         public static void main(String[] args) {
             int x=0;
             for (int i = 0; i < 10; i++) {
                 System.out.print((int)(Math.random() * 100 + 1)+"\t");
             }
         }
     }

    取到的随机数:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值