java语言进阶之常用的API之Static

1、static修饰变量
package CommonClass;

public class StudentStaticx {
    private int id;
    private String name;
    private int age;
    public static String room;
    private static int idcounter=0;
    public StudentStaticx(){
        this.id=++idcounter;
    }
    public StudentStaticx(String name,int age){
        this.name=name;
        this.age=age;
        this.id=++idcounter;
    }
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public int getId() {
        return id;
    }

    public static int getIdcounter() {
        return idcounter;
    }

    public void setId(int id) {
        this.id = id;
    }

    public static void setIdcounter(int idcounter) {
        StudentStaticx.idcounter = idcounter;
    }
}

package api_demo;

import CommonClass.StudentStaticx;

/*
* 如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是输入所在的类
* 多个对象共享共一份数据
* */
public class DemoStaticFiled {
    public static void main(String[] args) {
        StudentStaticx one = new StudentStaticx("jinfl",17);
        System.out.println(one.getName()+"*"+one.getAge());
        StudentStaticx two = new StudentStaticx("haolh",16);
        System.out.println(two.getName()+"*"+two.getAge());
        one.room = "1705";
        System.out.println(one.getName()+"*"+one.getAge()+"**"+one.room+"*"+one.getId());
        System.out.println(two.getName()+"*"+two.getAge()+"**"+two.room+"*"+two.getId());
    }
}

"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=2615:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Jinfanglin\IdeaProjects\javaSe\out\production\javaSe api_demo.DemoStaticFiled
jinfl*17
haolh*16
jinfl*17**1705*1
haolh*16**1705*2

Process finished with exit code 0
2、static修饰方法
package CommonClass;

public class Myclass {
    public void method(){
        System.out.println("普通方法");
    }
    public static void methodStatic(){
        System.out.println("静态方法");
    }
}

package api_demo;

import CommonClass.Myclass;

/*
* 一旦使用static修饰成员方法,那么这就成为了静态方法,静态方法不属于对象,而是属于类
* 如果没有static关键字,必须创建对象后才能通过对象使用
* 如果有了static关键字,不需要创建类对象,就可以直接使用
* 对于本类当中的静态方法,可以省略类名称
* 注意事项:
* 1、静态不能直接访问非静态
* 原因:内存中先有的静态,再有的非静态。
* 2、静态方法当中不能写this,this代表当前对象。
*
* */
public class StaticMethod {
    public static void main(String[] args) {
        Myclass obj=new Myclass();
        obj.method();
        obj.methodStatic();// 正确不推荐,这种写法在被编译后,也会自动转为会类名称.方法名
        Myclass.methodStatic();//正确推荐
    }
}

"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=3758:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Jinfanglin\IdeaProjects\javaSe\out\production\javaSe api_demo.StaticMethod
普通方法
静态方法
静态方法

Process finished with exit code 0
3、静态代码块
package CommonClass;

public class Person {
    private String name;
    private int age;
    static{
        System.out.println("静态代码块");
    }
    public Person(){
    }
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

package api_demo;
import CommonClass.Person;
/*
 * 静态代码块格式:
 * public class leimign{
 *  static{
 *  // 静态代码块的内容
 * }
 * }
 * 特点:当第一次用到本类的时候,静态代码块执行唯一的一次
 * 静态内筒总是优先于非静态
 * */
public class staticCode {
    public static void main(String[] args) {
        Person one = new Person();
        Person two = new Person();
    }
}

"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=5407:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Jinfanglin\IdeaProjects\javaSe\out\production\javaSe api_demo.staticCode
静态代码块

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值