zoukankan      html  css  js  c++  java
  • java基础 static关键字

    一旦用了static关键字
    那么这样的内容不再属于对象自己,
    而是属于类的,
    所以凡是本类的对象,都共享同一份
     
     1 /**
     2  * 如果一个成员变量使用类static关键字,那么这个变量不再属于对象自己,而是属于类的,多个对象共享同一份数据。
     3  */
     4 public class Demo01StaticField {
     5     public static void main(String[] args) {
     6         Student one = new Student("郭静",19);
     7         one.room = "101";
     8         System.out.println("姓名:" + one.getName() + ",年龄:" + one.getAge() + ",教室:" + one.room + ",id:" + one.getId());
     9         Student two = new Student("黄蓉", 16);
    10         System.out.println("姓名:" + two.getName() + ",年龄:" + two.getAge() + ",教室:" + two.room + ",id:" + two.getId());
    11 
    12     }
    13 }

    姓名:郭静,年龄:19,教室:101,id:1
    姓名:黄蓉,年龄:16,教室:101,id:2

     1 public class Student {
     2     private  int id; // 学号
     3     private String name; // 姓名
     4     private int age; // 年龄
     5     static String room; // 所在教室
     6     private static int idCounter = 0; // 学号计数器, 每当new了一个新对象当时候,计数器++
     7 
     8     public Student() {
     9         this.id = ++idCounter;
    10     }
    11 
    12     public int getId() {
    13         return id;
    14     }
    15 
    16     public Student(String name, int age) {
    17         this.name = name;
    18         this.age = age;
    19         this.id = ++idCounter;
    20     }
    21 
    22     public String getName() {
    23         return name;
    24     }
    25 
    26     public void setName(String name) {
    27         this.name = name;
    28     }
    29 
    30     public int getAge() {
    31         return age;
    32     }
    33 
    34     public void setAge(int age) {
    35         this.age = age;
    36     }
    37 }
     1 package cn.mantishell.day08.demo03;
     2 
     3 /**
     4  * 一旦使用static修饰成员方法,那么就成了静态方法,静态方法不属于对象,而是属于类。
     5  *
     6  * 如果没有static关键字,那么必须先创建对象,然后通过对象才能使用它
     7  * 如果有了static关键字,那么不需要创建对象,直接可以通过类名称来使用它
     8  *
     9  * 无论是成员变量还是成员方法,如果有来static,都推荐使用类名称进行调用
    10  * 静态变量:类名称.静态变量
    11  * 静态方法:类名称.静态方法()
    12  * 注意事项:
    13  * 1、静态不能直接访问非静态
    14  * 2、静态方法当中不能使用this
    15  */
    16 public class Demo02StaticMethod {
    17     public static void main(String[] args) {
    18         MyClass obj = new MyClass();//首先创建对象
    19         //然后才能使用没有static关键字都内容
    20         obj.method();
    21 
    22         //对于静态方法,可以通过对象名进行调用,也可以通过类名称调用
    23         obj.methodStatic();//不推荐
    24         MyClass.methodStatic();//推荐
    25 
    26         //对于本类中的静态方法,可以省略类名称
    27         myMethod();//等效:Demo02StaticMethod.myMethod();
    28 
    29     }
    30 
    31     public static void myMethod(){
    32         System.out.println("自己都方法");
    33     }
    34 }
     1 package cn.mantishell.day08.demo03;
     2 
     3 /**
     4  * 静态代码块的格式:
     5  * public class 类名称{
     6  *     static {
     7  *         //静态代码块
     8  *     }
     9  * }
    10  *
    11  * 特点:当第一次用到本类时,静态代码块执行唯一一次。
    12  *
    13  * 静态代码块当典型用法:
    14  * 用来一次性当堆静态成员变量进行赋值
    15  */
    16 public class Demo03StaticStudent {
    17     static {
    18         System.out.println("静态代码块执行!");
    19     }
    20 
    21     public Demo03StaticStudent(){
    22         System.out.println("构造方法执行!");
    23     }
    24 }
  • 相关阅读:
    20200910-3 命令行和控制台编程
    C语言1作业04
    C语言1博客作业03
    c语言1博客作业02
    2018寒假作业--3抓老鼠啊~亏了还是赚了?
    2018寒假作业2--币值转换
    2018寒假作业-1 打印沙漏
    记叙在人生路上对我影响最大的三位老师
    自我介绍
    抓老鼠啊~亏了还是赚了?编程总结
  • 原文地址:https://www.cnblogs.com/mantishell/p/11674283.html
Copyright © 2011-2022 走看看