JavaSE知识复习笔记03

JavaSE相关基础知识03


Java控制语句

  • 用于控制程序执行流程的语句或语句块
  • 条件语句
    • if switch
  • 循环语句
    • for while do...while
  • 控制语句
    • continue break

if条件语句

if (boolean exp1) {
    // do something
} else if (boolean exp2) {
    // do other thing
} else {
    // do another thing
}
  • if后的布尔表达式的真值决定了后面的代码块是否执行
    • true则执行代码块 执行结束后整个if结构也随之结束
    • false则跳过当前代码块 向下执行
      • 如果存在else结构 则执行else结构中的内容 然后整个if结构结束
      • 如果存在else-if结构 可以将else之后的if看做一整个另一个的if结构 重新执行一次上面的操作
  • elseelse-if都是可选结构 可以写也可以不写 但是else一定是整个结构的最后一个结果
  • if结构一定是第一部分 elseelse-if要紧贴其后

switch条件语句

switch (int para) {
    case value1: 
        //...
        break;
    case value1: 
    	//...
    	break;
    default:
        //...
}
  • switch语句支持int、枚举、String类型(JDK7)
  • 当给switch语句传入一个值时 会在代码块中的case字段搜寻是否存在相等的值
    • 如果存在相同值 则跳转至该行继续执行
    • 如果不存在相同值 有default行就跳转至default行 没有就跳出整个结构
    • switch语句是跳转 执行完case行后的代码不会结束 直至执行至break语句才会跳出
    • default行与beak语句都是可选的 可以不编写

for循环语句

for(int i=0; i<10; i++) { 
    // Loop Body
}
  • 语法结构 for(变量初始化语句; 循环判断语句; 变量更新语句)
  • for循环结构执行流程
    • 首先执行初始化语句 初始化变量
    • 然后进行循环判断
      • 结果为真 继续执行循环主体
      • 结果为假 跳出循环主体
    • 每执行完一次循环主体 会进行一次变量更新语句
    • 然后继续进行循环判断 执行循环主体 如此往复 直至判断结果为假或使用其他语句跳出结构才结束
  • for循环中的三个语句可以不写 但是;必须存在 例如 for( ; ; ) 代表一个死循环

while循环语句

while (boolean exp) {
    //Loop Body
}
  • while循环只根据判断表达式决定是否继续循环 条件更新手段需要自行在循环体中定义
  • 表达式为真就继续执行 为假就跳出结构

do..while循环结构

do {
    // Loop Body
} while (boolean);
  • do...while循环会先执行一次do中的代码块 然后才进行循环判断
  • 无论表达式真值为何 do代码块一定会执行
  • do...while循环体最少执行一次循环
  • 注意: while(); 中的;

continue break 控制语句

continue;
break;
  • continue语句用于循环结构中 当执行至continue语句时 循环结构会中止该轮循环 直接开启下一轮循环
  • break语句用于跳出结构
    • 例如 switch语句可以跳出switch结构 用在循环中则是终止整个循环结构
    • break语句和标签搭配可以用于跳出多层循环
// 带有标签的break 用于跳出指定循环
label1: for(int i=0; i<10; i++) {
	for(int j=0; j<10; j++) {
		if(i==5)
			break label1;
	}
}

Java程序的基本执行与简单的JVM

  • Java程序的执行
    • 程序执行永远分为两个部分 编译阶段 和 运行阶段
  • 编译阶段
    • 编译器只检测程序的语法错误 没有语法错误则编译通过
  • 运行阶段
    • 程序实际在JVM中运行时 需要根据具体运行时的对象具体分析
  • JVM在有三个主要的区域
    • 栈内存
    • 堆内存
    • 方法区
  • 堆内存
    • 用于存储实例化后的实例变量
    • 由于Java屏蔽了指针 不能像C/C++一样直接操控指针去访问堆内存中的内容 Java中需要使用引用去访问
      • 引用数据类型的变量内部其实存储的是一个内存地址 指向了堆内存中的区域
    • 只要是引用数据类型 内部具体的值都在堆内存中
  • 栈内存
    • 即程序栈 这是变化最频繁的一个区域
    • 当方法被调用时
      • 会从方法区复制代码到栈内存中 并为使用的局部变量分配内存空间
      • 方法调用的过程称作压栈
    • 当方法执行结束时
      • 占用的内存被释放
      • 方法结束时称作弹栈
  • 方法区
    • 方法区是最先存在数据的区域
    • 当类被加载至内存时
      • 会将方法全部加载到方法区中等待调用 静态变量也会被载入至方法区
  • GC垃圾回收机制 (简单描述)
    • GC垃圾回收器主要关心对堆内存的回收
    • 当堆内存中的数据没有引用指向时 GC会将其视为垃圾数据 这时GC会尝试将其回收
    • 但是GC启用的时间不确定 可以使用System.gc()方法通知GC启动(可能不启动 只是通知一下)
  • 32
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值