前言:
而今小伙伴们对“java中的new和c的new”大约比较珍视,小伙伴们都需要学习一些“java中的new和c的new”的相关文章。那么小编在网络上网罗了一些关于“java中的new和c的new””的相关文章,希望咱们能喜欢,同学们一起来了解一下吧!36、对象的创建和使用-内存分析
通过一个类可以实例化N个对象
实例化对象的语法:new类名()
new是java语言中的一个运算符
new运算符的作用是是创建对象,在JVM堆内存中开辟新的内存空间
方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间中
栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈
堆内存:new的对象在堆内存中存储
以下实例化两个对象:
Student s=new Student();//s保存内存地址指向堆内存的User对象。
Student stu=new Student();
Student是一个引用数据类型
s/stu是一个变量名
s/stu是一个引用
new Student()是一个学生对象
s/stu是一个局部变量【在栈内存中存储】
什么是对象?new运算符在堆内存中开辟的内存空间称为对象
什么是引用?引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址
new Student()是一个学生对象
java语言中,程序员不能直接操作堆内存,java中没有指针,不像c语言。
java语言中,程序员只能通过“引用”去访问堆内存中对象内部的实例变量。
*访问实例变量的语法格式
-读取数据:引用.变量名(引用.变量名.变量名....)
-修改数据:引用.变量名=值(引用.变量名.变量名....)
局部变量在栈内存中存储
成员变量中的实例变量在堆内存的java对象内部存储
实例变量是一个对象一份,100个对象有100份。
对象级别的变量存储在java对象的内部,必须先有对象,通过对象才能访问实例变量,
不能直接通过"类名"访问
37、JVM内存空间分析
*JVM(java虚拟机)主要包括三种内存空间:分别是栈内存、堆内存、方法区内存。
*堆内存和方法区内存各有一个,一个线程一个栈内存。
*方法调用时,该方法所需的内存空间在栈内存中分配,称为压栈。方法执行结束之后,该方法所属的内存空间释放,称为弹栈。
*栈中主要存储方法体中的局部变量。
*方法的代码片段以及整个类的代码片段都被存储到方法区内存中,在类加载的时候这些代码片段会载入。
*在程序执行过程中使用new运算符创建java对象,存储在堆内存中,对象内部有实例变量,所以实例变量存储在堆内存中。
*变量分类:
-局部变量【方法体中声明】
-成员变量【方法体外声明】:
*实例变量【前边修饰符没有static】
*静态变量【前边修饰符有static】
*静态变量存储在方法区内存中【必背】
*三块内存中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存。
*垃圾回收器【自动垃圾回收机制、GC机制】什么时候考虑将某个java对象的内存回收?
-当堆内存中java对象成为垃圾数据的时候,会被垃圾回收器回收。
-什么时候java中的对象会成为垃圾呢?
-没有更多的引用指向它的时候?
-这个对象无法被访问,因为访问对象只能通过引用方式访问
*空引用访问“实例”相关的数据一定会出现空指针异常。
*每一个类都可以编写主方法。但是一般情况下,一个系统只有一个入口中最多只能有一个主方法,
所以主方法一般写一个。
38、关于java的集成开发环境(简称:IDE)
*什么是集成开发环境?
-集成开发环境可以让软件开发变得简单、更高效。
-没有IDE工具:
-需要安装JDK、需要配置环境变量、需要手动的将java源文件编译成class字节码文件。
-java源程序出错之后还没有提示。
-没有自动提示功能等。
-有IDE工具:
-不需要独立安装JDK【IDE已集成】
-不需要手动配置环境变量
-不需要使用javac命令对java源文件进行编译。
-并且java源程序编写语法错误马上提示。
-使用IDE工具很多代码自动生成,不需要手动输入...
*java有哪些比较牛的IDE呢?
*eclipse(myeclipse)【使用者最多,由IBM研发】
*Intallij IDEA【上升的趋势】
*NetBeans
*JBuilder
......
标签: #java中的new和c的new