精华内容
下载资源
问答
  • 创建静态类
    千次阅读
    2021-03-10 01:05:07

    在java中有类似的静态类的类吗?

    静态类的定义是什么。静态类的所有方法都需要是静态的吗?

    是否需要相反的方式,如果一个类包含所有的静态方法,类应该是静态的?

    静态类有什么好处?

    回答:

    Java有静态嵌套类,但你说的是顶级的静态类。 Java没有办法使顶级类静态,但你可以模拟一个静态类,像这样:

    声明你的类final - 阻止类的继承,因为继承静态类没有意义

    使构造函数私有 - 阻止客户端代码实例化,因为实例化一个静态类没有意义

    使类的所有成员和函数static - 由于类不能实例化,没有实例方法可以被调用或实例成员变量访问

    注意编译器不会阻止你声明一个实例(非静态)成员。 只有当您尝试调用实例成员时,该问题才会显示

    根据上述建议的简单示例:

    public class TestMyStaticClass {

    public static void main(String []args){

    MyStaticClass.setMyStaticMember(5);

    System.out.println("Static value: " + MyStaticClass.getMyStaticMember());

    System.out.println("Value squared: " + MyStaticClass.squareMyStaticMember());

    // MyStaticClass x = new MyStaticClass(); // results in compile time error

    }

    }

    // A top-level Java class mimicking static class behavior

    public final class MyStaticClass {

    private MyStaticClass () { // private constructor

    myStaticMember = 1;

    }

    private static int myStaticMember;

    public static void setMyStaticMember(int val) {

    myStaticMember = val;

    }

    public static int getMyStaticMember() {

    return myStaticMember;

    }

    public static int squareMyStaticMember() {

    return myStaticMember * myStaticMember;

    }

    }

    静态类有什么好处? 静态类的的一个好处是一次定义,在工具库类中,实例化是没有意义的。 一个很好的例子是Math类,它包含一些数学常数,如PI和E,并且提供简单的数学计算。 在这种情况下实例化是不必要的。 参见Java的Math类。 注意它是final,它的所有成员都是静态的。 如果Java允许顶级类声明为静态,那么Math类当然是静态的。

    更多相关内容
  • Java 中的静态类

    千次阅读 2021-02-27 20:55:15
    Java 语言中可以定义一个静态类吗?答案是显而易见的:YES ,Java 语言存在静态类。我们都知道,Java 语言中存在 静态变量 、存在 静态方法 、也存在 静态块。其实,Java 语言还存在 静态类。Java 语言中的静态类...

    Java 语言中可以定义一个静态类吗?

    答案是显而易见的:YES ,Java 语言存在静态类。

    我们都知道,Java 语言中存在 静态变量 、存在 静态方法 、也存在 静态块。其实,Java 语言还存在 静态类。

    Java 语言中的静态类

    Java 语言允许我们在一个类中定义另一个类。类中的类我们称之为嵌套类。而包含嵌套类的类,我们则称之为 外部类。

    Java 语言中,我们不能定义顶级的外部静态类。但我们可以定义静态的内部嵌套类。

    也就是说,我们不能定义下面这中形式的静态类

    public static class JavaTester

    {

    }

    当我们可以在类中定义一个静态的嵌套类,比如

    public class JavaTester

    {

    static class NestedStaticClass

    {

    }

    }

    那么,你会不会有另一个疑问:静态和非静态的嵌套类有什么区别呢 ?

    对了,忘记说了,非静态嵌套类也被称为内部类

    静态和非静态的嵌套类的区别

    静态嵌套类和非静态嵌套类的区别好多条,我们陈述下几个主要的区别:

    静态嵌套类使用时并不需要引用外部类。但非静态嵌套类 (内部类) 则必须引用外部类。

    非静态嵌套类(内部类) 可以访问外部类的静态和非静态成员。但静态嵌套类只能访问到外部类的静态成员,不可以访问外部类的非静态成员(实例成员)。

    非静态嵌套类(内部类) 不能单独实例化。必须先实例化外部类,才能实例化内部类。内部类可以引用外部类的数据和方法。因此,我们并不需要将外部类的引用传递给内部类的构造方法。这种机制,使得内部类更加简单明了。

    范例

    我们写一个范例来演示下静态嵌套类和非静态嵌套类的区别

    public class JavaTester

    {

    private static String msg = "简单教程,简单编程";

    // 静态嵌套类

    public static class NestedStaticClass{

    // 静态嵌套类只能访问外部类的静态成员

    public void printMessage()

    {

    // 如果将 msg 变量设为静态的,则下面的语句会报错

    System.out.println("Message from nested static class: " + msg);

    }

    }

    // 非静态嵌套类,也称之为内部类

    public class InnerClass{

    // 嵌套类可以访问外部类的静态和非静态成员

    public void display(){

    System.out.println("Message from non-static nested class: "+ msg);

    }

    }

    // 如何创建静态嵌套类和内部类的实例?

    public static void main(String args[]){

    // 创建一个静态嵌套类的实例

    JavaTester.NestedStaticClass printer = new JavaTester.NestedStaticClass();

    // 调用静态嵌套类的成员方法

    printer.printMessage();

    // 为了创建一个内部类的实例,我们必须先创建一个外部类的实例

    // 然后再创建内部类的时候

    JavaTester outer = new JavaTester();

    JavaTester.InnerClass inner = outer.new InnerClass();

    // 调用内部类的非静态成员

    inner.display();

    // 我们可以将上面的两步合并为一步

    JavaTester.InnerClass innerObject = new JavaTester().new InnerClass();

    // 现在,我们可以调用内部类的方法

    innerObject.display();

    }

    }

    编译运行以上代码,输出结果如下

    [yufei@www.twle.cn java]$ javac JavaTester.java && java JavaTester

    Message from nested static class: 简单教程,简单编程

    Message from non-static nested class: 简单教程,简单编程

    Message from non-static nested class: 简单教程,简单编程

    展开全文
  • 它在实际开发中用的很少,它是在方法中定义的类,既然是方法里头的东西,那么它就不能定义静态类,静态变量或静态方法了,如图,编译器直接报错 它的申明不能用public和private、procted修饰,可以用final和...

    内部类解读


    一、内部类写法

    1.非静态内部类创建方式之一

    package test;
    public class TestClass  {
        public class Inner{
           void fun(){
                System.out.println(1);
            }
        }
    }
    package test;
    import test.TestClass.Inner;  // 请注意这里,一定一定要导入内部类文件,不然(1)会报错
    public class Implements {
        public static void main(String[] args) {
            TestClass test = new TestClass();
            Inner inner = test.new Inner();    (1)
            inner.fun();
        }
    }
    //结果
    1
    

    2.非静态内部类创建方式之二

    package test;
    
    public class Implements {
        public static void main(String[] args) {
            TestClass test = new TestClass();  (1)//(1)(2)可用  TestClass.Inner inner = new TestClass().new Inner();代替
            TestClass.Inner inner = test.new Inner();   (2)
            //注意这里Inner并不是静态类,用“外部类名.内部类 ” 是为了将它们看成一个整体
            inner.fun();
        }
    }
    //结果
    1
    

    3. 静态内部类创建方式

    package test;
    public class TestClass  {
        public static class Inner{
           void fun(){
                System.out.println(1);
            }
        }
    }
    public class Implements {
        public static void main(String[] args) {
            TestClass.Inner inner = new TestClass.Inner();
            inner.fun();
        }
    }
    //结果
    1
    

    区别

    一个类文件中,只能有一个公共的(public)外部类,但可以有多个(public、default、private)内部类,多个(default)外部类,private不能用来修饰外部类!

    如图·:当试图申明多个public外部类时保错,外部类也不能用private来修饰
    在这里插入图片描述


    (1)静态内部类只能访问外部类的静态方法,静态属性,静态方法,如图,当静态内部类试图访问非静态变量和非静态方法时编译器报错了:

    (2)而普通的内部类可以访问外部类的任何属性和方法(静态、非静态、私有、公共、默认)
    在这里插入图片描述


    (3)只有静态内部类,才能在类中申明静态方法,普通内部类申明静态方法会报错。

    (4)外部类不能直接访问所有内部类的成员和方法,但可以通过创建内部类对象的方式进行访问。

    (5)外部类和内部类拥有同名的变量和方法时,内部类有需要进行访问外部的同名变量或方法,可以通过外部类.this.方法名/变量名进行访问。
    在这里插入图片描述

    拓展

    除了静态内部了、普通内部类外,还有一个局部内部类,匿名内部类其实相当于它儿子,只是把类名这些都省略了。它在实际开发中用的很少,它是在方法中定义的类,既然是方法里头的东西,那么它就不能定义静态类,静态变量或静态方法了,如图,编译器直接报错
    在这里插入图片描述
    它的申明不能用public和private、procted修饰,可以用final和abstract修饰,另外,它也能正常访问外部类的变量,但在访问局部变量时网上有很多人说它只能访问final类型的局部变量,于是我做了如下实验:
    在这里插入图片描述
    结果
    在这里插入图片描述
    运行后,发现还是可以正常访问,而且我还用了jdk1.7和1.8做了测试,发现都可以,jdk1.7之前的因为没有就没测试了。
    在这里插入图片描述
    但是若果是访问方法的参数的话,jdk1.8不会报错,但1.7报错了,如图是jdk1.8的。
    在这里插入图片描述
    猜测是JVM问题,于是反编译了class文件:
    在这里插入图片描述
    从图中,可以看到,JVM为k加了final类型进行修饰但 j变量没有。所以,,,我也很方。。。。不知哪位道友可解?

    展开全文
  • 使用IDEA创建静态项目

    千次阅读 2020-02-12 16:11:58
    1.创建static web模块 2.项目名,保存位置 3.创建HTML文件,选择HTML5版本 4.点击右上角一排浏览器按钮运行,idea会使用内置的服务器在指定的浏览器上运行。端口号是随机指定的。 5.访问地址 ...

    1.创建static web模块

    在这里插入图片描述
    2.项目名,保存位置
    在这里插入图片描述
    3.创建HTML文件,选择HTML5版本
    在这里插入图片描述
    4.点击右上角一排浏览器按钮运行,idea会使用内置的服务器在指定的浏览器上运行。端口号是随机指定的。在这里插入图片描述
    5.访问地址
    在这里插入图片描述

    展开全文
  • JAVA中的静态类

    万次阅读 2019-07-01 15:04:19
    提到JAVA中的静态类,就要提到static这个修饰符,书中说明static作为 静态成员变量 和 成员函数(类中的方法) 的修饰符,注意两个字是“成员”。意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该...
  • kotlin实现静态类和静态方法

    千次阅读 2019-08-28 14:03:41
    kotlin中,声明静态类的方法很简单: /** * 类名前的class替换成object,为静态类,此类下的所有对象和函数,都是静态, * 所有方法都为静态方法,如工具类、常量池、 */ object LogUtilsCopy { var isDebug = ...
  • C#静态类

    千次阅读 2022-01-23 18:06:27
    用static修饰的类为静态类,同理还有静态成员和静态方法。 静态成员和静态方法被类的所有对象共享,且不能通过对象调用,必须直接通过类来调用。 class maleboss { public static string gender = "man"; ...
  • 静态方法中不能创建内部的实例

    千次阅读 2014-10-26 17:07:31
    如上图所示,Outter是一个普通的,Inner是Outter里面的内,属于内部。...所以,是不能在静态方法中创建内部的对象,防止该内部对象在外部对象创建前访问外部的成员变量。
  • 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,...
  • C#面向对象——静态类和静态成员

    千次阅读 2020-04-02 18:07:57
    使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。 static 修饰符可用于、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或以外的类型。如, static class ...
  • java - 以静态方式创建对象

    千次阅读 2021-03-22 16:47:01
    初始化操作的一般顺序是(在加载之后和首次使用之前):静态()代码块按顺序出现在代码中,对象代码块按顺序出现在代码中(初始化块和赋值)。构造函数当然我不会将构造函数和函数体引用为上面的代码块。我不知道怎么...
  • java中的静态类

    万次阅读 多人点赞 2019-06-02 06:08:45
    java中的静态类 在Java世界里,经常被提到静态这个概念,static作为静态成员变量和成员函数的修饰符,意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例...
  • 1、什么是静态类和非静态类 (1)、静态类 在类的建立上加上static关键词 比如我们在看C#视频中使用的File类,就是静态类。定义这个类时 public static class File (2)、非静态类静态类,就是在定义类的...
  •  静态类和非静态类重要的区别是在于静态类不能被实例化,也就是说不能使用 new 关键字创建静态类类型的变量。使用static关键字来声明静态类,这样的意义在于:首先,它防止程序员写代码来实例化该静态类;其次,它...
  • 一、C#静态和实例概念 静态概念:公共的、全局的、不属于个别实例的定义。 实例概念:new 出来的具体单个对象。随着作用域定义,使用,销毁(多数实例,通过垃圾回收机制自动销毁)。...二、C#静态类和实例类 .
  • 静态内部

    千次阅读 2021-07-25 13:04:24
    静态内部就是用saitic关键字修饰的内部类类,是与共享的,所以静态内部的对象不依赖于外部的对象,可直接创建。        我们先创建一个,在其中创建一个静态内部。 ...
  • Java中的静态类和非静态类

    千次阅读 2019-08-06 18:32:13
    一、静态类和非静态的定义 1、非静态 一、有名类 class Eat{//不可以直接在main方法中使用 必须创建对象 void sleep() { } } 二、匿名类 Example example =new Example() { }; 2、静态...
  • C++静态类

    千次阅读 2015-12-19 10:47:31
    不能使用 new 关键字创建静态类的实例。 使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。 2. 它们仅...
  • python静态方法和方法

    千次阅读 2020-12-04 23:03:35
    变量来访问属性)调用方法:可以通过/实例来调用本质:只是里面的一个普通的函数,它使得面向对象程序中的函数归属于,易于代码的管理用法:与相关,但不依赖或改变与实例创建不同的的实例,把相关...
  • 1.在非静态内部条件下不能逐步创建对象,要先创建一个外部对象,再创建内部对象。 个人理解:因为还没加载即还没分配内存,内部所有非静态成员都没分配内存,不可能直接创建一个非静态内部对象。 2.在静态...
  • C# 反射 静态类 静态方法 static

    千次阅读 2021-11-25 15:15:30
    C# 通过反射调用实例类或静态类的方法 一、创建类 //反射对象类 //ruleAssembly为dell文件、ruleNmspaceName :命名空间;ruleClsName:类名 Type ruleType = Assembly.Load(ruleAssembly).GetType(ruleNmspaceName ...
  • 静态类加载过程、对象的创建过程

    千次阅读 2016-12-16 18:06:15
    加载的过程: 1、当在程序中要使用某个的时候,JVM 会先在当前的方法区中找有没有这个class文件信息,如果没有这时JVM会先去加载这个class文件 2、加载的时候,如果配置了classpath环境变量,那么JVM会到...
  • C# 静态类(static class)

    万次阅读 多人点赞 2018-05-24 10:21:42
    静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类...
  • 静态类(static)

    千次阅读 2020-01-07 18:24:38
    什么是静态 static静态的,不变的,在某个...只能包含静态成员(静态方法或静态变量),非静态成员是不能使用的,而非静态类可以包含静态的方法、字段、属性或事件,且无论对这个非静态类创建多少个实例,它的静态成...
  • php 静态类与非静态类

    千次阅读 2017-10-25 01:37:45
    静态类访问方法: 1、,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号:: Car::getName();  2、外部访问公共属性或方法: $car->speed;$car->speedUp(); 3、内部访问公共属性和方法: $...
  • java静态类_Java静态类

    千次阅读 2020-07-15 06:14:52
    java静态类Today we will look into java static class. It’s a good interview question to test your knowledge about nested classes in java. 今天,我们将研究java静态类。 测试您对Java嵌套类的了解是一个很...
  • JAVA 静态方法和成员方法、静态方法的调用

    千次阅读 多人点赞 2020-02-03 17:42:12
    静态方法与成员方法 定义方法的时候,有static和没有static有什么区别? 1.有static的方法,叫静态方法。 2.没有static的方法,叫成员方法(实例方法)。 定义静态方法的格式: public static 返回值类型 方法名称...
  • 这里的静态,指以static关键字修饰的,包括,方法,块,字段。非静态,指没有用static 修饰的。静态有一些特点:1.全局唯一,任何一次的修改都是全局性的影响2.只加载一次,优先于非静态3.使用方式上不依赖于实例...
  • Java的静态类详解

    万次阅读 2019-05-06 20:43:11
    在Java世界里,经常被提到静态这个...最近一个项目里频繁用到static修饰的内部类,再读了一下《Effective Java》才明白为什么会用static来修饰一个内部类也就是本文的中心——静态类。 如果一个类要被声明为stati...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,192,946
精华内容 477,178
关键字:

创建静态类

友情链接: SerialH263.zip