实训day03--循环,内存,数组

2018.06.06
1.switch用法
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println(“请输入一个数字”);
int a=sc.nextInt();
switch(a) {
case 1 : System.out.println(“a=1”) ; break;
default : System.out.println(“a=hah”) ; break;
}
}


2.循环
for(初始化;条件;控制){
循环体;
}
for(int i=0;i<5;i++) {
for(int j=i;j<5;j++) {
System.out.print(“*”);
}
System.out.println();
}
当不确定循环次数时,for显然不够用,用while循环。
do-while至少执行一次。
break 结束单层循环。
continue 结束单次循环。
return 结束结束循环,实际是结束方法。
for(int i=0;i<10;i++) {
if(i==2)
//continue;
break;
System.out.println(i);
}


3.方法
将有一定功能的代码片段组装起来
提高代码的重用率
方便

返回值类型 方法名称(参数类型 参数形参名称){
方法体;
return
}


4.JVM
栈 局部变量
堆 new的东西
       引用数据类型,需要用new来创建,既在堆空间分配一个地址空间,又在栈空间分配对象的类变量 。
       方法的引用参数,在栈空间分配一个地址空间,并指向堆空间的对象区,当方法调用完成后从栈空间回收。
       局部变量 new 出来时,在栈空间和堆空间中分配空间,当局部变量生命周期结束后,栈空间立刻被回收,堆空间区域等待GC回收。
        方法调用时传入的 literal 参数,先在栈空间分配,在方法调用完成后从栈空间分配。
       字符串常量在 DATA 区域分配 ,this 在堆空间分配 。数组既在栈空间分配数组名称, 又在堆空间分配数组实际的大小!
       static在DATA区域分配。
堆区:
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
2.基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。
3.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只5存放对象本身

栈区
1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令法区
方法区
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
}


5 重载
方法名相同。方法的参数类型,数量,至少有一个不一样。


6.数组
数组是存放多个相同数据类型变量的集合,是一个容器。
数组可以存储简单数据类型,也可以存储引用数据类型
必须先进行初始化,为数组元素分配内存。
int[] a = new int[4];//动态初始化
int[] b = new int[]{1,2,3,4,5};//静态初始化
=左边是在栈里分配数组名字的内存
=右边是在堆中分配4个内存。new的东西都在堆里边,分配内存

猜你喜欢

转载自blog.csdn.net/qq_32539825/article/details/80602841
今日推荐