当前位置: 首页 > 面试题库 >

在Java中如何以及在哪里使用Static修饰符?

寇桐
2023-03-14
问题内容

我们应该如何以及在何处使用静态修饰符:

1.领域和
2.方法?

对于例如在java.lang.Math类中,字段的方法,如ABS(),ATAN(),COS()等是静态的,即它们可以作为被访问:Math.abs()

但是,为什么这是个好习惯呢?

说,我不是保持静态,而是创建类的对象并访问它,无论如何,我都会得到警告,您正在尝试以非静态方式访问静态方法(如所指出的那样)
@duffymo编写,而不是Math类)。

更新1:

因此,实用程序方法应该是静态的,即其工作仅取决于方法参数。因此,例如,updateString(String inputQuery, String highlightDoc)在该问题中,该方法应该可以是静态方法吗?


问题答案:

您可以认为“静态”方法或字段就像在类定义之外声明的那样。换一种说法

  1. 静态字段/方法只有一个“副本”。
  2. 静态字段/方法不能访问非静态字段/方法。

在某些情况下,您需要使某些内容静态化。

字段的典型示例是创建一个静态整数字段,该字段对类的所有实例(对象)进行计数。另外,例如,单例对象通常也使用静态修饰符。

同样,静态方法可用于执行“实用程序”作业,所有必需的依赖项将作为参数传递给该方法,而您不能在静态方法内部引用“ this”关键字。

在C#中,您还可以具有静态类,您可能会猜到它们仅包含静态成员:

public static class MyContainer
{
    private static int _myStatic;

    public static void PrintMe(string someString)
    {
        Console.Out.WriteLine(someString);
        _myStatic++;
    }

    public static int PrintedInstances()
    {
        return _myStatic;
    }
}


 类似资料:
  • 问题内容: 我正在阅读一些有关Java中异常处理的内容,以便能够编写更好的代码。好吧,我承认,我有罪。我使用了太多try-catch {}块,在捕获中使用了它,甚至没有使用适当的记录器(实际上是和被重定向到,因此生成了日志)。但是,经过几个小时的阅读,我发现自己在一个陌生的地方:未知。如果异常被设计为传递有关异常流状态的信息,那么人们如何知道WHERE是使用该信息执行操作的适当级别? 例如,当发生

  • 问题内容: 我是Angular 4的新手,所以谁能解释在Angular 4中的使用方式和位置? 实际上,我想从父组件覆盖子组件的某些CSS属性。此外,它在IE11上受支持吗? 问题答案: 通常, 可使用组合器将样式强制降低到 。这个选择器有一个别名>>>,现在还有另一个叫做:: ng-deep的别名。 由于 已弃用,建议使用 例如: 和 它将应用于子组件

  • 问题内容: 在Java中,有一种做法是声明每个变量(局部变量或类),如果参数确实存在,则声明参数final。 尽管这使代码更加冗长,但是这有助于简化代码的读取/抓取,并且由于意图被明确标记,因此还可以防止错误。 您对此有何想法,您会怎么做? 问题答案: 我认为这都与良好的编码风格有关。当然,你可以编写出色而健壮的程序,而无需在任何地方使用很多修饰符,但是当你考虑一下时… 将所有不应该改变的东西加进

  • 问题内容: 我们可以使用注释的主要领域是什么?该功能是否可以替代基于XML的配置? 问题答案: 注释是元元对象,可用于描述其他元对象。元对象是类,字段和方法。向一个对象询问其元对象(例如)称为自省。内省可以走得更远,我们可以问一个元对象其注释是什么(例如)。内省和注释属于所谓的反射和元编程。 注释需要以一种或另一种方式解释才有用。注释可以在开发时由IDE或编译器解释,也可以在运行时由框架解释。 注

  • 问题内容: 我一直在尝试失败,在Dapper中使用with with子句已经有一段时间了。 在文档中,它确实说支持在a中使用,但我什至无法使它正常工作。 我不断收到的错误消息是Sql语法错误。 我整理了一些测试代码,希望它们能证明我正在尝试实现的目标。 问题答案: 为了执行此处需要的操作,dapper需要即时更改SQL-因此需要 真正 确保它在做正确的事情。常规有效的SQL语法包括括号: 为了消除

  • 问题内容: 我在桌面应用程序中使用spring + hibernate。 我正在尝试使用分层实现来构建它,所以我有: GUI层–call- >服务层–call-> DAO层 一个更好地说明我的情况的小例子: 问题是:谁抛出异常并由谁处理? 我认为DAO必须抛出第一个异常,然后服务层将其抛出,最后GUI层处理该异常,这样我才能向用户显示消息,这很好吗?有没有一种方法可以使用spring构建一些Exc