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 ...
随机推荐
- idea 2019安装完(打不开&&启动不了)问题解决(最全解决方法)
今天从网盘把idea下载下来后一路安装,准备 设置的时候不管怎么打开 他都无动于衷没办法,卸了安,安了卸,反复折腾了 好几遍 它都无动于衷.于是开始在百度上找答案看了 好几个 方法一遍一遍试还是不行, ...
- Go-json解码到结构体-踩坑
package main import ( "encoding/json" "fmt" ) type User struct { Name string `js ...
- Go---go-cache包学习
github.com/patrickmn/go-cachego-cache是一款类似于memached 的key/value 缓存软件.它比较适用于单机执行的应用程序.go-cache实质上就是拥有过 ...
- Linux 中如何查询端口被占用的情况
Linux如何查看端口 1.lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000,如下图 可以看到8000端口已经被轻量级文件系统转发服务lwfs ...
- Java虚拟机详解(六)------内存分配
我们说Java是自动进行内存管理的,所谓自动化就是,不需要程序员操心,Java会自动进行内存分配和内存回收这两方面. 前面我们介绍过如何通过垃圾回收器来回收内存,那么本篇博客我们来聊聊如何进行分配内存 ...
- TCP与UDP的主要特点
UDP主要特点: (1)UDP是无连接的,即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可以释放),因此减少了开销和发送数据之前的时延. (2)UDP使用尽最大努力交付,即不保证可靠交付 ...
- JMeter用户参数
压测的时候,经常需要使用动态参数,即每次请求的参数不一样,这样才能更好的模拟真实的用户请求,我们首先能想到的也是最常见的就是用户ID 1. 用户参数 我们可以定义一个变量,然后指定多个值,这样每次请 ...
- HDU 2147
题意略. 思路: 题中提到的3种操作,一个是将长方形的n减少1,一个是将m减少1,一个是将n和m同时减少1,都是将长方形规模减少的的操作. 现在我们可以知道,(1,1)先手必输:(1,2),(2,1) ...
- Python处理NetCDF格式数据为TIFF数据(附脚本代码)
博客小序:NetCDF格式数据广泛应用于科学数据的存储,最近几日自己利用python处理了一些NetCDF数据,特撰此博文以记之. 参考博客: https://www.cnblogs.com/shou ...
- (五十五)c#Winform自定义控件-管道
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...