artace.ru - творческий сектор

Название: Java для серверостроителей (L2J) или Учебник Java простыми словами [Версия для печати]

Автор: admin    Время: 8 час. назад
Название: Java для серверостроителей (L2J) или Учебник Java простыми словами
Java для серверостроителей (L2J) или Учебник Java простыми словами
  E2 w. Y4 Z& O; d7 N
Подразделы/темы:
% z) k; x* |% ?# V* v$ H

! U4 l! i" M5 }
0 T3 z$ f" Q( g! o' I📌 Ключевые слова Java (с переводом и объяснением)
6 o* C% _/ L- |& b6 y! `% C

9 I, s3 @2 f, y3 G1 z) D
  p# Z9 x$ U5 g, k6 J# @! E1 m: Q& m! ~# p
$ R/ ~& P& u8 n: r6 {9 z+ L/ y2 |
7 ^4 E0 e; `* R+ m' q) O

" t- p. ^& Q: _. S7 U; g1 |- K
' g) y! _3 j3 d# Y- T% h# U
, p0 Q+ t8 d0 K6 r2 X
: h7 t4 ~( ~# h  H% u
* t: s- q9 L9 ?  @. F# N) a  B% t# U1 |% o% e$ M% ]' D( y( \/ ?

" H3 ^3 q* }5 |1 d% m; v
9 f1 i" ]4 r/ t" ]% b2 f: E! N- _+ s6 h, |0 g3 J, n2 ~# I

+ G1 o' x+ F8 L' @: f3 w. W1 L: Q9 e# M! |$ u8 w2 C+ m
0 Y. s0 P& M# K7 c0 ]
5 [( r$ n- \) s5 H/ [! C/ y

: N' f$ ~0 p. h6 G; X
) \$ u) [, N! N* z* U$ g
3 Q- U; p6 \+ S/ B( x# p
0 `( V2 K6 H! \7 |0 w
1 _0 o* s% o" M7 k$ k8 U' d" l- i3 l$ i5 _9 ^

" i4 h/ t3 }& \& ?7 e
8 s# {3 E' a2 }3 O9 T8 t* B9 `5 Q
) r: v# |( v4 M8 t
4 ?5 O7 Q* N" @: _3 D& }
" i6 d" O. D! _4 t
( F) t4 {# k% E

1 w% h* [- S8 u: N) o4 u# z) @- y$ L
3 K0 f9 h8 {% J2 l8 s8 ?0 `! w( k
Ключевое словоПереводОбъяснение
classклассОсновной строительный блок программы. Описывает объект и его поведение.
interfaceинтерфейсНабор правил (методов), которые класс обязан реализовать.
extendsнаследуетКласс получает свойства и методы от родительского класса.
implementsреализуетКласс берёт на себя обязательство реализовать интерфейс.
publicпубличныйДоступно всем классам и пакетам.
privateприватныйДоступно только внутри текущего класса.
protectedзащищённыйДоступно в классе и у его наследников.
staticстатическийОбщее свойство/метод для всех объектов класса.
finalфинальныйНельзя изменять (константа, метод нельзя переопределить, класс нельзя наследовать).
voidпустоМетод ничего не возвращает.
returnвернутьВозврат значения из метода.
ifеслиУсловие.
elseиначеВетка, если условие не выполнено.
switchвыборПроверка на несколько вариантов (как меню выбора).
caseвариантОдин из вариантов для switch.
forциклПовторение действий с счётчиком.
whileпокаЦикл, выполняется пока условие истинно.
doсделатьЦикл, выполняется хотя бы один раз, потом проверка условия.
tryпопробоватьБлок кода, где может произойти ошибка.
catchпойматьОбработка ошибки из блока try.
finallyнаконецВыполняется всегда, даже если ошибка произошла.
throwброситьСоздать и выбросить ошибку.
throwsможет броситьОбъявление, что метод может выбросить ошибку.
importимпортПодключение внешнего пакета/класса.
packageпакетГруппа классов (как папка в проекте).
thisэтотСсылка на текущий объект класса.
superродительСсылка на родительский класс.
nullничегоОтсутствие значения (пустая ссылка).
true/falseистина/ложьБулевые значения (логика).
intцелое числоТип данных для целых чисел (1, 2, 3...).
doubleвещественное числоТип данных для дробных чисел (1.5, 2.75...).
booleanлогическийТип данных: true/false.
charсимволОдиночная буква или знак.
StringстрокаНабор символов (текст).
enumперечислениеНабор фиксированных констант.
$ I8 R/ ^$ d1 w3 y1 `8 q

+ e$ J% {2 y" u" J
Автор: admin    Время: 8 час. назад
📌 Примеры кода Java с переводом на русский
# [/ r) U2 f, X7 Z" a! i) w+ T7 F! C1 d
( Y7 u8 w0 J4 V5 K( ZПример 1. Объявление класса и переменной0 x% \+ m% c9 I9 l
  1. ( Z& z& d) `( o3 @" n
  2. public class Player {
    ; s' M! _, g: @
  3. private int health = 100;# u" O- a! v* ]+ N- r. {1 N
  4. }
    - O$ _# k5 h5 t. C. y' w2 D
Скопировать код
$ {* N. P' q% `0 T$ s

" l5 Y! P( g9 r2 i# z2 |🔎 Разбор:
$ Y, @* a4 {; a$ t( X8 k/ p6 l9 j
$ K0 }; r6 J- W3 I' O  rpublic class Player — создаём класс с именем Player, доступный везде.) {$ j4 }7 w2 S2 m' a- r; J
4 F/ c# i9 p$ m4 H  J% D; r
private int health = 100; — внутри класса есть переменная (поле) health типа число (int), приватная, начальное значение = 100.8 j  h% d; r6 G5 N, u7 `3 t3 I

; L7 A5 i9 w. ^+ J& F, TПример 2. Метод без возвращаемого значения
/ @+ t9 W( v3 Q  S% e
  1. 3 D% U; q# L7 ?& T
  2. public void sayHello() {
    1 j7 p  M; h* j8 t2 F6 R
  3. System.out.println("Hello, adventurer!");3 K4 N! h6 _9 O
  4. }  n" e  D5 P( _8 F, G* [  N
Скопировать код
( G3 L3 n3 I, U1 `6 F
* c6 p" ^1 p2 X% u' _( Q* K  o2 V* \
🔎 Разбор:
' I& N5 q* U' p' F: M
: Z" Q1 s. q/ n. F2 q( G7 Opublic — доступен везде.; N# B. l) P9 K2 k2 i; p. j. D

# I4 h/ C( k. O& s, ^void — метод ничего не возвращает.
, Q- a9 `" ^  c# _, {, x, H; i( G- d- A0 A3 F/ E, f
sayHello() — имя метода.
; L( m8 H, O. R# O; Z  n, x- W1 ^3 B' V- Q
System.out.println — вывести текст в консоль.1 \5 \' P/ U# d6 q; r8 l- Y' v; B4 n
  A# D; I2 s' _# b$ v' }8 f% U
Пример 3. Метод с возвращаемым значением
$ F+ W& a# J+ q0 D# W
  1. + {$ Q+ T+ A( f1 z
  2. public int getHealth() {0 U# K9 F; A5 f( j  E+ d9 ~
  3. return health;
    : H: F. ~0 {& n) Q7 P
  4. }0 a( B* m/ |. C: V4 z" T2 ^' B
Скопировать код

; w2 R# U6 }& y- I5 C& q% d3 L% @+ }0 M' N) ]: ]8 E, l4 R& d: U3 F" I
🔎 Разбор:3 I2 \! H6 Z4 M/ h
  @' D' o2 u" V* g4 A+ S8 O
int — метод возвращает число.
5 ]. s' R* l! K+ R4 W
% ?% V4 T) F' U9 A5 V% Wreturn health; — вернуть значение переменной health.
) X5 B6 S# H( G( n5 F" d& F& o9 m0 j& ^8 S
Пример 4. Условие if/else, J$ {$ v0 X8 G1 w

  1. " y  H8 P" _9 t+ P2 t: s/ d
  2. if (health <= 0) {
    ( @- c% T- _' H9 y9 x
  3. System.out.println("Player is dead");
    ) ~" B9 y( R0 m
  4. } else {
    5 e$ C  A! h6 d. X
  5. System.out.println("Player is alive");* Z$ t) R4 [4 R5 Y3 \5 Z- T/ Q
  6. }
    7 ~7 S3 m; y8 D1 x- Y+ W% }7 n
Скопировать код
. w. s0 _/ P( _, N/ a1 k

7 P8 C! K8 P- i🔎 Разбор:7 w* N1 _* S4 d% L9 l
" F! {8 _; z7 ^
if (health <= 0) — если здоровье меньше или равно 0.) F, m( b2 i* {( U

$ w" R4 H6 h$ ^7 c- [else — иначе (во всех других случаях).
8 T- ~6 \1 p  e- U/ ]
4 V7 t, ?' l* n9 c$ ]Пример 5. Цикл for" f+ X8 w# n9 q
  1. / E" I, b# E# M
  2. for (int i = 0; i < 5; i++) {
    ) m! F5 ~# v" X" _0 {6 r. @2 U" L
  3. System.out.println("Attack " + i);
    % Y( N6 w1 ^7 s( l. H3 t$ u3 k
  4. }1 w% }3 U! V$ N& `, K, ], L7 R' x; u
Скопировать код
! m/ t* |" K  y. G; z/ a. F7 a  ~

1 U4 E. d  f; C/ N🔎 Разбор:
& [/ O. P9 }& G5 T2 e
5 a. ^* Q$ J; n% x2 l5 G$ wint i = 0 — начинаем счётчик с 0.
- x+ K$ _. I1 o6 ~" }
5 Y. ]) S8 s! t/ w- |i < 5 — повторяем, пока i меньше 5.2 d3 ^7 F7 E8 n1 u

% k, B& c/ W/ n; J" q: a* ~- y  oi++ — каждый раз увеличиваем i на 1.
" ]. W* e" d. V' o+ S& `
& Y" x+ _) W. Z: E) j- ]9 s9 hВыведет: Attack 0, Attack 1, …, Attack 4.
7 j, }' |; Q6 @) W) n# x2 I7 w! K, {3 ^/ E
Пример 6. try/catch — обработка ошибок
/ a4 E4 o( L) `8 @& S

  1. , M1 }) X$ o* O+ k" S* t% a
  2. try {
    ' A- e  @& @* U/ M; O% W. Y
  3. int x = 10 / 0;
    / f  W4 L$ X4 M4 {* r! Y
  4. } catch (Exception e) {
    " p$ ]$ I# b) f: F; e
  5. System.out.println("Ошибка: " + e.getMessage());
    8 w' v' H+ r1 E) M0 |' x; O
  6. }6 j3 b# n( ?1 o3 V7 b
Скопировать код

7 F7 f) ^: d$ H0 H0 d
; Z9 w4 G) r! [" m. g🔎 Разбор:
' s6 }2 X, L) k% {! l5 L3 |6 R" e/ H3 F, q  i/ v0 W6 G- @6 I
try — пробуем выполнить код.0 ]/ D4 P1 J" J  [+ Y$ }  y( n) n
, G, z- B1 t3 m
10 / 0 — деление на 0 вызовет ошибку.
, T4 x; V+ U, r$ \+ l, F& b+ D( H: h. i0 ]9 U+ I' \
catch (Exception e) — поймали ошибку.
4 @3 `0 m( K) ^' {. F; R) B2 B9 [; x% D4 L+ X# m! d
System.out.println("Ошибка: " + e.getMessage()); — выводим сообщение.9 r- a% A1 L/ k% [  O
3 ?- L+ N( r' r) D
Пример 7. Конструктор4 M( Y8 X( x, W5 A2 q; @& Z) ^

  1. ; c' Z; W0 _1 J: O' v( b# v
  2. public class Player {
    ! L: ]- z3 E3 J# x2 A# L& O, b
  3. private String name;
    0 n- D- x! p7 y& D2 t( n4 n- W% P
  4. " t/ J3 G& m- [' ~- S
  5. public Player(String name) {
    ) i0 L9 `$ D& D& T# L  `
  6.     this.name = name;6 {/ ?$ Z- F8 C& L8 I0 `( m( ~+ N
  7. }/ t! y  T! _9 \3 o# t* Q
  8.   P+ P4 u6 q* V# f7 e

  9. % b* ?' D" h5 {# g: V: H
  10. }# J$ X3 o! G% ]0 j; W3 `. O+ R5 z! V
Скопировать код

1 G3 {: q7 x+ h% j9 J( j) m
/ [* O  Z9 l( w+ P+ y🔎 Разбор:
, j& c& g: L& S/ E" r* x2 U, J8 O2 H# i& W4 {% N
public Player(String name) — конструктор (метод, который вызывается при создании объекта).
" v) d6 g0 t: s$ n, _- y$ ?9 Y$ y1 z- _. T
this.name = name; — присваиваем значение переданное при создании объекта.
- b! Z$ H/ J7 U& d. d; ^; Z5 A, a
; a1 K/ a2 e, x, @0 j, bПример использования:. [; S0 q2 O3 K7 q0 j
  1. - E; E0 \4 f/ O' z% l- N0 {& A7 P
  2. Player p = new Player("Elmorion");
    7 U- x: l! B: u  c( i
Скопировать код
. s3 O( d; Z( S8 x+ h+ Q# J
; T0 d* Z; V. m; w
🔥 Это база, на которой держится 90% кода в L2J и ASTRA.
Автор: admin    Время: 8 час. назад
📌 Пример из L2J (Config.java) с разбором
$ N5 O, ^6 f% D! |" n7 J
5 G: X/ }- J- {) Z: f
  1. 0 Q6 ^9 U, a) M4 \6 N
  2. public static final String CUSTOM_ASTRA_CONFIG_FILE = "./config/Custom/Astra.ini";
    0 M( |; X+ D, m
Скопировать код
5 Y! `0 y' G% S' j/ |' c2 y. D, U
- F' |0 C3 B6 D+ b9 I5 a2 q" R+ J
🔎 Разбор:
* D# C: V' E" N* l+ I' n0 |) X" h1 a  I6 L6 V6 z
public — переменная доступна везде.
+ ]$ j- `' c# l: V9 a7 g
. t4 `' f! S3 }8 c1 ~/ Kstatic — принадлежит классу, а не объекту.$ E2 Y9 E  M; O9 l1 L

: |+ ~( q% y# Hfinal — значение изменить нельзя (константа).9 i# k* n0 w* m) W
, `3 n" \  V: A: J6 u3 c
String — тип данных «строка».
8 v; m/ k9 ^3 L7 ?4 i" Y1 a5 c" O! }4 J4 _3 O
CUSTOM_ASTRA_CONFIG_FILE — имя переменной (принято писать константы ЗАГЛАВНЫМИ буквами).
4 ]: s* m7 z- o5 @8 H& O% n4 Q' Y5 ~  i2 Y! T7 ^6 `* B
"./config/Custom/Astra.ini" — путь к файлу (строка в кавычках).% o; l8 {+ y/ `+ z: u# E' J+ I

6 w( a; J( B: r* A: o

  1. ( y, t  z& g4 b( m+ \
  2. public static void load()
    6 X1 a) F4 m$ t7 g
  3. {
    * O! K# Y/ T% {0 ]  V0 b- {
  4. File ini = new File(CUSTOM_ASTRA_CONFIG_FILE);/ a) W& r( E3 d- V5 q1 Z
  5. if (!ini.exists())
    : [1 E" g5 r, @: {. f
  6. {
    ! f, J  Z. Y) k. K7 Q' O! P
  7. System.out.println("[ASTRA] Astra.ini not found at: " + ini.getPath());! w  f* U# H+ f" t% G$ Q6 D7 X
  8. return;1 ?0 X1 B% i. A8 V+ B6 l! Y
  9. }
    8 e3 [' ?* A( ?; I% F
  10.   w. l! h+ V. Q& s( `/ F
  11. parseIni(ini);
    6 i4 W; q8 v; s* m1 Q3 ]5 l
  12. * T" Y4 k) \& O

  13. " O, v- v. i& K  F7 a) M* f& D
  14. }  \& _1 T+ n/ s; @
Скопировать код

( T( y" V6 }0 M6 T( t6 @( y( w: q# [$ X: [
🔎 Разбор:
2 G1 n- M- _" l& Y& v* P( @0 R( [9 n8 a* a, l. Z
public static void load() — метод доступен везде, общий для класса, ничего не возвращает.
7 `' t1 a- f& Z2 w2 r# B1 ^% \6 u5 J* C" o3 f: C; t4 h# u
File ini = new File(...) — создаём объект File, указываем путь до файла.& M- b) j. p7 Z/ Z/ u; B9 q% O
8 T! Y  ]' z5 W9 g: _+ R
if (!ini.exists()) — проверка: если файл не существует.
) b3 ?# k& \  Y: i6 {& M: P
* w& A+ f3 ^' H4 I' o& E" HSystem.out.println(...) — выводим сообщение в консоль.
2 m2 N7 y! A( g4 O+ c' H; l
& C" a( g" l0 V* m* l" {$ z# wreturn; — завершаем метод.
6 h& X& J' [( f- U
. J# @2 e) Z" i" a# e1 wparseIni(ini); — вызываем метод, который разберёт содержимое ini-файла.( b0 Z! }/ [: c/ W. L8 H& K3 i

; v$ R( d6 r! e! @💡 Что это значит для сервера?
3 c. q* b3 d, `6 b7 b0 ^4 q# N! A  ]5 u! t9 M3 Z" _# |
Этот код отвечает за то, чтобы сервер при старте загрузил твой файл настроек Astra.ini.
( `* Q% X" g! _Если файла нет — он пишет в консоль сообщение и использует стандартные значения (дефолты).
) A$ q5 h/ B: m9 q  L5 w4 O
. `5 r. m& Z$ i5 i🔥 Такой же принцип работает для всех ini-файлов в L2J (Rates.ini, Server.ini, NPC.ini). Отличие только в названии переменной и в пути к файлу.




Добро пожаловать artace.ru - творческий сектор (https://artace.ru/) Powered by Discuz! X3.5