您的位置:首页 > 其它

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) {
//
//	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐