JVM内存结构,匿名对象的使用,方法的重载
2019-05-25 21:14
260 查看
#JVM内存结构
编译完源程序以后,生成一个或多个字节码文件。
我们使用JVM中的类的加载器和解释器对生成的字节码文件进行解释运行。意味着,需要将字节码文件对应的类加载到内存中,涉及到内存解析。
虚拟机栈,即为平时提到的栈结构。我们将局部变量存储在栈结构中
堆,我们将new出来的结构(比如:数组、对象)加载在对空间中。补充:对象的属性(非static的)加载在堆空间中。
方法区:类的加载信息、常量池、静态域
#2类的成员之二:
##方法(method)
package atwanyi.java; /* * 一、理解“万事万物皆对象” * 1.在java语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构 * >Scanner,String等 * >文件,File * >网络资源:URL * 2.涉及到java语言与前端Html、后端的数据库交互时,前后端的结构在Java层面交互时, * 都体现为类、对象。 * * 二、内存解析的说明 * 1.引用类型的变量,只可能存储两类值:null或地址值(含变量的类型) * * 三、匿名对象的使用 *1.理解:我们创建的对象,没有显示的赋给一个变量名。即为匿名对象 *2.特征:匿名对象只能调用一次 *3.使用:如下 */ public class InstanceTest { public static void main(String[] args) { Phone p = new Phone(); // p = null; System.out.println(p); p.sendEmail(); p.playGame(); //匿名对象 // new Phone().sendEmail(); // new Phone().playGame(); new Phone().price = 1999; new Phone().showPrice();//0.0 //******************* PhoneMall mall = new PhoneMall(); // mall.show(p); //匿名对象的使用 mall.show(new Phone()); } } class PhoneMall{ public void show(Phone phone) { phone.sendEmail(); phone.playGame(); } } class Phone{ double price;//价格 public void sendEmail() { System.out.println("发送邮件"); } public void playGame() { System.out.println("玩游戏"); } public void showPrice() { System.out.println("手机价格为:" + price); } }
##方法的重载
package atwanyi.java1; /* * 方法的重载(overload)loading... * * 1.定义:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 * * "两同一不同":同一个类、相同方法名 * 参数列表不同:参数个数不同,参数类型不同 * * 2.举例: * Arrays类中重载的sort() / binarySearch() * 3.判断是否是重载: * 跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系! * * 4.在通过对象调用方法时,如何确定某一个指定的方法: * 方法名---->参数列表 */ public class OverLoadTest { public static void main(String[] args) { OverLoadTest test = new OverLoadTest(); test.getSum(1, 2); } //如下的四个方法构成了重载 public void getSum(int i,int j) { System.out.println("1"); } public void getSum(double d1,double d2) { System.out.println("2"); } public void getSum(String s,int i) { System.out.println("3"); } public void getSum(int i,String s) { System.out.println("4"); } // public int getSum(int i,int j){ // return 0; // } // public void getSum(int m,int n) { // // } // private void getSum(int i,int j) { // // } }
相关文章推荐
- JAVA 面向对象 基础概念,匿名对象的使用,方法的重载
- 牛客网Java刷题知识点之匿名对象、匿名对象的内存结构图、匿名对象的应用场景、匿名对象的使用、匿名对象的简单例子、匿名对象要注意的事项
- 面向对象——OOP(一)(落地法则、局部变量与全局变量、方法及重载、构造器及重载、代码块、内部类及匿名内部类、对象的创建与使用)
- 使用计算总内存大小的方法确定jvm中为对象分配的存储空间大小
- JProfiler的详细使用介绍(JVM对象内存线程监测工具)【转】
- HotSpot JVM 对象的内存结构和对象成员的堆内存分配原则
- 匿名对象与构造方法的使用
- Java虚拟机--JVM内存结构 VS Java内存模型 VS Java对象模型
- JVM学习03_new对象的内存图讲解,以及引出static方法
- JProfiler的详细使用介绍(JVM对象内存线程监测工具)
- 并发2--java内存模型&jvm内存结构&java对象模型
- 对象的内存结构及占用空间的计算方法
- java 对象占用内存查看 以及JVM级别 方法修改等
- JVM --- JVM的内存结构以及对象的创建和内存布局
- Java基础突击第三天0007(构造方法,匿名对象,this的使用)
- Java学习笔记(温故知新)2——方法、方法的重载、递归结构、new对象(实例化对象)
- 通过软引用和弱引用提升JVM内存使用性能的方法(面试时找机会说出,一定能提升成功率)
- 在AIX上用IBM的JVM,内存溢出时默认地会产生javacore文件(关于cpu的)和heapdump文件(关于内存的)。手动产生堆栈文件的方法是使用kill -3
- JAVA常见错误处理方法 和 JVM内存结构
- java 对象占用内存查看 以及JVM级别 方法修改等