0.回顾

1.算数运算符

+、-、*、/、%

2.关系运算符

、<、>=、<=、==、!= 返回值是 true 或者 false

3.逻辑运算符

&&、|| 、! 、&、|

4.位运算 (了解)

只用于二进制
&、|、^

5.三元运算符

表达式 ? “值1” : “值2”
可以私用 条件判断替代

6 条件判断 (重点)

语法 :
if(表达式) {
code //代码
}

if(表达式 ){
//代码
}else {
//代码
}

if(表达式) {
//代码
}else if(表达式){
//代码
} …..
else {
//代码
}

//嵌套判断

if(表达式){
//代码
if(表达式) {
//代码
if(表达式) {
//代码

}
}else {

if(表达式){
//代码
}
}
}
//嵌套判断 最好不超过三层

一、随机数

在Java中随机的获取一个数字 (整数和浮点数) Random
public class Test01_随机数 {
public static void main(String[] args) {
//创建一个随机数的对象
Random random = new Random();
//获取随机数 使用 random对象 获取一个任意的一个 int类型的值
/
random.nextInt(); : 获取任意一个int 类型的随机数
/
int num1 = random.nextInt();
System.out.println(num1);
//random.nextLong(); 返回的是一个 long类型的随机数
long num2 = random.nextLong();
System.out.println(num2);

//获取一个浮点数 float [0.0 ,1.0)
float num3 = random.nextFloat();
System.out.println(num3);
//获取一个 浮点数 double [0.0,1.0)
double num4 = random.nextDouble();
System.out.println(num4);

//以上取出的值 对于实际开发 没有太大意义

//获取 1—10之间的随机数 [0,10)
int x = random.nextInt(10);
System.out.println(x);

//获取 [0,100)
int y = random.nextInt(100);
System.out.println(y);

//创建一个 [0,10) 之间的随机数 一旦第一次创建出来 以后每次执行都获取相同值
/

在创建Random对象的时候 ,要给与一个种子 ,创建随机数的时候 使用这个种子创建
Random ran = new Random(long seed); 里面的参数 只要是long类型 就可以
*/
Random ran = new Random(1);
int z = ran.nextInt(10);
System.out.println(“z—->”+z);
}
}
String类补充两个方法:
public class Test02_String {

public static void main(String[] args) {
//创建一个字符串
String s = “abcdefghijklmnhkgfkhtdht”;
//1.告诉我 这个字符串有多少个字符 意思就字符串的长度 length()
int len = s.length();
System.out.println(s+”的长度是—“+len);

//取出第三个字符 charAt(int index)
char c = s.charAt(2);
System.out.println(c);

//取出 字符串 s 的最后一个字符
char c1 = s.charAt(s.length()-1);
System.out.println(c1);
}
}

二、循环迭代

循环:不断的重复做 相同的事情,或做相似的事情
Java中提供了以下三种循环结构

1. for循环

//打印十次 我爱中国
public class Test03_For01 {
public static void main(String[] args) {
System.out.println(“我爱中国!”);
System.out.println(“我爱中国!”);
System.out.println(“我爱中国!”);
System.out.println(“我爱中国!”);
System.out.println(“我爱中国!”);
System.out.println(“我爱中国!”);
System.out.println(“我爱中国!”);
System.out.println(“我爱中国!”);
System.out.println(“我爱中国!”);
System.out.println(“我爱中国!”);
}
}
向上述这样的代码,重复的执行,就可以使用Java提供的循环语法完成.
语法 :
for(初始值 ; 关系表达式 ; 迭代步长 ){
//代码
}
执行步骤 :

  1. 赋值初始值
  2. 在表达式中判断初始值 如果满足条件 执行 循环体(代码)
  3. 执行循环体
  4. 执行迭代步长

循环的执行 : 1234 234 234 234 234 234 知道关系表达式 不满足条件 结束执行
day06 - 图1
随堂练习 :循环打印 1—10数字
思考题 :打印 1 3 5 7 9
public class Test03_For01 {
public static void main(String[] args) {

  1. for (int i = 0; i < 10; i++) {<br /> System.out.println("我爱中国!");<br /> }
  2. System.out.println("================");
  3. for (int i = 1; i <= 10; i++) {
  4. System.out.println("当前数据时候--->" + i);<br /> }
  5. System.out.println("=========================");<br /> for (int i = 1; i <= 10; i++) {<br /> if (i % 2 != 0) {<br /> System.out.println(i);<br /> }<br /> }<br /> System.out.println("=========================");<br /> // 每循环一次 i的步长 加2<br /> for (int i = 1; i <= 10; i += 2) {<br /> System.out.println(i);<br /> }<br /> System.out.println("=======================");<br /> // 打印出 1---100之间 能被7整除的数据<br /> for(int i=1;i<=100;i++){<br /> if(i % 7 == 0){<br /> System.out.print(i+" ");<br /> }<br /> }<br /> System.out.println("\n");<br /> for(int i=7;i<=100;i+=7){<br /> System.out.print(i +" ");<br /> }<br /> } <br />}<br />public class Test04_For02 {<br /> <br /> public static void main(String[] args) {<br /> // 打印出 1---100之间 能被7整除的数据 统计总共有几个能被7整除的数据<br /> // 每打印7 个数字 就换行<br /> //保存能被7整除的个数<br /> int count = 0;<br /> <br /> for(int i=7 ;i<=100;i+=7){<br /> //当打印第八个数字的时候 开始换行<br /> if(count == 7){<br /> System.out.println();<br /> }<br /> System.out.print(i+" ");<br /> count++ ;<br /> }<br /> System.out.println(); <br /> //System.out.println();<br /> System.out.println("能被7整除的数据有【"+count+"】个");<br /> <br /> }<br />}<br />public class Test05_For03 {<br /> public static void main(String[] args) {<br /> //1.打印 10 9 8 ..1<br /> for(int i=10;i>0;i--){<br /> System.out.print(i+" ");<br /> }<br /> System.out.println();<br /> //2.计算 1+2+3+4+...+100 的和 <br /> int sum = 0;<br /> for(int i=1;i<=100;i++){<br /> sum += i;//sum = sum +i;<br /> }<br /> System.out.println("1+2+3+...+100 的和是:"+sum);<br /> // 计算 1+3+5+...+99 计算 2+4+6+...+100 <br /> <br /> //3.计算1---100 之间能7整除的数据之和 <br /> int all = 0;<br /> for(int i=7;i<=100 ;i+=7){<br /> all += i;<br /> }<br /> System.out.println("1---100 之间能7整除的数据之和是:"+all);<br /> <br /> // 有这样一个字符串 String s = "HelloWorld"; 把字符串S大小写 取反 hELLOwORLD<br /> String s = "HelloWorld";<br /> String str = "" ; //保存处理后的字符串<br /> for(int i=0;i<s.length();i++){<br /> char c = s.charAt(i);<br /> //System.out.print(c +" ");<br /> if(c >= 'A' && c <= 'Z'){<br /> c = (char)(c + 32);<br /> str += c ;<br /> }else if(c >= 'a' && c <= 'z'){<br /> c = (char) (c - 32);<br /> str += c;<br /> }<br /> }<br /> System.out.println(str);<br /> <br /> //1. 计算 5*4*3*2*1 计算 一个数字的阶乘 <br /> //在输出的时候 5*4*3*2*1=120<br /> int m = 1; //存储我的阶乘的结果<br /> String result = ""; //存储数据<br /> for(int i=10;i>0;i--){<br /> //求乘积<br /> m*=i;<br /> //ping字符串<br /> if(i !=1){<br /> result += i +"*";<br /> }else {<br /> result += i;<br /> }<br /> }<br /> System.out.println(result+"="+m);<br /> }<br />}<br />**循环的退出:**<br />在循环中,我们可以选择在任何时候 ,退出这个循环,它使用用两个关键词:
  • break 和 continuepublic class Test06_循环退出 {

    public static void main(String[] args) {
    //到 5 就结束
    for(int i=0;i<10;i++){
    if(i == 5){
    break; //跳出当前循环 越过循环 执行 后面的代码
    }
    System.out.println(i);
    }

    System.out.println(“蜗牛学院!!!”);

    //不需要打印 5 其他的数据 我都要
    for(int i =0 ;i<10 ;i++){
    /if(i != 5){
    System.out.println(i);
    }
    /
    if(i == 5) {
    continue ; //终止 本次循环 继续下一次循环
    }
    System.out.print(i + “ “);
    }
    }
    }

循环的变体 :
语法 :
for(初始值 ; 表达式 ; 步长){
//循环体
}

// 初始值 ; 表达式 ; 步长 都不设置 死循环 不允许出现
for(;;){
System.out.println(“蜗牛学院!!!!”);
}

//如果出现上述死循环 我们要给予循环跳出的条件
public class Test07循环变体 {
public static void main(String[] args) {

//死循环
/for(;;){
System.out.println(“蜗牛学院!!!!”);
}
/

int index = 0;
for(;;){
index++ ;
//设置循环终止的条件
if(index > 10){
break ;
}
System.out.println(index);
}
}
}
int i = 0;
for(;;i++){
if(i == 8){
break ;
}
System.out.println(i);
}
方法 :
一些代码的组合,这些组合的为了完成一个功能 ,并且给这些组合的代码 起个名字 , 方法本身是不能执行的(除了main方法),
方法只有被调用 才可以执行 ,一般是在 main方法中调用
方法语法 :
/
返回值 :根据方法功能设置 如果这个方法 没有返回值 设置 void
如果有返回值 :根据不同的数据类型 设置返回值
返回的是 int类型的数据 返回值 :int
参数 :参数 也是根据方法的功能是否需要参数 进行设置
/
public static 返回值 方法名 (参数…) {
//代码
}
方法的定义是在类中 ,绝对不能在方法中定义方法 ,Java不支持
如果有返回值 一定要是用 return 返回 并且返回对应的类型
没有返回自 ,也没有参数的方法调用:
public class Test08
方法的定义和使用 {

public static void main(String[] args) {
//调用 sum方法
sum();
}
//定义一个方法 计算 1+2+3+..100 的和
//此方法 没有返回值 也没有参数
public static void sum(){
int sum = 0; //存储数据的和

for(int i=1;i<=100;i++){
sum += i;
}

System.out.println(“1+2+3+…+100=”+sum);
}
}
设置有参数 ,并且有返回值的方法:
public class Test08方法的定义和使用 {

public static void main(String[] args) {
//调用 阶乘的 方法
long m = jiecheng(5);
System.out.println(m);
}

//计算一个数字的阶乘 并且把计算的结果返回
/
一个方法 如果设置了返回值 必须返回
/
public static long jiecheng(int num){
long all = 1L;

for(int i=num ;i>0;i—){
all
= i;
}

return all;
}
}
随堂练习 :
//设计一个方法,计算三个int类型的数据的平均值 并且返回
public class Test08
方法的定义和使用2 {

public static void main(String[] args) {
//调用 avg方法
double a = avg(10,20,30);
System.out.println(a);

System.out.println(“======”);
//第二次调用
double d1 = avg(5,25,55);
System.out.println(d1);

System.out.println(“======”);
//第三次调用
double d2 = avg(1,20,99);
System.out.println(d2);
}
//设计一个方法,计算三个int类型的数据的平均值 并且返回
public static double avg(int x,int y,int z){
int sum = x + y + z ;

double avg = sum / 3.0 ;

return avg ;
}
}
// 设计一个方法 计算 两个 int类型的数据之和 并且 返回
//设置一个方法 计算 两个数据的 乘积 并且返回
回顾 :
for 循环 :
语法 :
for(初始值 ; 判断表达式 ; 步长) {
// 代码 循环体

}
//一定有跳出的条件
跳出循环的方式 :

  • break
  • return return 不但能跳出循环 还可以终结整个代码的执行 在程序中只要遇到 return 代码就执行结束了

方法 : 为了封装一个功能 ,供别人调用 ,自己不能执行
方法的组成 :
public static 返回值 方法名字(参数 …){
//代码 方法的实现

return Xxxx ;// 只有当次方法 具有返回值的时候 才可以写 return
}
返回值类型 :
1.没有返回 定义成 void
2. 有返回值 定义返回值的类型 基本类型 和 引用类型 都可以做为 返回值
方法名字 :标识符 按照小驼峰标识
参数 :不定的 可以有 也可以没有,取决于 方法的功能 只定义类型 形式参数
方法的返回值 :根据方法返回值类型定义

2.while循环

是循环的一种结构,可以循环执行操作
语法 :
//判断表达式 退出循环的条件 while(判断表达式){ //循环体 }
案例 :

  1. 循环打印 十次 “AAAAAAAAAAAAAAAAAAAA”public class Test01_while循环 { public static void main(String[] args) { int index = 0 ; //循环的标识 while(index < 10){ System.out.println(“AAAAAAAAAAAA”); index++ ; //每循环一次 index +1 } } }
  2. 利用while循环 计算 1+2+3+…..+100的和public static int addSum(){ int sum = 0 ; int index = 1; while(index <= 100){ sum += index; index++; } return sum ; }
  3. 一个循环求出100内的奇数和、偶数和public static void test01(){
    int index = 1;

    int evenSum = 0 ; //偶数
    int oddSum = 0; //奇数

    while(index <= 100){
    if(index % 2 != 0){
    oddSum += index ;
    }else {
    evenSum += index;
    }

    1. index++ ;<br /> }

    System.out.println(“偶数:”+evenSum +”—-奇数:”+oddSum);
    }

  4. 案例代码 :public class Test02_wihle循环 {
    /
    *欢迎使用蜗牛学生管理系统**
    1.显示学生信息
    2.添加学生信息
    3.修改学生信息
    4.删除学生信息
    0.退出系统
    /
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    while(true){
    //初始化菜单
    initMenu();
    System.out.println(“亲个输入你的操作:”);
    String op = sc.next();

    //判断输入的操作
    switch (op) {
    case “1”:
    System.out.println(“查询学生信息成功!”);
    break;
    case “2”:
    System.out.println(“添加学生数据成功!”);
    break;
    case “3”:
    System.out.println(“修改学生数据成功!”);
    break;
    case “4”:
    System.out.println(“删除学生数据成功!”);
    break;
    case “0”:
    //系统退出
    System.out.println(“bye,bye!”);
    System.exit(0); //0 正常退出
    break;
    default:
    System.out.println(“数据输入错误,Bye,Bye!”);
    System.exit(0);
    break;
    }
    }
    }
    /
    初始化菜单
    /
    public static void initMenu(){
    System.out.println(“*
    欢迎使用蜗牛学生管理系统**“);
    System.out.println(“ 1.显示学生信息” );
    System.out.println(“ 2.添加学生信息” );
    System.out.println(“ 3.修改学生信息” );
    System.out.println(“ 4.删除学生信息” );
    System.out.println(“ 0.删除学生信息” );
    }
    }

    3. do{} while循环

    语法 :
    do { //代码逻辑 //循环结束标识的操作 }while(判断表达式)
    do {} wihle() 循环的特点 ,无论条件是否成立 ,先执行一次在说
    for 和 while :条件必须成立 否则 一次都不会执行
    public class Test03_while循环 { public static void main(String[] args) { /do{ System.out.println(“AAAAAAAAAAAA”); }while(1 > 10); / /int i = 1; while(i > 10){ System.out.println(“AAAAAAAAAAAAAA”); }/ //计算 100以内能被7整除 数据的和 int sum = 0; int index = 7 ; do{ if(index % 7 == 0){ sum += index; } index += 1; }while(index <= 100); System.out.println(sum); } }

    4.嵌套循环

    在循环中 ,在进行循环
    day06 - 图2
    package com.woniu.day05;

public class Test04嵌套循环 {
/
**
**
**
**
**

**



**


/

public static void main(String[] args) {

//printStar1(5,10);

printStar2(5,10);
}

//空心长方形
public static void printStar2(int row ,int col){

for(int i=1;i<=row;i++) {
//第一行和最后一行 要单独抽出来
if(i == 1 || i == row){
for(int j=1;j<=col;j++){
System.out.print(“
“);
}
System.out.println();
}else {
for(int k=1;k<=col;k++){
//判断是否是 第一列 或最后一列
if(k == 1 || k == col){
System.out.print(““);
}else {
System.out.print(“ “);
}
}

System.out.println();
}
}
}

//实心长方形
public static void printStar1(int row ,int col){
for(int i=1;i<=row;i++){

for(int j=1;j<=col;j++){
System.out.print(“
“);
}

System.out.println();
}
}

}
public class Test04
嵌套循环 {
/



**
*
**
*
**
*
**



**
**




/

public static void main(String[] args) {

/for(int i=1;i<=10;i++){
//内存循环的结束条件 和 i相关
for(int k=1;k<=i;k++){

System.out.print(“
“);
}

System.out.println();
}/
printStar();
}


public static void printStar(){

for(int i=0;i<5;i++){
for(int j=1;j<=i;j++){
System.out.print(“
“);
}
System.out.println();
}

for(int i=0;i<5;i++){
for(int k=1;k<=5-i;k++){
System.out.print(““);
}
System.out.println();
}
}
}
打印九九乘法表 :
day06 - 图3
public class Test05_嵌套循环 {
public static void main(String[] args) {
multiTab();
}

public static void multiTab(){
for(int i=1;i<=9;i++) {

for(int j=1;j<=i;j++) {

System.out.print(i +”
“ + j +”=”+(ij) +”\t”);
}

System.out.println();
}
}
}
1.我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
鸡翁 :公鸡 五个钱
鸡母 :母鸡 三个钱
鸡雏 :小鸡 一个钱 三只
现在有一百个钱 ,能买几只公鸡 ,几只母鸡 ,几只小鸡 ,总数要买一百只鸡 ?
假设 公鸡 = x ,母鸡 = y 小鸡 = z
x + y + z = 100;
5x + 3y + z/3 = 100;
z % 3 == 0
public class Test06_嵌套循环 {


public static void main(String[] args) {

for(int i=0;i<=20;i++) {
for(int j=0;j<=33;j++){
for(int k=0;k<=100;k++){
if((i + j + k) == 100 && (k%3 == 0) && (5
i + 3*j + k/3) == 100) {
System.out.println(“公鸡:”+i +”==母鸡:”+j +”==小鸡 :”+k);
}
}
}
}
}
}
嵌套循环 一般不要超过三层 ,嵌套循环效率较低

3 x 37 = 111
6 x 37 = 222
9 x 37 = 333
12 x 37 = 444
15 x 37 = 555
18 x 37 = 666
21 x 37 = 777
24 x 37 = 888
27 x 37 = 999

1 x 9 + 2 = 11
12 x 9 + 3 = 111
123 x 9 + 4 = 1111
1234 x 9 + 5 = 11111
12345 x 9 + 6 = 111111
123456 x 9 + 7 = 1111111
1234567 x 9 + 8 = 11111111
12345678 x 9 + 9 = 111111111


1 x 8 + 1 = 9
12 x 8 + 2 = 98
123 x 8 + 3 = 987
1234 x 8 + 4 = 9876
12345 x 8 + 5 = 98765
123456 x 8 + 6 = 987654
1234567 x 8 + 7 = 9876543
12345678 x 8 + 8 = 98765432
123456789 x 8 + 9 = 987654321


0 x 9 + 8 = 8
9 x 9 + 7 = 88
98 x 9 + 6 = 888
987 x 9 + 5 = 8888
9876 x 9 + 4 = 88888
98765 x 9 + 3 = 888888
987654 x 9 + 2 = 8888888
9876543 x 9 + 1 = 88888888
98765432 x 9 + 0 = 888888888
987654321 x 9 - 1 = 8888888888
9876543210 x 9 - 2 = 88888888888