三目表达式:
“三目条件表达式”,语法格式:
- x ? y : z
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
举例:
- int score = 80; int x = -100;
- String type = score < 60 ? "不及格" : "及格";
- int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);
- System.out.println("type= " + type);
- System.out.println("flag= "+ flag);
结果:
- type= 及格 flag= -1
控制语句:
条件语句 - 根据不同条件,执行不同语句。
- if
- if .. else
- if .. else if
- if .. else if .. else if .. else
- switch
循环语句 – 重复执行某些动作
- for (JDK1.5语法)
- while
- do .. while;
分支语句IF
- if
- if .. else ..
- if .. else if ..
- if .. else if .. else if ..
- if .. else if .. else if .. else
- 只有一句需要执行的语句时,可以省略 { },但是不推荐省略
- 小心不要在if后面加 ;
分支语句switch
- switch() {
- case xx : ….
- case xx : ….
- default: ….
- }
- 小心case穿透,推荐使用break语句 多个case可以合并到一起
- default可以省略,但不推荐省略
- Switch的值类型是:byte short int String 枚举 char
需求练习:
- 做练习:
- 电脑输入自己的:名字,性别,出生年,身高,体重。
- 返回电脑自动返回:
- 库里 男 1988年出生,今年27 身高:191.1cm 体重:83.9kg
- 您的体重完整正常or偏重注意瘦身or注意加强营养。
- 男性:身高(厘米)-105= 标准体重(千克),
- 女性:身高(厘米)-100= 标准体重(千克)
While循环 & do while 循环
- while 语句为如下形式:
- while(逻辑表达式){ 语句; … ; }
- 执行过程: 先判断逻辑表达式的值。
- 若=true.则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止
示意图:
do while
- do while 语句为如下形式:
- do { 语句; … ; } while(逻辑表达式);
- 执行过程:先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循环。
示意图
for 循环语句
- for 语句为如下形式:
- for(表达式1; 表达式2; 表达式3){ 语句; … ; }
- 执行过程 首先计算表达式1,接着执行表达式2,若表达式2的值 = ture,则执行语句,接着计算表达式3,再判断表达式2的值;
- 依此重复下去,直到表达式2的值=false
- for语句中三个表达式都可以省略 JDK1.5新补充的for语法(后面课程中补充,数组)
练习:
课 堂 练 习 编写程序,用一个 for 循环计算1+3+5+7 + ……+ 99的值,并输出计算结果。(OddSum.java)
/**
* 100以内的奇数和
*/
public class OddSum{
public static void main(String[] args){
int sum = 0;
//for循环
for(int i=1;i<=100;i+=2){
System.out.println("当前的数字是:"+i);
sum +=i;
}
System.out.println("总和是:"+sum);
}
}
break & Continue 语句
break 语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环;例如:
public class Test {
public static void main(String args[]) {
int stop = 4;
for (int i = 1; i <= 10; i++) {
//当i等于stop时,退出循环
if (i == stop) break;
System.out.println(" i= " + i);
}
}
}
continue 语句用在循环语句体中,用于终止某次循环过程,跳过循环体中 continue 语句下面未执行的循环,开始下一次循环过程;例如:
public class Test {
public static void main(String args[]) {
int skip = 4;
for (int i = 1; i <= 5; i++) {
//当i等于skip时,跳过当次循环
if (i == skip) continue;
System.out.println("i = " + i);
}
}
}
循环代码练习:
- 输出1~100内前5个可以被3整除的数。
// 输出1~100内前5个可以被3整除的数。
public class Test {
public static void main(String args[]){
int num = 0, i = 1;
while (i <= 100) {
if (i % 3 == 0) {
System.out.print(i + " ");
num++;
}
if (num == 5) {
break;
}
i++;
}
}
}
- 输出101~200内的质数,
//输出101~200内的质数,
public class Test {
public static void main(String args[]) {
for (int i=101; i<200; i+=2) {
boolean f = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
f = false;
break;
}
}
if (!f) {continue;}
System.out.print(" " + i);
}
}
}
初步了解:Java中的方法
- Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,声明格式:
- [修饰符1 修饰符2 …] 返回值类型 方法名(形式参数列表){
- Java语句;… … …
- }
- 形式参数:在方法被调用时用于接收外界输入的数据。
- 实参:调用方法时实际传给方法的数据。
- 返回值:方法在执行完毕后返还给调用它的环境的数据。
- 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
- Java语言中使用下述形式调用方法:对象名.方法名(实参列表)
- 实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,
- return 语句终止方法的运行并指定要返回的数据。
- Java中进行方法调用中传递参数时,遵循值传递的原则:
- 基本类型传递的是该数据值本身。引用类型传递的是对对象的引用,而不是对象本身 。
递归调用
递归简单来说呢就是:方法自身调用自身
代码案例:
打印99乘法表
源码,补码,反码
- 概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数。
- 正数补码为其本身;
- 负数补码为其绝对值各位取反加1;
- 例如:
- +21,其二进制表示形式是00010101,则其补码同样为00010101
- -21,按照概念其绝对值为00010101,各位取反为11101010,再加1为11101011,即-21的二进制表示形式为11101011
补充内容
步骤:
- byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为01111111 十进制表示形式为127
- 最大正数是01111111,那么最小负是10000000(最大的负数是11111111,即-1)
- 10000000是最小负数的补码表示形式,我们把补码计算步骤倒过来就即可。10000000减1得01111111然后取反10000000 因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值,而10000000的十进制表示是128,所以最小负数是-128
- 由此可以得出byte的取值范围是-128到+127
- 说明:各个类型取值范围的计算方法与此大致相同,感兴趣的同学可以自己试着计算
补充内容
- 补充(给非计算机专业的同学扫下盲):
- 在计算机内,定点数有3种表示法:原码、反码和补码
- [原码]就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
- [反码]表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
- [补码]表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。