首页 > 编程语言 >Java入门十二——static详解(含toString)

Java入门十二——static详解(含toString)

时间:2024-11-05 17:44:46浏览次数:3  
标签:Java 代码 System static println toString public out

上节课,我们只是微微提到了static,今天我们来具体讲讲static的用法


static

1.类名.静态成员变量(上篇博客Java入门十一有讲)

为了方便大家查看,我把链接放在这里Java入门11——关键字总结+static-CSDN博客

2.类名.静态成员方法

这里,我们首先创建两个类,分别是java12和demo1,然后调用demo1中名字为action的方法,我们发现可以直接用 类名.静态成员变量 来调用函数,不需要实例化对象

代码如下:

public class demo1 {
    public String name;
    public int age;

    public static void action(){
        System.out.println("animal action");
    }

    public demo1(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println(this.name + " " + this.age);
    }
}
public class java12 {
    public static void main(String[] args) {
        demo1.action();
    }
}

我们来看一下输出的结果~

3.静态代码块 》实例代码块 》构造方法

在这个地方,主要跟大家讲一下他们执行的先后顺序,首先我们要知道什么是代码块~

在 Java 中,代码块是用大括号 {} 括起来的一段代码,比如静态代码块为如下格式:

static {

}

实例代码块则直接是大括号,接下来我们做个演示,让大家理解它们执行的顺序~

public class demo2 {

    public demo2(){
        System.out.println("构造方法代码块");
    }

    {
        System.out.println("实例代码块");
    }

    static{
        System.out.println("静态代码块1");
    }
    
}
public class java12 {

    public static void main(String[] args) {
        demo2 test = new demo2();
        System.out.println(test);
    }


}

我们来看一下运行结果:

 这个时候我们发现,它们执行的顺序为静态代码块 》实例代码块 》构造方法

那么下面这个 demo2@6504e3b2 又是什么东西嘞~

原来,在我们调用test的时候,它会自动调用底层的代码toString,在toString中,如果为空则返回一个类似于地址的东东,那这个时候我们不想让它输出这么一堆,只想输出一个demo2怎么办呢?

很简单,我们只需要重写一下这个方法,也就是加入这么几行:

我们再来看看整体代码:

public class demo2 {

    public demo2(){
        System.out.println("构造方法代码块");
    }

    {
        System.out.println("实例代码块");
    }

    static{
        System.out.println("静态代码块1");
    }

    @Override
    public String toString() {
        return "demo2";
    }
}

这个时候我们再来看输出结果:

就完美打印了demo2~ 

4.静态内部类

接下来,我们再来讲讲静态内部类~

接下来我们要写一个demo3为外部类,innerDemo3为内部类的代码举例

代码如下:

public class demo3 {
    public int age;
    public String name = "You";
    public static String avtion = "code!!!";

    public static class innerDemo3{
        public void print(){
            System.out.println(avtion);   
        }
    }
}
public class java12 {

    public static void main(String[] args) {
        demo3.innerDemo3 test = new demo3.innerDemo3();
        test.print();
    }
}

我们来看一下打印结果~

code!!!就成功的打印出来了,这个innerDemo3类,甚至 直接用外部类直接访问,然后new一个就可以,但是注意,这里在外部类,只有被static修饰才能被内部类所用

如果不是静态成员变量就不可以,我们改下demo3里的代码,引用name看看会不会报错:

public class demo3 {
    public int age;
    public String name = "You";
    public static String avtion = "code!!!";

    public static class innerDemo3{
        public void print(){
            System.out.println(name);
        }
    }
}

运行结果如下:

 我们发现就报错了


好啦,今天的内容就到这里了,这就是 static 的全部内容~大家下来要多动手实操哦~ 

加油!!!

标签:Java,代码,System,static,println,toString,public,out
From: https://blog.csdn.net/2302_81032013/article/details/143505544

相关文章

  • 什么是java序列化?什么情况下需要序列化?
      序列化的定义Java序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态再读出来。序列化是一种用于处理对象流的机制,它将对象的内容转换成一种可以在网络之间传输的形式。反序列化则是将这种形式的对象恢复成原来的对象。实现方式序列化是通过实现​​Seri......
  • 什么是java序列化?什么情况下需要序列化?
      序列化的定义Java序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态再读出来。序列化是一种用于处理对象流的机制,它将对象的内容转换成一种可以在网络之间传输的形式。反序列化则是将这种形式的对象恢复成原来的对象。实现方式序列化是通过实现​​Seri......
  • 黑马程序员JavaWeb开发教程(后端部分---原理篇) ---笔记分享
    目录SpingBoot原理配置优先级Bean管理获取BeanBean作用域第三方BeanSpringBoot原理起步依赖自动配置自动配置原理原理分析要搞清楚SpringBoot的自动配置原理,要从SpringBoot启动类上使用的核心注解@SpringBootApplication开始分析:@SpringBootConfiguration注解上使......
  • Java第八天(实训学习整理资料(七)练习题)
    练习:1、输入一个字符串和一个数字,数字表示字节个数,然后按照指定的字节个数来截取这个字符串,要求不准出现半个字符的现象2、输入一个字符串,提取这个字符串中的数字并求和->sdf85dfghd72s6->85726->283、输入一个字符串,提取这个字符串中的数字并排序->sdf85dfghd72......
  • JavaOOP01——对象定义
    目录一、 面向对象概念二、面向对象程序设计步骤三、封装步骤 四、构造方法及重载 五、this()形成构造函数链 六、基本数据类型与包装类 七、Integer 类基本介绍一、 面向对象概念 面向对象编程(Object-OrientedProgramming,OOP)是一种编程范式,它使用“对象......
  • 关于idea连接数据库时报错:Cannot run program E:\IntelliJ_IDEA_2023.3.4\jbr\bin
    问题说明连接mysql数据库时在点击testconnection时弹出的问题:CannotrunprogramE:\IntelliJ_IDEA_2023.3.4\jbr\bin\javacreateprocesserror=5,拒绝访问查询多个网站都没有找到解决方案。解决方法点击左侧Drivers,找到MySQL右侧点击Advanced在最下方的VMhome......
  • rsyslog使用 imfile 模块合并两个主机上多个java的日志
    要使用Rsyslog的imfile模块来一对一合并两个主机上多个Java应用程序的日志,你需要在每个Java主机上配置Rsyslog以使用imfile模块监视Java日志文件的更改,并将这些更改发送到中央日志服务器。然后,在中央日志服务器上,你可以配置Rsyslog来接收这些日志并将它们合并到一个日志文件中。......
  • java计算机毕业设计基于springboot的游戏交易网络无忧(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着游戏产业的迅猛发展,游戏交易市场日益庞大。然而,当前的游戏交易环境面临着诸多挑战。一方面,游戏交易涉及到众多参与者,包括普通用户和卖家用户......
  • java计算机毕业设计基于java的学生宿舍管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着教育事业的不断发展,学校规模逐渐扩大,学生人数日益增多,学生宿舍管理工作变得愈发复杂和繁琐。传统的学生宿舍管理方式主要依赖手工记录和人工......
  • 【Java】常用类方法记录
    Arrays类java.util.Arrays返回类型方法描述static<T>List<T>asList(T…a)返回由指定数组支持的固定大小的列表。staticintbinarySearch(byte[]a,bytekey)使用二进制搜索算法在指定的字节数组中搜索指定的值。staticintbinarySearch(byte[]a,intfromIndex,in......