首页 > 编程语言 >牛客网刷题(4)(Java之(static)静态变量、静态方法、静态代码块、静态内部类)

牛客网刷题(4)(Java之(static)静态变量、静态方法、静态代码块、静态内部类)

时间:2024-10-31 16:19:02浏览次数:3  
标签:Java 访问 静态 代码 牛客 实例 static 静态方法

目录

一、static关键字。

(1)牛客网题目。

(2)总结。

<1>静态变量。(类变量)

1、特点。

2、补充与注意。

3、代码演示。

<2>静态方法

1、特点。

2、补充与注意。

3、代码演示。

<3>静态代码块。

1、特点。

2、补充与注意。

3、代码演示。

<4>静态内部类。

1、特点。

2、注意事项。

3、代码演示。


一、static关键字。

(1)牛客网题目。


题目:关于static说法不正确的是?


答案:D。


优秀评论

(2)总结。

  • 在Java中,static关键字是一个非常重要的修饰符。它有多种用途:主要用于修饰变量、方法、代码块和内部类。

<1>静态变量。(类变量)
1、特点。
  • 程序中使用static修饰属性,则该属性称为静态属性。(全局属性)
  • 静态变量属于类,而不是类的实例(对象)。
  • 静态变量在类加载时初始化,且只初始化一次。
  • 可以通过类名直接访问,也可以通过实例访问(但不推荐)。
  • 静态变量在内存中只有一份,无论创建多少个对象,静态变量都共享这一份内存。

2、补充与注意。
  • static不能修饰局部变量。否则编译器会报错!
  • 例如下面的代码是不合法的!


3、代码演示。
public class MyClass {  
    static int staticVar = 10;  
}  
  
// 访问方式  
MyClass.staticVar = 20; // 通过类名访问  
MyClass obj = new MyClass();  
obj.staticVar = 30;     // 通过实例访问(不推荐)

<2>静态方法
  • 通常如果想要使用类中的成员方法,就需要先将这个类实例化。
  • 实际开发中,开发人员可以通过类名直接调用某个需要的方法。(静态方法)只需要在成员方法前加上static关键字即可。

1、特点。
  • 静态方法属于类,而不是类的实例。
  • 静态方法不能直接访问实例变量或实例方法(除非通过对象引用)。
  • 静态方法可以通过类名直接调用,也可以通过实例调用(但不推荐)。
  • 静态方法中不能使用thissuper关键字

2、补充与注意。
  • 静态方法只能访问静态成员。
  • 非静态成员需要先创建对象才能访问,即随着对象的创建,非静态成员才会分配内存!而静态方法在被调用时可以不创建任何对象。
  • 静态方法不能直接访问实例成员,但可以通过对象引用访问。

3、代码演示。
public class MyClass {  
    static void staticMethod() {  
        System.out.println("This is a static method.");  
    }  
}  
  
// 调用方式  
MyClass.staticMethod(); // 通过类名调用  
MyClass obj = new MyClass();  
obj.staticMethod();     // 通过实例调用(不推荐)

<3>静态代码块。
  • 在Java类中,用static关键字修饰的代码块被称为静态代码块。

1、特点。

  • 当类被加载时,静态代码块就会执行。(由于类只加载一次,静态代码块在类加载时执行,所以只执行一次)
  • 常用于静态变量的复杂初始化
  • 多个静态代码块按照出现的顺序执行。

2、补充与注意。
  • 代码块的执行顺序:静态代码块——>构造代码块——>构造方法。
  • static修饰的代码块会随着class文件一同加载,属于优先级最高的代码块。

3、代码演示。
public class MyClass {  
    static int staticVar;  
  
    static {  
        staticVar = 20;  
        System.out.println("Static block executed.(静态代码块被执行!)");  
    }  
}

<4>静态内部类。
  • 静态内部类,就是使用static关键字修饰的成员内部类。
  • 静态内部类只能访问外部类的静态成员。

1、特点。
  • 静态内部类不依赖于外部类的实例。
  • 静态内部类可以直接通过外部类名访问,而不需要外部类的实例。
  • 静态内部类不能访问外部类的非静态成员。(变量和方法)

2、注意事项。
  • 通过外部类访问静态内部类成员时,因为程序已经提前在静态常量区为静态内部类分配好了内存。
  • 所以即使静态内部类没有加载,依然可以通过外部类直接创建一个静态内部类对象。
  • 静态内部类不依赖于外部类的实例,可以直接通过外部类名访问。
  • 创建静态内部类对象的语法如下。
外部类名.静态内部类名 变量名 = new 外部类名.静态内部类名 ();

3、代码演示。
  • 外部类:"Test02"。
  • 静态内部类:"Inner"。
/**
 * @Title: Test02
 * @Author HeYouLong
 * @Package PACKAGE_NAME
 * @Date 2024/10/31 上午11:46
 * @description: 测试类02
 */
public class Test02 {
    static int m =666;
    static class Inner{
        int n = 1;
        void showOuterClass(){
            System.out.println("访问到外部类的静态成员变量m="+m);
        }
    }

    public static void main(String[] args) {
        Test02.Inner inner = new Test02.Inner();
        inner.showOuterClass();
    }
}
  • 结果测试。

标签:Java,访问,静态,代码,牛客,实例,static,静态方法
From: https://blog.csdn.net/m0_74363339/article/details/143385683

相关文章

  • java+vue计算机毕设冬季供热有限公司网站建设【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着冬季气温的逐渐降低,供热服务成为了城市居民生活中不可或缺的一部分。冬季供热有限公司作为城市供热的主要提供者,承担着保障居民温暖过冬的重要职......
  • java+vue计算机毕设第二课堂学分认定系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在高等教育日益重视综合素质培养的今天,第二课堂作为第一课堂的有效补充,其在拓宽学生知识面、提升实践能力、增强综合素质等方面发挥着不可替代的作用......
  • Java - 26 代码块
    Java-26代码块[修饰符static]{代码};类似于方法,没有方法名,没有返回,没有参数不用通过对象或类显式调用,而是在加载类或创建对象时隐式调用普通代码块好处构造器的补充机制(减少代码重复冗余),可以做初始化操作/*不管调用哪个构造器创建对象,都会先调用代码块的内......
  • Java - 25 main方法
    Java-25main方法main方法是虚拟机调用的publicstaticvoidmain(String[]args)java虚拟机需要调用类的main方法,所以该方法的访问权限必须是publicjava虚拟机在执行main()方法时不必创建对象,所以是staticargs数组保存执行java命令时传递给运行的类的参数......
  • Java - 24 类变量和类方法
    Java-24类变量和类方法类变量(静态变量)非静态变量=普通变量=实例变量classMain{publicstaticvoidmain(String[]args){Childc1=newChild("wu");c1.join();c1.count++;Childc2=newChild("xin");c......
  • 总结 JavaScript 中8种数组常用的操作 API,array.push,pop,shift,unshift,slice,splice
    前言JavaScript中数组是一个重要的数据结构,它相比于字符串有更多的方法,在一些算法题中我们经常需要将字符串转化为数组,使用数组里面的API进行操作。本篇文章总结了JavaScript中有许多数组常用的操作API,以下是一些常见的操作及其示例:1.push():在数组末尾添加一个或多个元素,并......
  • webMagic静态页面的爬取
     一:javamaven依赖:<dependency><groupId>us.codecraft</groupId><artifactId>webmagic-core</artifactId><version>0.7.4</version></dependency><dependency><groupId>us.codecraft</grou......
  • java计算机毕业设计儿童思德教育网(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在现代社会,随着信息技术的飞速发展,互联网已经深入到人们生活的各个方面。儿童的成长和教育也受到了互联网的深刻影响。传统的儿童思德教育方式往......
  • Java基础
    JavaC类语言:底层都由C语言实现,语法和C语言一样程序语言的建立原始团队:创建具备基本功能、具有内核核心的新语言邀请:业界大牛进行功能拓展和完善推广吸引更多业界大牛进行语言的版本更新后,功能更为全面——有更完善的库实现,实现某些代码的代码会越来越少。功能丰富不代表性能......
  • 使用JavaScript实现:随机曲线之间进行平滑切换
    介绍今天,我运用拉格朗日插值法绘制了一条曲线。然而,我并未止步于静态展示,而是引入了一个定时器,每隔一段时间便对曲线上的点进行动态更新,从而赋予曲线生命般的动态变化。然而,在刷新过程中,我敏锐地察觉到曲线之间的切换显得过于突兀,缺乏流畅感(请见下图)。于是,一个大胆的想法......