龙空技术网

JavaSE基础知识(十四)

软件工具迷 89

前言:

而今小伙伴们对“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