# int to string ...



## tomovic (7. Jul 2014)

hallo,
ich möchte gerne die x Pos in ein Text Feld setzen(bei touch).:bahnhof:



```
public boolean onTouchEvent(MotionEvent event) {
	    int eventaction = event.getAction();

	    switch (eventaction) {
	        case MotionEvent.ACTION_DOWN: 
	        	tw.setText("down.....");   <------ geht ohne Probleme
	            break;

	        case MotionEvent.ACTION_MOVE:
	        	int pos = (int)event.getX();	        	
	        	tw.setText(pos.toString()); <-----Problem !!!
	        	       	
	            break;
```
pos.toString()


----------



## JavaMeister (7. Jul 2014)

Pos ist ein primitiver Datentyp.


----------



## tomovic (8. Jul 2014)

thx,
ja ist mir klar, aber irgend wie klappt das nicht.
tw ist doch String oder ist da was anderst weil ich es auf dem Bildschirm ausgegebe?


----------



## Tobse (9. Jul 2014)

Das aufrufen einer Methode erfordert in jedem fall eine Referenz auf ein Objekt und das Objekt selbst. Primitive Datentypen sind aber keine Objekte sondern einfach nur lose im Raum stehende Daten. Demnach kann man auch nicht auf sie verweisen (referenzieren) oder OO Dinge mit ihnen anstellen.
Damit man aber trotzdem OO Funktionen mit solchen Informationen nutzen kann gibt es die Wrapper Klassen Byte, Short, Integer, Long, Double, Float und Boolean. (Achtung, primitive Datentypen werden _klein_ geschrieben! byte, short, int, long, double...).

Dir bleiben also zwei möglichkeiten:

Das 
	
	
	
	





```
int
```
 in ein 
	
	
	
	





```
Integer
```
 "casten": [c]Integer i2 = (Integer) i[/c] (das ist eigentlich kein casten denn was hier vom Compiler intern gemacht wird ist dashier: 
	
	
	
	





```
Integer i2 = new Integer(i)[/c]
[*]Die statische Methode [code]toString()
```
 von Integer benutzen: [c]Integer.toString(i)[/c]


----------



## tomovic (9. Jul 2014)

thx all,
habs hinbekommen

```
int pos = (int)event.getX();	        	
	        	tw.setText(Integer.toString(pos));
```


----------



## freakyy (30. Jul 2014)

Warum denn so kompliziert?

Ich verwende immer einen kleinen Trick, sodass ich den Datentyp der Variable nicht ändern muss.

```
int var1 = 20;
tv.setText(var1 + "");
```
Was spricht gegen diese Möglichkeit, denn einfacher ist sie ja oder?

LG, freakyy


----------



## Tobse (30. Jul 2014)

freakyy hat gesagt.:


> Warum denn so kompliziert?
> 
> Ich verwende immer einen kleinen Trick, sodass ich den Datentyp der Variable nicht ändern muss.
> 
> ...



was du da machst ist nicht ein int in einen String umzuwandeln sondern einen Leeren String mit einem String zu concatenaten. Intern macht java dann das int zu einem String. Aber das zusammenfügen mit dem leeren String nimmt zusätzlich Zeit weg.


----------



## Joose (30. Jul 2014)

freakyy hat gesagt.:


> ```
> int var1 = 20;
> tv.setText(var1 + "");
> ```
> Was spricht gegen diese Möglichkeit, denn einfacher ist sie ja oder?



Klar so geht es wenn man mal schnell machen will.
Die Lösung funktioniert auch aber sie ist sehr unschön. Unter anderem weil viel unnötiger Overhead beim "zusammenbauen" des Strings erzeugt wird usw. (betrifft dann vor allem große Projekte und Performance kritische Sachen)


----------



## Flown (30. Jul 2014)

Wie wärs denn mit dem hier?


```
String result = String.valueOf(pos);
```


----------

