Java连载33-对象的创建和使用、内存分析
一、创建一个学生类
每个学生都有学号信息,但是每一个学生的学号都是不同的,所以要访问这个学号必须先创建对象,通过对象去访问学号信息,学号信息不能直接通过“类”去访问,所以这种成员变量又被称为“实例变量”
注意:
(1)对象又被称为实例,实例变量又被称为对象变量(对象级别的变量)
(2)不创建对象,这个Number的内存空间是不存在的,只有创建了对象,这个number变量内存才会被创建
(3)通过一个类可以实例化多个对象
(4)实例化对象的语法
new 类名();
(5)new是java语言中的一个运算符
(6)new运算符的作用:创建对象,在JVM堆内存中开辟新的二内存空间
(7)方法区内存:在类加载的时候,class字节码代码片段被加载在该内存空间之中
(8)栈内存(局部变量):方法代码片段被执行的时候,会给该方法分配内存空间,在栈内存中,进行压栈
(9)堆内存:new的对象在堆内存中被存储;
(10)D32_student是一个引用数据类型,s是一个变量名,new D32_student()是一个学生对象,s是一个局部变量(在栈内存中存储)
(11)什么是对象?new运算符在堆内存中开辟的内存空间称为对象
(12)什么是引用?引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址
(13)java语言中,不能直接操作堆内存,java中没有指针,不想C语言
(14)java语言中,只能通过“引用”去访问堆内存中的对象内部的实例变量
(15)访问实例变量的语法格式:
读取数据:引用.变量名 修改数据:引用.变量名 = 值

举例:
public class D33_student2_test {
public static void main(String[] args) {
D32_student s = new D32_student();
System.out.println("jfahsf ");
s.no = 154;
s.address = "jafalj ";
System.out.println(s.no);
D32_student s2 = new D32_student();
System.out.println(s2.no);
//以下程序报错,因为no这个实例变量不能直接采用“类名”的方式访问
//因为no是实例变量,对象级别的变量,变量存储在java对象的内部,必须先有对象,因为对象才能访问no这个实例变量
//不能直接通过“类名”来访问
//System.out.println(D32_student().no);
}
}
class D32_student {
//public static main(Sting[] args) {
int no;//学号
String name;//姓名
int age;//年龄
boolean sex;//性别
String address;//地址
//方法是描述对象的动作信息,当前例子就不描述方法了,只描述信息属性
//}
}

二、源码:
D33_student2_test.java
地址:
https://github.com/ruigege66/Java/blob/master/D33_student2_test.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载33-对象的创建和使用、内存分析的更多相关文章
- Java常量,变量,对象(字面量)在JVM内存中的存储位置
Java常量,变量,对象(字面量)在JVM内存中的存储位置 2019-02-26 18:13:09 HD243608836 阅读数 540 收藏 更多 分类专栏: JAVA jvm 苦苦研究了快 ...
- JAVA虚拟机:对象的创建过程
简要说明的话,Java对象的创建过程分为下面几步: 1.执行相关检查: 2.为对象分配内存,将分配到的内存空间都初始化为零值: 3.进行构造代码块和构造函数的初始化 下面详细介绍这几个步骤: 1.执行 ...
- Java中String对象的创建
字符串对象是一种特殊的对象.String类是一个不可变的类..也就说,String对象一旦创建就不允许修改 String类有一个对应的String池,也就是 String pool.每一个内容相同的字 ...
- Shiro中Subject对象的创建与绑定流程分析
我们在平常使用Shrio进行身份认证时,经常通过获取Subject 对象中保存的Session.Principal等信息,来获取认证用户的信息,也就是说Shiro会把认证后的用户信息保存在Subjec ...
- [Java] 一、对象的创建 & 销毁
*1.考虑静态工厂方法(static factory method)代替构造器?!优势?不足? 服务提供者架构: 1.服务接口(Service Interface) -- 提供者实现的: 2.提供者注 ...
- Java对象(创建过程、内存布局、访问方法)
(Java 普通对象.不包括数组.Class 对象等.) 对象创建过程 类加载 遇到 new 指令时,获取对应的符号引用,并检查该符号引用代表的类是否已被初始化.如果没有就进行类加载. 分配内存 ...
- Java虚拟机学习-对象的创建
虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载.解析和初始化过.如果没有,必须先执行相应类的加载过程. 类加载 ...
- JAVA虚拟机:对象的创建
在虚拟机中,当遇到需要new一个对象时,虚拟机首先会去处于方法区的常量池中查找new指令的参数,即查找此类的符号引用是否已存在,并且检查此符号引用的代表类是否已经做过加载.解析和初始化,如果做过则不会 ...
- Java类与对象的创建
以类的方式组织代码,以对象的方式组织(封装)数据 组织代码(类) public class Demo04 { String name;//默认值null int age;//默认值0 public v ...
随机推荐
- 关于c++中的复合类型
目录 数组 字符串 结构体 共用体 枚举 指针 数和指针的关系 常见的存储方式 数组替代品 一.数组 存储在每个元素中值的类型 数组名 数组中的元素数 通用格式:typename arrayname ...
- iOS学习——iOS 宏(define)与常量(const)的正确使用
概述 在iOS开发中,经常用到宏定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用宏与const修饰.你能区分下面的吗?知道什么时候用吗? #define HSCode ...
- 多线程与高并发(五) Lock
之前学习了如何使用synchronized关键字来实现同步访问,Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功 ...
- 《Java 8 in Action》Chapter 5:使用流
流让你从外部迭代转向内部迭代,for循环显示迭代不用再写了,流内部管理对集合数据的迭代.这种处理数据的方式很有用,因为你让Stream API管理如何处理数据.这样Stream API就可以在背后进行 ...
- 启xin宝app的token算法破解——token分析篇(三)
前两篇文章分析该APP的抓包.的逆向: 启xin宝app的token算法破解--抓包分析篇(一) 启xin宝app的token算法破解--逆向篇(二) 本篇就将对token静态分析,其实很简单就可以搞 ...
- python 实现多个线程间消息队列传递,一个简单的列子
#-*-coding:utf8-*-"""Producer and consumer models: 1. There are many producers and co ...
- Leetcode之回溯法专题-90. 子集 II(Subsets II)
Leetcode之回溯法专题-90. 子集 II(Subsets II) 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入 ...
- 持续集成高级篇之基于win32-openssh搭建jenkins混合集群(一)
系列目录 前面的demo我们使用的都是只有一个windows主节点的的jenkins,实际生产环境中,一个节点往往是不能满足需求的.比如,.net项目要使用windows节点构建,java项目如果部署 ...
- 从零开始开发IM(即时通讯)服务端
好消息:IM1.0.0版本已经上线啦,支持特性: 私聊发送文本/文件 已发送/已送达/已读回执 支持使用ldap登录 支持接入外部的登录认证系统 提供客户端jar包,方便客户端开发 github链接: ...
- VMware虚拟机安装Linux系统详细教程
VMware14虚拟机安装RedHad6系统步骤 redhat网盘资源:链接:https://pan.baidu.com/s/1GlT20vevqbZ9qTxsGH1ZzA 提取码:oh57 如果网盘 ...