Java 表达式、语句、代码块

发布时间:2026/6/19 4:21:04
Java 表达式、语句、代码块 一、核心概念区分一句话分清表达式Expression能算出一个值的代码片段有返回结果语句Statement完整执行单元完成一件事以;结尾不一定有返回值代码块Block{}包裹的一组语句把多条语句打包成整体拥有独立作用域二、表达式 Expression1. 定义任何可以求值、产生结果的代码一定有返回值可以放在赋值、判断、输出等位置。2. 常见分类1字面量表达式10;// 整数表达式值103.14;// 浮点数true;// 布尔hello;// 字符串A;// 字符2变量表达式inta5;a;// 表达式值为53运算表达式算术、关系、逻辑、位运算、三元运算a3;// 算术a0;// 关系结果true/falsea0a10;// 逻辑a1;// 位运算a5?1:0;// 三元表达式4方法调用表达式有返回值的方法调用是表达式Math.max(1,2);// 返回2属于表达式abc.length();// 返回35赋值表达式重点本身是表达式会返回赋值后的值inta;a10;// 整个表达式结果是10intba20;// 等价 int b (a20);3. 表达式不能单独当完整代码单独写a 1会编译报错加分号a 1;就变成表达式语句。三、语句 Statement1. 定义Java 最小执行单元用来完成操作以分号;结束。语句可以由表达式衍生也可以是控制流、声明、空语句。2. 分类1表达式语句最常用表达式 ;升级成语句inta10;// 赋值表达式语句a;// 自增表达式语句System.out.println(a);// 方法调用语句2变量声明语句定义变量自带分号intnum;doublepi3.14;Stringstrjava;3空语句只有一个分号什么都不做;// 示例多余空语句if(a0);{System.out.println();}4控制流语句无分号结尾自带结构if / for / while / switch / break / continue / returnif(a0){...}for(inti0;i10;i){...}while(true){...}return0;// return是语句5复合语句 代码块下一节单独讲3. 表达式 vs 表达式语句对比a5// 表达式仅求值不能单独放一行a5;// 表达式语句合法执行但丢弃结果四、代码块 Block复合语句1. 格式用大括号{ }包裹任意多条语句0条/1条/多条都可以{inta10;System.out.println(a);a;}2. 核心特性作用域代码块内定义的局部变量仅块内可见出}直接销毁publicstaticvoidmain(String[]args){intouter10;{intinner20;System.out.println(outer);// 可以访问外部变量}System.out.println(inner);// 编译报错inner已失效}3. 代码块出现的场景分支/循环后包裹多语句if(a0){System.out.println(大于0);a;}方法体本身就是代码块publicvoidtest(){// 方法块开始// 语句}// 方法块结束类中的实例代码块、静态代码块classDemo{// 实例代码块创建对象时执行{System.out.println(实例块);}// 静态代码块类加载时执行static{System.out.println(静态块);}}单独独立代码块缩小变量作用域publicstaticvoidmain(String[]args){{inttemp99;System.out.println(temp);}// temp 不可用}4. 特殊规则代码块整体算一条复合语句if/while 后面不加;块内可以再嵌套代码块多层作用域同一个块内不能重名局部变量内层块可以定义和外层同名变量变量遮蔽五、三者嵌套完整示例publicclassTest{publicstaticvoidmain(String[]args){// 1. 变量声明语句inta5;// 代码块 { }{// a 3 是表达式if(表达式)if(a3){// a * 2 表达式构成表达式语句System.out.println(a*2);aa1;// 赋值表达式语句}}}}拆解层级main方法整体是代码块if(){}又是内层代码块a 3、a * 2、a a 1都是表达式int a 5;、System.out.println(...);、aa1;都是语句六、易混易错点总结表达式一定有值语句不一定有值以;结尾表达式加分号 → 表达式语句{}包裹一堆语句 代码块复合语句整体视为一条语句局部变量作用域止于所属代码块的右大括号}if/for/while 后如果不写{}只能跟一条语句多语句必须包代码块赋值是表达式所以支持链式赋值int xyz10;