2016-10-02 5 views
0

Ist es möglich, auf das erste Element eines char [] in Java zu zeigen?Zeichenzeiger in Java

Ich habe diesen Code in C++ als ein Beispiel dafür, was ich zu tun versucht:

char word[100] = " "; 
char *p; 

cout << "Enter a word: "; 
cin.getline(word, 100); 

p = word + strlen(word) - 1; 

Ist es möglich, so etwas wie dies in Java zu tun? Vielen Dank für Ihre Zeit!

+1

Java hat keine Zeiger tun könnte. Nur Objektreferenzen –

+0

Java hat Zeiger im Sinne von Variablen, die Verweise auf Daten im Speicher speichern. Alle Variablen von Objekttypen in Java sind Zeiger in diesem Sinne. Die Sprache Java erlaubt jedoch keine arithmetischen Operationen für die Werte von Zeigern, wie Sie es in einer Sprache wie C tun könnten. Quelle - http://stackoverflow.com/questions/2629357/does-java-have- Zeiger – Lazai

+0

Dean, können Sie vielleicht klären, was Sie brauchen einen Zeiger für ...Das obige Snippet wäre funktional dasselbe, wenn 'p' vom Typ' char' wäre und Sie nur das erste Element'p' zuweisen –

Antwort

2

Java fehlt das Konzept der Zeiger, so ist die Antwort "Nein". Alle Operationen in einem Array müssen mithilfe von Indizes ausgeführt werden.

Die Konsequenz daraus ist, dass Sie kein einzelnes Argument so Methoden übergeben können, die erwarten, Arrays ab einer bestimmten Position zu lesen oder zu schreiben; Sie brauchen immer ein Array und einen Index.

Hinweis: Im Allgemeinen C++ nähert sich Strings zu lesen nicht übersetzen sehr gut auf Java, weil Java I/O-Bibliotheken Speicher für Sie verwalten, werden Sie befreien mit etwa Pufferüberschreitungen befürchten auf einen String zu lesen.

0

Konzept des Zeigers nicht in Java Grunde verwendet, die Speicherfreigabe und Zuordnung wird automatisch durch die Java Virtual Machine durchgeführt, die einzige Möglichkeit, eine Array-Referenz für den Zugriff ist durch den Index

0

Kurze Antwort: Nein

Lange Antwort: Nein ... Java hat keine Zeiger. Es hat nur Objekt Referenzen. Jede nicht-primitive Datentyp Pass-by-reference, was bedeutet, dass, wenn Sie die folgenden Schritte aus:

Object a = new Object(); 
Object b = a; 
Object c = new Object(); 

a == b wahr ist, während b == c und a == c falsch sind.

Wenn Sie ein zeigerähnliches Verhalten in Java haben möchten, müssen Sie es in ein Objekt einschließen und Verweise verwenden. Zum Beispiel ist es möglich, dass ein AtomicInteger[] verwendet werden könnte, und Sie übergeben einen Verweis auf einen der AtomicInteger s, aber es wäre wahrscheinlich am besten, den int Index als einen "Zeiger" auf die Position im Array zu halten. Des Weiteren könnte Ihr Code-Snippet nur eine char Variable haben, die auf word[0] gesetzt ist. Es hängt wirklich davon ab, was Sie brauchen einen Zeiger für ...

1

Java kein Konzept von Zeigern und Java hat String (e) eine feste Länge (sie sind auch unveränderlich so haben sie eine fixiert alles).

aber sagen, dass Ihr Code geschrieben liest ein Wort, das Sie mit einem Scanner wie

Scanner scan = new Scanner(System.in); 
String word = scan.next(); // <-- nextLine() if you want a line. 
int length = word.length(); 
Verwandte Themen