首页 > 编程语言 >Java——三个关键字 static 2

Java——三个关键字 static 2

时间:2024-08-22 11:54:31浏览次数:13  
标签:Java String Demo 关键字 static address 静态方法 public

1. 简介

在Java中,static表示“静态的”,它也是一种修饰符,可以修饰属性、方法、代码块和内部类。

2. 特性

static修饰符具有如下特性:

● 被static修饰的属性(成员变量)称为静态变量,也叫做类变量;

● 被static修饰的常量称为静态常量;

● 被static修饰的方法称为静态方法,也叫做类方法;

● 被static修饰的代码块叫做静态代码块;

● 被static修饰符的内部类,叫做静态内部类。

紧接上文对static做出小结

static关键字小结:

是什么?

static所修饰的代码属于类,所定义的变量存储在静态常量池中

为什么?

static之所以被设置,是为了方便类能够直接去使用自己的方法和变量

对象:对象是堆里面的一块内存空间

类中的代码以信息的形式存储在方法区当中

对于static方法,建议最好是用类去调用。对象是可以使用类的信息的,所以也可以用对象去调用

举例分析:

1.

A类:
public class A {
    public static String name = "admin";

    public static void run() {
        System.out.println("跑的很快");
    }

    public static void flay() {
        System.out.println("飞的很高");
    }

}
Test类:
public class Test {
    public static void main(String[] args) {
        A a=new A();
        a.run();
        a.flay();
        a.name="ss";
        
        A.name="xx";
        A.run();
        A.flay();
    }
}

2.

A类
public class A {

    public static String name="admin";
    public String address="保定";

    public String toString(){
        return  "A{"+
                "address='"+address+'\'' +
                "address='"+address+'\'' +
                '}'
                ;
    }

}
 Test类
public class Test {
    public static void main(String[] args) {
        A a1=new A();
        A a2=new A();
        a1.address="北京";
        a1.name="aaaaaaaaaa";
        a2.address="上海";
        a2.name="cccccccccc";
        System.out.println(a1.toString());
        System.out.println(a2.toString());
    }
}
运行结果:

 

方法

非静态方法可以调用静态方法,静态方法不可以调用非静态方法。

问题:

如何解决非静态方法不能被静态方法调用的问题?

1.将非静态方法改为静态方法

2.用创建对象的方式去调用

public class A {

    public static String name="admin";
    public String address="保定";
    
    public String toString(){
        return  "A{"+
                "address='"+address+'\'' +
                "name='"+name+'\'' +
                '}'
                ;
    }
    
    public static void aaa(){
        
    }
    public void bbb(){

    }
    public static void main(String[] args) {
        //将非静态的aaa方法修改成静态的
        aaa();
        //生成对象,用对象区调用
        A p=new A();
        p.bbb();
    }
    

}

为什么非静态方法可以调用静态方法?

非静态方法的使用必须要创建对象,而有对象一定是有类的

 

运行分析(难点):

代码

public class Demo {
    public Demo(String aa) {
        System.out.println("====" + aa);
    }

    static {
        System.out.println("11");
    }

    public static Demo demo = new Demo("+++");

    static {
        System.out.println("22");
    }
}
class Test{
    public static void main(String[] args){
        Demo demo = new Demo( "----");
    }
}

运行分析:

1.main方法在哪里我们就先去扫描那个类----》首先去扫描Test类,发现没有父类,也没有static修饰的代码,那么编译Test类,并且将main方法入栈

2.执行new Demo("----");在执行之前扫描Demo类,发现没有父类,所以编译Demo类,在编译的过程中static代码块按顺序优先执行 

3.首先输出的是11

4.执行 public static Demo demo = new Demo("+++");此时会涉及到调用Demo构造方法,所以输出 ===+++

5.输出 22

6.编译完毕,回到main方法当中继续执行new Demo("----");现在可以创建对象了!!也就是进行到了运行阶段

7.通过调佣构造器创建对象:===

运行结果:

标签:Java,String,Demo,关键字,static,address,静态方法,public
From: https://blog.csdn.net/immnature/article/details/141415965

相关文章

  • 每周JAVA学习汇总
    一、抽象类(AbstractClass)抽象类定义:抽象类是指包含抽象方法的类。抽象方法没有具体实现,只有方法声明,并以关键字abstract修饰。抽象类的特点:抽象类不能被实例化,只能被继承。抽象类可以包含具体实现的方法和抽象方法。抽象类可以包含成员变量,包括非final变量。抽象类......
  • java 读取pdf写成流报错PDF contains an encryption dictionary, please remove it wi
    java读取pdf写成流报错PDFcontainsanencryptiondictionary,pleaseremoveitwithsetAllSecurityToBeRemoved()orsetaprotectionpolicywithprotect()如何解决,如果需要引入依赖,需要哪些依赖 问题原因是PDF文件被加密了,需要使用PDFBox的相关方法来处理加密。 解......
  • 暑假Java自学进度总结07
    一.今日所学:1.无限循环无限循环:循环一直进行,不会停止3种形式:1>for(;......
  • java创建链表异常解决
    问题解决问题解释该错误表明,在试图创建非静态类实例时,没有正确引用外部类的实例。源代码如下packagevjudge;importjava.util.Scanner;publicclasstest{//节点类publicclassNode{intdata;Nodenext;Node(intdata){......
  • JavaScript day-09
    目录1.从ECMA到W3C1.1API的概念1.2WebAPI的概念2.什么是DOM?3.DOM节点4.DOM节点树5.节点之间的关系6.获取元素节点6.1根据id获取元素6.2根据标签名获取元素6.3根据class获取元素6.4获取特殊元素7.修改节点7.1改变HTML内容7.2改变CSS样......
  • 字符串值提取工具-10-java 执行表达式引擎
    值提取系列字符串值提取工具-01-概览字符串值提取工具-02-java调用js字符串值提取工具-03-java调用groovy字符串值提取工具-04-java调用java?Janino编译工具字符串值提取工具-05-java调用shell字符串值提取工具-06-java调用python字符串值提取工具-07-java调......
  • 【JavaScript】字符串01 - padStart() 和 padEnd()
    在JavaScript中,我们可以使用padStart()和padEnd()方法来完成字符串补全。下面给大家介绍一下这两个方法的使用。padStart()方法用于在当前字符串的前面填充指定的字符,直到字符串的长度达到指定的长度。padEnd()方法用于在当前字符串的后面填充指定的字符,直到字符串的长......
  • Java——三个关键字:static
    static关键字在Java中,static是一个关键字,用于修饰类的成员(变量、方法等)。静态成员属于类本身而不是类的实例,这意味着每个类都有唯一的静态变量副本,所有该类的对象共享这个副本,而不论创建了多少个对象。有static修饰的代码和没有static修饰的代码的区别:有static修饰的代码属......
  • Java毕设项目II基于Java新闻稿件管理系统
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在信息爆炸的时代,新闻稿件的高效管理与快......
  • 初识JavaScript
    1.什么是JavaScriptJavaScript(JS)是⼀种具有函数优先的轻量级,解释型或即时编译型的编程语⾔。虽然它是作为开发Web⻚⾯的脚本语⾔⽽出名的,但是它也被⽤到了很多⾮浏览器环境中,例如Node.js、ApacheCouchDB和AdobeAcrobat。JavaScript是⼀种基于原型编程、多范式的......