Wenn Du Dir die primitiven Datentypen von Java anschaust (z.B.
https://dbs.cs.uni-duesseldorf.de/lehre/docs/java/javabuch/html/k100024.html), dann siehst Du, dass char da ebenso aufgelistet wird wie byte, int, long, ...
Das ist vom Prinzip her also nichts anderes - ein char ist also auch nur eine Zahl (mit 16 Bits dargestellt).
Damit kannst Du da also ebenso rechnen, wie mit allen anderen Zahlen auch.
Wenn Du ein char hast, dann kannst Du da also Zahlen abziehen oder hinzufügen. Und das gilt auch für die char Literale - das ist wie eine Zahl.
Du kannst also ein char haben und
- prüfen, ob das Zeichen >= 'A' und <= 'Z' ist
- Du kannst Rechnen, also etwas wie myChar - 'A' oder myChar + 5 oder ein 'A' + Versatz
Dann ist das Problem relativ einfach abzubilden: Du hast einen Bereich von 26 Werten, der bei 'A' anfängt und bei 'Z' aufhört.
Da könnte man dann schauen, das wievielte Zeichen es ist (angefangen bei 0). Also 'A' soll 0 sein, 'B' soll 1 sein, ...
Wenn Du weisst, das wievielte Zeichen es, dann kannst Du da einen Versatz addieren.
Und wenn das dann nicht im Bereich 0...25 ist, dann kannst Du überlegen, wie Du da bei 26 die 0, bei 27 die 1, ... bekommen kannst (Du hast da ja nach der Verwendung eines Operators gefragt)
Und dann kann man vom Index zum Zeichen kommen ... das, was man vorher gemacht hat, würde man dann sozusagen rückgängig machen.
Edit: Bei so Operationen mit einem char und einem int wird Java den char intern erst in einen int umwandeln. Damit wäre das Ergebnis auch ein int - hier wird dann ggf. ein expliziter cast zu einem char notwendig. Das noch als kleiner Hinweis.