Besoin d'aide en java
Kwarm
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je débute en java, et j'aurais plusieurs questions à vous poser :) :
-je suis tombé sur ca <<< ou ca >>, ou | tenez un exemple de code que j'aimerais bien comprendre:
int i = (sArr[s++] & 0xff) << 16 | (sArr[s++] & 0xff) << 8 | (sArr[s++] & 0xff);
il n y a pas un site qui répertorie tout ce genre de structures spéciales ??
-que veut dire le f de par exemple :
double double= 12.20f
je ne l'ai jamais croisé celui-là, j'ai même demandé aux membres de mon entourage qui sont plus expérimenté en maths
-enfin, étant un débutant, je cherche un tuto sur la classe File() et toutes ses classes filles ... merci pour l'aide !!! et à bientôt ;) je suis déterminé à comprendre ce code compliqué :)
je débute en java, et j'aurais plusieurs questions à vous poser :) :
-je suis tombé sur ca <<< ou ca >>, ou | tenez un exemple de code que j'aimerais bien comprendre:
int i = (sArr[s++] & 0xff) << 16 | (sArr[s++] & 0xff) << 8 | (sArr[s++] & 0xff);
il n y a pas un site qui répertorie tout ce genre de structures spéciales ??
-que veut dire le f de par exemple :
double double= 12.20f
je ne l'ai jamais croisé celui-là, j'ai même demandé aux membres de mon entourage qui sont plus expérimenté en maths
-enfin, étant un débutant, je cherche un tuto sur la classe File() et toutes ses classes filles ... merci pour l'aide !!! et à bientôt ;) je suis déterminé à comprendre ce code compliqué :)
A voir également:
- Besoin d'aide en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
3 réponses
Salut,
Hmm si tu est débutant, je te conseille de ne pas trop t'attarder sur ce code qui est assez compliqué et rentre dans le langage binaire de tes données, malgré tout si tu veux perséverer tu vas avoir du travail mais c'est très enrichissant et intéressant...
Le & est un "ET" logique et par exemple le fait de faire & 0xff (qui correspond à "11111111" va appliquer ce masque sur les huit premiers bits de poids faible de ta variable sArr[s++].
le | est un "OU" logique
le << ou >> permettent de décaler les bits dans un sens ou dans l'autre...
Hmm si tu est débutant, je te conseille de ne pas trop t'attarder sur ce code qui est assez compliqué et rentre dans le langage binaire de tes données, malgré tout si tu veux perséverer tu vas avoir du travail mais c'est très enrichissant et intéressant...
Le & est un "ET" logique et par exemple le fait de faire & 0xff (qui correspond à "11111111" va appliquer ce masque sur les huit premiers bits de poids faible de ta variable sArr[s++].
le | est un "OU" logique
le << ou >> permettent de décaler les bits dans un sens ou dans l'autre...
j'étais sur que c'était plutôt le || qui était un ou logique, alors j'ai fais une recherche , et je suis tombé sur un article de ce même site qui explique à peu près, (le | est un ou inclusif) j'ai de la la lecture ;)
par contre, ce que je ne comprend toujours pas, c'est les f qu'on retrouve dans les float/double, et ce 0xff que je ne comprend toujours pas --"
par contre, ce que je ne comprend toujours pas, c'est les f qu'on retrouve dans les float/double, et ce 0xff que je ne comprend toujours pas --"
Pour les entiers c'est une notation hexadécimale, FF (base 16) = 11111111 (base 2) = 255 (base 10)
Pour les flottants cela indique que c'est une valeur float (double par défaut)
Exemples :
Remarque : mettre un f pour un double (double x = 12.20f) entraîne une perte de précision vu que l'on convertit d'abord la valeur en float avant de le passer en double.
Il serait mieux de mettre alors un d (double x = 12.20d) ou de ne rien mettre (double x = 12.20)
Pour les flottants cela indique que c'est une valeur float (double par défaut)
Exemples :
System.out.println(0xFF); // 255 en base 16 (grâce au préfixe 0x) System.out.println(0377); // 255 en base 8 (grâce au préfixe 0 ) System.out.println(255); // 255 en base 10 (par défaut) float f1 = 0.0; // incorrect (0.0 est un double par défaut) float f2 = 0.0f; // correct float f3 = (float) 0.0; // correct
Remarque : mettre un f pour un double (double x = 12.20f) entraîne une perte de précision vu que l'on convertit d'abord la valeur en float avant de le passer en double.
Il serait mieux de mettre alors un d (double x = 12.20d) ou de ne rien mettre (double x = 12.20)
Voici un petit code qui devrait te permettre de voir comment se comportent les différentes notations pour les nombres :
static void afficher(int i) { System.out.println("int\t"+i); } static void afficher(long l) { System.out.println("long\t"+l); } static void afficher(float f) { System.out.println("float\t"+f); } static void afficher(double d) { System.out.println("double\t"+d); } public static void main(String...args) { afficher(010); // int 8 afficher(0x10); // int 16 afficher(10); // int 10 afficher(10L); // long 10 afficher(10F); // float 10.0 afficher(10D); // double 10.0 afficher(10.0); // double 10.0 }
On peut aussi trouver ~ et ^ (voir la liste des opérateurs)
Pour ta troisème question regarde La gestion des fichiers et des flux de données.