CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Débutant need help

Kania
Kania
Niveau 6
18 novembre 2012 à 22:37:30

Salut,

Je viens de me mettre au Java, & j'ai déjà des problèmes (je passerai sur Éclipse qui ne m'est pas du tout ergonomique/intuitif) pour me concentrer sur l’essentiel :

public class Test {

public static void main(String[] args) {
char car = 'd', car2 = 't', car3 = 'c';
System.out.print(car + car2 + car3);
}
}

:d) Ce code renvoit 315 à la place de dtc, je ne comprends pas pourquoi.

Par ailleurs j'ai tenté de foutre 100 dans un type byte, & ce n'est pas possible, mais pourquoi? C'est censé coder un nombre sur 1 octet donc 8 bits donc 2^8 nombres, & c'est compris dans l'intervalle à ce que je saches!

Même remarque pour certains autres types comme double.

Bizarre!

dark_drow
dark_drow
Niveau 15
18 novembre 2012 à 22:50:20

oui en fait il prends le code ASCII de tes char
l'opérateur + ne permet de concaténer que des Strings

donc passe plutot par un StringBuilder mais c'est quand meme assez galère ^^'

Pour la question en ce qui concerne les byte j'avoue que je sais pas, je m'en sert jamais :o))

Kania
Kania
Niveau 6
18 novembre 2012 à 22:52:28

"l'opérateur + ne permet de concaténer que des Strings"

:d) Ah bah voilà. :rouge:

"Pour la question en ce qui concerne les byte j'avoue que je sais pas, je m'en sert jamais"

:d) Ok. Pour certaines données, ça peut servir pourtant, & c'est parfois bien plus approprié qu'un int par exemple, non? :(
L'économie faite est relative mais c'est pour le principe.

dark_drow
dark_drow
Niveau 15
19 novembre 2012 à 00:13:29

par contre le code
byte b = 100;
System.out.println(b);

affiche bien 100 après test :peur: .
Le maximum que tu peux mettre dans un type se retrouve avec la constante statique Montype.MAX_VALUE (2^7-1 pour un Byte)

dark_drow
dark_drow
Niveau 15
19 novembre 2012 à 00:14:53

Et à part cas spécifique, je pense que c'est tout aussi bien de préfèrer les int aux byte

godrik
godrik
Niveau 30
19 novembre 2012 à 00:30:22

Sauf si tu a sune bonne raison d'utiliser byte, ne l'utilise pas et prends int comme tout le monde.

Kania
Kania
Niveau 6
19 novembre 2012 à 22:12:18

Pourquoi utiliser un "int" à la place d'un "byte" pour une variable qui ne stockera de toute manière que des nombres positifs très faibles? :(

Neofungamer
Neofungamer
Niveau 21
19 novembre 2012 à 22:19:51

Pour que ton code soit lisible pour quelqu'un qui n'a pas l'idée folle d'utiliser un byte :)

lokilok
lokilok
Niveau 16
19 novembre 2012 à 22:20:21

Parce que c'est pas fait pour ça.

C'est comme utiliser un char pour stocker autre chose qu'un caractère, ou un float pour stocker un entier, c'est ps grave que ton programme consomme quelques octets en plus (et c'est pas comme si c'était un problème vu le prix) vaut mieux avoir un code clair, deviner a quoi va servir ta variable (du moins avoir une idée de quoi elle va stocker surtout) juste en lisant son type.

Enfin du moins j'imagine que c'est pour ça.

Kania
Kania
Niveau 6
19 novembre 2012 à 22:28:50

Bah les programmeurs connaissent les types primitifs non? On m'a toujours dit d'etre rigoureux et de ne pas etre laxiste sur la mémoire!

Si j'ai besoin d'une variable pr stocker l'age de qqn par exemple je vais pas utiliser un int! 3 octets de perdus ^^

non?

Bunyan
Bunyan
Niveau 17
19 novembre 2012 à 22:48:42

Ca dépend ce que tu entends par "age", ainsi de ce que tu entends par "quelqu'un".

Si, par âge, tu entends simplement le nombre d'années qui se sont écoulées, il sera strictement positif. La maximum actuel d'un humain est à 122, le maximum d'un byte est à 127. Puisque la longévité augmente (pour le moment, du moins), le 127 pourrait être une source de problèmes. Un int est donc préférable.

Si ce sont des âges Humains un brin fantastique (juste à prendre Mathusalem, qui a vécu plus de 9 siècles selon la Bible), un byte ne suffira pas. Un int est recommandé

Si c'est l'âge d'un corps céleste, il faudra plutôt un long.

Si tu entends, par âge, l'âge écrit en lettre, byte n'est pas ce qui est adapté, int non plus. C'est plus un String qu'il faudra utiliser.

Il faut faire attention à la mémoire, oui, mais uniquement quand c'est utile. Ici, tu fais une économie dit "de bout de chandelle" (= quasi-insignifiante). Elle pourrait être utile dans le cas où tu joues au niveau des millièmes de ton unité de mesure (temps ou mémoire). Inutile sinon, et source d'erreurs à termes, que ce soit au niveau de la relecture ou au niveau de la maintenabilité.

Faire attention à la création des objets, ainsi qu'à leur gestion et aux algorithmes utilisés est suffisant dans 90% des cas (valeurs impression, non-prouvée).

Kania
Kania
Niveau 6
19 novembre 2012 à 22:53:27

ok merci pr ce post constructif :)

godrik
godrik
Niveau 30
19 novembre 2012 à 23:12:22

De plus, c'est pas completement clair que tu gagne vraiment de la memoire. Si tu n'as qu'un seul byte dans ta structure, il prends probablement 4 octets quand meme (pour des raison d'alignement). De plus, travailler sur des bytes peut etre plus couteux que de travailler sur des ints.

Ixior
Ixior
Niveau 10
21 novembre 2012 à 14:12:07

Pour logger un char, int, long.... utilise la méthode static String.valueof();

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment