基础
Java虚拟机在执行Java程序时会将内存划分为若干个不同的数据区域,主要有
- PC寄存器(Program Counter Register):存储Java虚拟机正在执行的字节码指令的地址
- Java虚拟机栈(Java Virtual Machine Stack):存储栈帧
- 堆(Heap):存储GC所管理的各种对象
- 方法区(Method Area):存储每一个类的结构信息(比如字段和方法信息、构造方法和普通方法的字节码等)
- 本地方法栈(Native Method Stack):用来支持native方法的调用(比如用C语言编写的方法)
1.Java的数据类型有2种
- 基本类型:byte / char / short / int / long / float / double / boolean
- 引用类型:数组,对象,集合 等
//基本数据类型
public int age;
protected float weight;
float height;
private float salary;
public static int count;
//数组
String[] arr = {"1","2","3"};
int[] arr2 = new int[3];//为数组分配存储空间
int[] arr3 = new int[]{1,2,3};
2.方法
-
栈帧
- 栈帧随着方法的调用而创建,随着方法结束而销毁,存储了方法的局部变量信息。
-
递归调用
- 如果递归调用没有终止,将会一直消耗栈空间
- 最终导致栈内存溢出(Stack Overflow)
- 所以必需要有一个明确的结束递归的条件;也叫做边界条件,递归基
-
方法
//可变参数 可变参数,必须放最后
public static int sum(int... numbers) {
if (numbers == null) {
return 0;
}
int result = 0;
for (int num :numbers) {
result += num;
}
return result;
}
/**
* 方法重载 一个类中可以写多个相同方法名的方法
* 与返回值无关
* 1.多个方法在同一个类中
* 2.多个方法具有相同的方法名
* 3.多个方法的参数不相同,类型不同或者数量不同
* 即方法签名(方法名+参数)不同
* */
public static int sum(int a,int b) {
return a+b;
}
public static double sum(double a,double b) {
return a+b;
}
3.判断
public static void score(){
//if else
boolean b = false;
if (b){
System.out.println(1);
}else {
System.out.println(0);
}
//switch
int number1 = 1;
switch (number1) {
case 1:
System.out.println(number1);
break;
case 2:
System.out.println(2);
break;
default:
break;
}
4.循环
public static void score(){
//while
int i = 10;
while (i>0) {
System.out.println(i);
i--;
}
//do while
do {
System.out.println(i);
i++;
}while (i>3);
//for
for (int j = 5; j < 10; j++) {
System.out.println(j);
j++;
}
//遍历数组
String[] strs = {"aaa", "bbb","ccc","ddd"};
for (String objstr:strs){
System.out.println(objstr);
}
}