1. L'en-tête de l'objet est divisé en MarkWord et KlassPoint.
MarkWord (champ de marque) : le HashCode de l'objet est stocké par défaut, remplaçant les informations d'âge et de position de marque verrouillée. Il réutilisera son propre espace de stockage en fonction de l'état de l'objet, c'est-à-dire que les données stockées dans MarkWord changeront à mesure que la position de la marque de verrouillage change.
KlassPoint (type pointer) : Le pointeur d'un objet vers ses métadonnées de classe. La machine virtuelle utilise ce pointeur pour déterminer à quelle classe appartient l'objet.
2. Données d'instance. Cette partie stocke principalement les informations sur les données et les informations sur la classe parent.
3. Alignez et remplissez. Étant donné que la machine virtuelle nécessite que l'adresse de départ de l'objet soit un multiple entier de 8 octets, les données de remplissage n'existent pas nécessairement, uniquement pour l'alignement des octets.
Un objet vide occupe 8 octets en raison de l'alignement et du remplissage. L'alignement et le remplissage de moins de 8 octets nous aideront à le compléter automatiquement.
Instances
public class TestStudent { public static void main(String[] args) { int n = 10; //栈存储 int m = 10; //栈存储 Student stu = new Student(); //属性赋值 stu.name="张三"; System.out.println(stu.name); //null 张三 System.out.println(stu.age); //0 //调用 String name = "ls"; //局部变量(常量池) String aaaa="ls"; String pwd = "123"; stu.login(name,pwd); System.out.println("name:"+name); //ls System.out.println("执行"); } } class Student { // 属性 String name; int age; //用户登录 // String userName; // String pwd; public void login(String userName,String pwd){ System.out.println(userName+"===="+pwd); //ls 123 } public void show() { System.out.println("姓名:" + name + ",年龄:" + age); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!