bonjour,
je veux savoir la qui peut occuper mon objet (taille max),
comme en langage c, sizeof d'une structure donne la taille de la struct max,
j'ai converti la struct en une class,
merci
bonjour,
je veux savoir la qui peut occuper mon objet (taille max),
comme en langage c, sizeof d'une structure donne la taille de la struct max,
j'ai converti la struct en une class,
merci
Bonjour
Est ce que tu pourrai mieux préciser pourquoi tu voudrais utiliser un equivalent de sizeof en java ?
Sa m'aidera a trouver une solution pour toi.
en faite je calcul la rotation d'un text pour l'imprimer sur une imprimante spécilale.
je teste un coef de rotation si il est supperieur à la taille de l'objet divisé par ça taille max :
j'ai une classe PatternRotation {char status, char direction}
je construit un objet :
je l'initialise, et je calcule ma rotation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part PatternRottaion rotaionValue;
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(maRotaion > (rotationValue.length / sizeof(PatternRotation) //equivalent de sizeof ???
Alors de deux choses l'une, soit je n'ai rien compris de ce que tu veux faire, soit ta méthode est bancale, mais le sizeof ne fait que donner la place mémoire occupé par l'objet.
Sauf pour certaine astuce un peu limite, ou dans certains cas vraiment spéciaux, tu n'en as besoin que pour effectuer tes allocations mémoires. Or Java fait toutes les allocations tout seul comme un grand.
Pourrais tu être plus explicite sur ce que tu veux faire exactement s'il te plais ?
Ben enfaite sizeof n'existe pas JAVA et aucun equivalent n'a etait crée.
Mais en java la taille de tous les types sont fixe, donc tu peux definir la taille a la main.
Regarde ce lien , en esperant que sa puisse t'aider
http://mindprod.com/jgloss/sizeof.html
Je crois qu'il nous manque un élément important. Qu'entends-tu par "rotation d'un texte" ?
Et comment calcule-t-on cela ?
Dans tous les cas en Java tu ne peux pas connaître la taille mémoire allouée à un objet parce que cette valeur peut potentiellement changer (et est en général peu pertinente car Java gère la plupart des données via des pointeurs). Ce genre d'information, si elle peut être précieuse en programmation bas niveau, est totalement inutile pour le type de programmation pour laquelle on utilise le langage Java. En résumé il doit y avoir un autre moyen de faire ce que tu demande et c'est pour cela qu'on te demande plus de précisions.![]()
salut
Le langage java n'a pas besoin du sizeof comme en C/C++, car les types primitif (boolean, int, long..) ont une taille fixe sur toutes les plateformes (Windows, Linux, 32bit, 64bit..)
La taille d'une classe (structure) est la même partout. En simplifiant : si ta classe X contient n attributs :
faire la somme des attribut primitif et reference.
sachant que
sizeof(PatternRotation) = sizeof(char)+sizeof(char) =4byte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 sizeof(boolean) = 1 byte sizeof(int)= 4 byte sizeof(long)= 8byte ... sizeof(reference)=sizeof(int) sur une architecture 32bit.
si PatternRotation est final sinon il ya un sizeof(reference) en plus pour la table virtuel
Gne ???!
Aux dernieres nouvelles, si je ne suis pas trop rouille (ca peut etre le cas), sizeof() retourne une valeur de type size_t qui donne la taille d'un type en octets c'est a dire generalement 4 pour un char* alloue dynamiquement (malloc() ou new) ou sizeof(char)*taille du tableau pour un char[] alloue statiquement.
Pour connaitre le nombre de caracteres d'une chaine C terminee par NULL on utilise strlen() tout comme pour connaitre le nombre de caracteres d'une std::string C++ on utilise sa methode size().
Mais cela ne fait que donner son nombre de caracteres, cela n'a aucun rapport direct avec l'espace utilise a l'impression a l'impression qui peut dependre la DPI, de la police (et certaines polices n'ont pas des glyphes de largeur fixe...), etc...
En Java pour calculer l'espace pris par un texte on peut utiliser (entre autre) la methode getStringBounds() de la classe Font, qui necessite donc une police, un texte et un FontRenderContext qui est fourni par le Graphics sur lequel on veut dessiner (Graphics qui peut etre fourni par l'imprimante). Attention des indices de rendu tel que l'antialiasing du texte peuvent influer sur l'espace occupe par une chaine.
Sinon pour info, le nombre de bits (et non pas le nombre d'octets) occupe par chacun des types de base Java sont definis dans le membre static SIZE de chacun des types de base depuis Java 1.5 (ex: Integer.SIZE -en Java toujours 32-, Character.SIZE -en Java toujours 16-, etc.).
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Partager