Домой Учебники по Java и J2EE Основы статических методов и переменных Java

Основы статических методов и переменных Java

1401
0

Есть ли у вас какие-либо вопросы ниже?

  • Не могли бы вы записать лучшие практики статических методов Java?
  • Что такое статические методы Java в интерфейсе?
  • У вас есть вопрос о статических методах Java против синглтона ?
  • Статические методы Java против производительности методов экземпляра
  • Статические методы и переменные Java
  • Статические методы Java против нестатических
  • Статические методы Java в абстрактном классе

Ключевое слово static может использоваться в 3 сценариях:

  • Статические переменные
  • Статические методы
  • Статические блоки кода.

статическая переменная («статическое» ключевое слово = переменные класса)

В Java переменные могут быть объявлены с помощью static Ключевое слово

Пример: static int y = 0;

Когда переменная объявляется с ключевым словом static это называется class variable , Все экземпляры имеют одну и ту же копию переменной. К переменной класса можно обращаться напрямую с классом, без необходимости создавать экземпляр .

Нет «статического» ключевого слова = переменные экземпляра

Без static keyword , это называется instance variable и каждый экземпляр класса имеет свою собственную копию переменной.

Пример: static int crunchify_variable_name ;

  • Статические переменные являются общими для всех экземпляров класса.
  • Одна из главных причин, по которой вам это нужно, когда вы хотите много управлять памятью .
  • Для всех статических переменных — для вас будет доступна только одна копия.
  • Вам абсолютно не нужен объект класса для доступа к статической переменной.
    • Просто используйте это напрямую. Вам не нужно object.StaticVariable

Что такое статический блок?

Статический блок , это блок утверждения внутри Java class это будет выполнено, когда класс сначала загружен в JVM .

Можете ли вы переопределить закрытый метод в Java?

  • Ну нет. Закрытые методы не могут быть переопределены, так как они недоступны для использования вне класса.

Почему мы не можем переопределить статические методы в Java?

  • Статические методы также не могут быть переопределены, поскольку они являются частью класса, а не объекта.

Можем ли мы получить доступ к нестатической переменной в статическом контексте?

  • Чтобы иметь доступ к не статическим переменным из ваших статических методов, они должны быть статическими переменными-членами.

Подробности о статическом методе

  • Как определить? Просто проверьте это сначала. Вам нужен объект класса для доступа к статическому методу? Если вам не нужен объект, тогда это статический метод.
  • Вам нужно использовать статическое ключевое слово, чтобы указать статический метод
  • Лучше использовать ключевое слово static, если этот метод не изменится во всем проекте во время выполнения .
  • Вы не можете переопределить статический метод.

Давайте посмотрим на примеры ниже:

Пример-1:

Вызов нестатического метода из статического метода main ()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
пакет crunchify. ком . учебные пособия ;
/ **
* @author Crunchify.com
*
* /
общественности учебный класс CrunchifyStaticMethodMain {
общественности статический недействительным главная ( Строка args [ ] ) {
Строка [ ] crunchifyObject знак равно новый Строка [ 3 ] ;
crunchifyObject знак равно новый Строка [ ] { Google , Facebook , Crunchify } ;
// создание экземпляра
CrunchifyStaticMethodMain объект знак равно новый CrunchifyStaticMethodMain ( ) ;
объект . crunchifyTestMethod ( crunchifyObject ) ;
}
/ *
* Проверьте это: давайте разберемся немного больше …
*
* Здесь метод crunchifyTestMethod определяется как
* public void crunchifyTestMethod (String [])
* так что это нестатично. Он не может быть вызван, если он не вызывается для экземпляра CrunchifyStaticMethodMain.
*
* Если вы объявили свой метод как
* public static void crunchifyTestMethod (int [])
* тогда вы можете вызвать: CrunchifyStaticMethodMain.crunchifyTestMethod (arr); в main, не создавая экземпляр для него.
* /
общественности недействительным crunchifyTestMethod ( String [ ] crunchifyObject ) {
за ( int я знак равно 0 ; я < crunchifyObject . длина ; я ++ )
Система. вне. println ( crunchifyObject [ i ] ) ;
}
}

Проверьте это объяснение в above code block , Мы должны создать экземпляр класса для доступа к нестатическому методу.

ЧИТАТЬ ТАКЖЕ:  Java: пример использования для производителя - обработка одновременного чтения / записи

Пример-2:

CrunchifyStaticDeclaration.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
пакет ком . crunchify. учебные пособия ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyStaticDeclaration {
// 1-й статический блок
статический {
Система. вне. println ( / nIm статический блок 1 .. ) ;
setTestString ( Это строка статического блока ) ;
setTestValue ( 2 ) ;
}
// 2-х статических блоков в том же классе
статический {
Система. вне. println ( / nIm — статический блок 2 .. ) ;
}
// пример статической переменной
частный статический ИНТ testValue ; // хранится приватно, чтобы контролировать его значение через сеттер
общественности ИНТ getTestValue ( ) {
вернуть testValue ;
}
// пример статического метода
общественности статический недействительным setTestValue ( int testValue ) {
если ( testValue > 0 )
CrunchifyStaticDeclaration . TestValue знак равно testValue ;
Система. вне. println ( метод setTestValue: + testValue ) ;
}
общественности статический строка testString ;
/ **
* @ return the testString
* /
общественности статический строка getTestString ( ) {
вернуть testString ;
}
/ **
* @param testString the testString для установки
* /
общественности статический недействительным setTestString ( String testString ) {
CrunchifyStaticDeclaration . СравниваемаяСтрока знак равно testString ;
Система. вне. println ( метод setTestString: + testString ) ;
}
// статический утилитарный метод
общественности статический ИНТ subValue ( int я , инт . , , JS ) {
ИНТ сумма знак равно я ;
за ( int Икс : JS )
сумма знак равно х ;
вернуть сумма ;
}
}

Теперь давайте сделаем тест:

CrunchifyStaticExample.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
пакет ком . crunchify. учебные пособия ;
/ **
* @author Crunchify.com
* /
общественности учебный класс CrunchifyStaticExample {
общественности статический недействительным main ( Строка [ ] аргументы ) {
CrunchifyStaticDeclaration . setTestValue ( 5 ) ;
// к закрытым статическим переменным можно обращаться по имени класса
CrunchifyStaticDeclaration . СравниваемаяСтрока знак равно / nНазначение testString для значения ;
CrunchifyStaticDeclaration csd знак равно новый CrunchifyStaticDeclaration ( ) ;
Система. вне. println ( csd . getTestString ( ) ) ;
// статические переменные класса и экземпляра совпадают
Система. вне. print ( / nCheck, если статические переменные класса и экземпляра совпадают: ) ;
Система. вне. println ( CrunchifyStaticDeclaration . testString == csd . testString ) ;
Система. вне. println ( Почему? Потому что: CrunchifyStaticDeclaration.testString == csd.testString ) ;
}
}

Выход:

Выход

1
2
3
4
5
6
7
8
9
10
11
Я статический блок 1 ..
setTestString метод: Это статический блок»ы строка
Метод setTestValue : 2
Я статический блок 2 ..
Метод setTestValue : 5
Назначение testString значение
Проверьте, если Учебный класс а также Статический экземпляр Переменные же:    правда
Почему ? Потому что : CrunchifyStaticDeclaration . СравниваемаяСтрока == csd . СравниваемаяСтрока
Основы статических методов и переменных Java

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь