J2SE总结(一)
程序员文章站
2022-05-12 14:19:05
...
递归:
在一个方法内部对自身进行调用;
上图中的method方法里面又调用了method方法;
Java格式:
public static void m2(int i){
if(i>3)
return;
System.out.println(i+j);
}
和C#的区别在于java的大括号在第一行结尾;
缩进Shift+Tab是一个很好用的快捷键;
三目条件运算符:
语法格式:x?y:z
x为boolean类型,x的结果为True则三目运算结果为y的值,否则为z的值;
例:
int score = 80; int x = -100;
string type = score < 60 ? "不及格" :"及格";
system.out.println("type=" + type);
80 > 60结果为False,结果为及格;
程序运行中堆和栈是如何分配的: 以一个简单程序为例:
package com.journaldev.test;
public class Memory {
public static void main(String[] args) { // Line 1
int i=1; // Line 2
Object obj = new Object(); // Line 3
Memory mem = new Memory(); // Line 4
mem.foo(obj); // Line 5
} // Line 9
private void foo(Object param) { // Line 6
String str = param.toString(); //// Line 7
System.out.println(str);
} // Line 8
}
程序执行过程:
1)main()方法线程在栈内存中创建;
2)obj和mem在堆中创建;
3)调用foo()方法时候,引用foo()方法在栈中创建;
4)第七行String在堆空间中String池中运行;
5)foo()方法在第八行结束,堆中foo()方法占用的内存块被释放;
6)第九行,main()方法结束,栈为main()方法创建的内存空间销毁;程序结束;
堆和栈的区别:
1、应用程序所有的部分都使用堆内存,然后栈内存通过一个线程运行来使用。
2、不论对象什么时候创建,他都会存储在堆内存中,栈内存包含它的引用。栈内存只包含原始值变量好和堆中对象变量的引用。
3、存储在堆中的对象是全局可以被访问的,然而栈内存不能被其他线程所访问。
4、栈中的内存管理使用LIFO的方式完成,而堆内存的管理要更复杂了,因为它是全局被访问的。
5、栈内存是生命周期很短的,然而堆内存的生命周期从程序的运行开始到运行结束
6、和堆内存比,栈内存要小的多,因为明确使用了内存分配规则(LIFO),和堆内存相比栈内存非常快。