JVM内存结构,匿名对象的使用,方法的重载

    xiaoxiao2023-11-12  152

    #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) { // // } }
    最新回复(0)