Java基础入门第三天

Java基础语法

流程控制语句

if...else if...else if...else

多分支语法格式:

 if(条件判断){

 } else if(条件判断){

 } else if(条件判断){

 }  else {

 }

适合与多条件的判断,但是 if else过多,会导致程序的阅读性下降

优势 : 高效的优势,只要有一个if的条件判断结果是true,整体的语句结构就结束了

public static void main(String[] args) {
 int i = 99;
 //if else if的多分支
 if(i < 100) {
 System.out.println("第一个if的条件是true");
 }else if(i > 100){
 System.out.println("第二个if的条件是true");
 }else if (i == 100) {
 System.out.println("第三个if的条件是true");
 }else {
 System.out.println("所有的条件都是false");
 }
}

多分支语句的练习

需求 : 请你输入你的考试成绩,对成绩进行等级划分

90-100 : 优

80-89 : 良

70-79 : 中

60-69 : 差

<60 : 不及格

switch选择语句

程序也是进行选择的, switch语句中包含的关键字比较多

switch case default break

switch语句的格式 :

 switch (变量){
 case 常量1 :
 要执行的语句1;
 break;
 case 常量2 :
 要执行的语句2;
 break;
 case 常量3 :
 要执行的语句3;
 break;
 default:
 要执行的语句;
 break;
 }
  • 语句流程详细解释

    • switch中的变量,和case后面的常量,进行比较 (是否相同)

    • 如果和 常量1相等,执行 : 语句1, 执行break,整体switch结束

    • 如果和 常量2相等,执行 : 语句2, 执行break,整体switch结束

    • switch中的变量,和任何一个case后面的常量都不相等,执行default后面的语句, 执行break,整体switch结束

  • switch语句中的变量的数据类型有限制

    • byte short int char (JDK1.0-1.4)

    • 添加数据类型 enum 枚举 (JDK1.5)

    • 添加数据类型字符串 (JDK1.7)

    • 使用的是JDK1.8 (支持的类型 byte short int char 枚举 字符串)

public static void main(String[] args) {
     int i = 5;
     switch (i) {
     case 1:
     System.out.println("case1");
     break;

     case 2:
     System.out.println("case2");
     break;

     case 3:
     System.out.println("case3");
     break;
    ​
     default:
     System.out.println("所有case都不相等");
     break;
     }
     }

选择语句的练习

需求 : 根据输入的月份,判断是哪个季节

春季 : 3,4,5 夏季 : 6,7,8 秋季 : 9 ,10 ,11 冬季 12 , 1, 2

采用if和switch分别完成

 if(month < 1 || month > 12) {
 System.out.println("输入的月份不存在");
 }
 //季节判断  春季 : 3,4,5
 else if(month >=3  && month <=5) {
 System.out.println("春季");
 }
 //季节判断  夏季 : 6,7,8 
 else if (month >= 6 && month <=8 ) {
 System.out.println("夏季");
 }
 //季节判断  秋季 : 9 ,10 ,11
 else if (month >= 9 && month <= 11) {
 System.out.println("秋季");
 }
 //季节判断  冬季 12 , 1, 2
 else {
 System.out.println("冬季");
 }

case穿透特性

在switch的语句中,不写break,出现case的穿透性

 switch (变量){
 case 常量1 :
 要执行的语句1;
 // break;
 case 常量2 :
 要执行的语句2;
 // break;
 case 常量3 :
 要执行的语句3;
 // break;
 default:
 要执行的语句;
 //  break;
 }
case穿透.jpg

case穿透特性实现季节判断

public static void main(String[] args) {
 //键盘输入,接收月份
 Scanner sc = new Scanner(System.in);
 int month = sc.nextInt(); // 4
 //利用case穿透特性
 switch(month) {
 case 3:
 case 4:
 case 5:
 System.out.println("春季");
 break;
 case 6:
 case 7:
 case 8:
 System.out.println("夏季");
 break;
 case 9:
 case 10:
 case 11:
 System.out.println("秋季");
 break;
​
 case 1:
 case 2:
 case 12: 
 System.out.println("冬季");
 break;

 default:
 System.out.println("月份不存在");
 }
}

循环语句

循环 : 程序中的语句(代码)多次的反复的执行

使用的频率非常的高

输出10次 "HelloWorld"

System.out.println("HelloWorld"); 语句复制10次,不行

while循环

语法格式 :

while(布尔类型的表达式){
  //while的循环体
}
  • while循环的执行流程

    1. 执行布尔表达式,如果是true

    2. 执行循环体中的程序

    3. 再次执行布尔表达式,如果还是true

    4. 再次执行循环体中的程序

    5. 再次执行布尔表达式,如果是false

    6. while循环就结束了

  • 结论: 只要while中的布尔表达式结果是true,就执行循环体,直到布尔类型为false,循环结束

public static void main(String[] args) {
        int i = 1;
        while(i < 10) {
            System.out.println("while的循环体 "+i);
            //变量i 发生变化 ++
            i++;
        }
        //打印10次HelloWorld
        //j变化到10的时候,循环结束
        int j = 0;
        while(j < 10) {
            System.out.println("HelloWorld");
            j++;
        }
    }

while循环练习

  • 输出10以内的所有偶数
    public static void main(String[] args) {
        //定义变量,默认值是0, 变化到10
        int i = 0; 
        while(i <= 10) {
            //判断是不是偶数
            if(i % 2 == 0) {
                System.out.println(i + "是偶数");
            }
            i++;
        }
    }
   public static void main(String[] args) {
        //定义变量,默认值是0, 变化到10
        int i = 0;
        //变量i在循环的时候,每次+2行不?  不需要判断了
        while(i <= 10) {
            System.out.println(i + "是偶数");
            //i=i+2;
            i+=2;
        }
    }

for循环

语法格式 :

for (初始化变量 ; 条件 ; 增量){
    //for的循环主体
}
  • 循环的三个部分解释

    • 初始化变量 : 定义变量 数据类型 变量名 = 值

    • 条件 : 条件必须是布尔类型结果 true 或者 false

    • 增量 : 循环变量的变化

    • 条件 : 控制循环是否执行,条件是true,循环,条件是false结束循环

public static void main(String[] args) {
        for(int i = 0 ; i < 5 ; i++) {
            System.out.println("这里是for循环的循环体  "+i);
        }
    }
  • for循环的执行流程

    1. 执行初始化的变量. (只会执行一次)

    2. 执行条件的判断 (判断条件是false,循环直接结束), 判断条件是true

    3. 进入到for的循环体执行

    4. 执行变量的自增

    5. 执行条件的判断 (判断条件是false,循环直接结束), 判断条件是true

    6. 执行循环体

    7. 执行变量的自增

    8. 执行条件的判断 (判断条件是false,循环直接结束)

for循环实现练习

  • for循环实现0-10之间的偶数
    public static void main(String[] args) {
        //利用for循环中的变量
        for(int i = 0 ; i <= 10 ;i+=2) {
            System.out.println(i +"是偶数");
        }
    }
  • for实现求和计算 1 + 2 + 3 +......+ 100 = 5050 (高斯算法)
    public static void main(String[] args) {
        //定义变量int类型,保存求和后的结果
        int sum = 0;
        //进行1-100之间的循环
        for(int i = 1 ; i <= 100 ;i++) {
            //求和计算, sum变量保存求和后的结果
            sum = sum + i; 
        }
        System.out.println(sum);
    }

do...while

格式 :

 do{
    //循环主体
 }while(条件判断);
  • 循环执行流程

    • 判断while中的循环条件

    • 如果条件是true,执行循环体

    • 如果条件是false,结束循环

  • 注意 : do ... while 无条件先执行一次循环体

break和continue

  • break : 终止 作用就是终止循环, 在循环中遇到break,循环就结束,只能在循环中或者switch出现
    public static void main(String[] args) {
        int i = 0;
        while(true) {
        i++;
        //判断变量的值,如果=10,执行break终止循环
        if(i == 10) {
            break;
            }
        }

        for( ; ;) {
            break;
        }
    }
  • continue : 终止本次循环,开始下一次循环
public static void main(String[] args) {
        for(int i = 0 ; i <=10 ;i++) {
        //判断,如果变量是偶数,执行下一次循环
            if(i % 2 == 0) {
                continue;
             }
             System.out.println(i);
        }
    }

嵌套循环

引出 : 上体育课迟到20分钟,处罚

操场跑圈 : 跑5圈, 再跑5圈, 再跑5圈, 再跑5圈

跑了4组,每组跑了5圈, 一共跑了多少圈 20 组数*每组圈数

理解 : 第一组5圈...... 我的第一次循环 5圈 我的第二次循环 5圈 (围绕操场循环了5次)

一次大的循环,包含5次小的循环 : 程序 嵌套循环, 总的循环次数 = 大循环次数*小循环次数

嵌套for

两个for循环在一起,形成嵌套形式, 双循环

一个for是另一个for的循环体

格式 :

 for(初始化变量 ; 条件 ; 增量){  //外循环
     for(初始化变量 ; 条件 ; 增量){ //内循环
     }
 }
//内循环是外键循环的循环体
public static void main(String[] args) {
    //外循环,循环5次
    for(int i = 0 ; i < 5 ;i++) {
        //内循环,循环3次
        for(int j = 0; j < 3 ; j++) {
            System.out.println("内循环");
        }
        System.out.println("外循环");
    }
}
forfor循环的执行流程.JPG

嵌套for循环练习

  • 外循环一次,内循环多次

    • 结论 : 外循环控制行数 ,内循环控制每行的个数
    public static void main(String[] args) {
            //外循环5次
            for(int i = 0 ; i < 5 ;i++) {
                //内循环5次
                for(int j = 0 ; j < 5 ;j++) {
                    //内循环输出星号
                    System.out.print("*");
                }
                //外循环输出空的换行
                System.out.println();
            }
        }
  • 尖向下的直角三角形
    public static void main(String[] args) {
            // 有几个行 5行 外循环5次
            for(int i = 0 ; i < 5; i++) {
                /*
                 *  每个行有几个星号 第一行是5个,逐行递减
                 *  变量j 0 1 2 3 4 
                 *  
                 *  外循环第一行的时候,内循环5个
                 *  外循环第二行的时候,内循环4个
                 *  j变化 : 每次执行内循环的时候,变量j的初始化都+1
                 *  
                 *  外循环的i 变量  0 1 2 3 4
                 */
                for(int j = i ; j < 5 ;j++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
  • 尖向上的直角三角形
    public static void main(String[] args) {
            // 有几个行 5行 外循环5次
            for(int i = 0 ; i < 5 ;i++) {
                /*
                 * 内循环 : 循环次数不固定  每行递增效果
                 * 第一行 : 内循环1次
                 * 第二行 : 内循环2次
                 * 内循环的变量 j
                 * 
                 *   第一行 : 内循环1次  j<1
                 *   第二行 : 内循环1次  j<2
                 *   内 : 变量j每次都从0开始,但是条件在改变
                 */
                for(int j = 0 ; j <= i ;j++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
  • 乘法表
public static void main(String[] args) {
            //i  1-9
            for(int i = 1 ; i <= 9 ;i++) {
                // 第一次循环1 ,第二次循环 1 2  
                for(int j = 1; j<=i ;j++) {
                    /*
                     *  替换为乘法计算即可
                     */
                    System.out.print(j+"*"+i+"="+j*i+"\t");
                }
                System.out.println();
            }
        }

数组(Array)

概述 : 数组是一种容器,容器就是存储数据的,数组可以同时存储多个数据的容器.

比如 : 班级里面有100个同学,100个名字,定义变量的方式 ,需要定义出100个变量,存储名字

更好的解决办法 : 100个名字全部存储在一个容器中,方便管理这些个数据

凡是数据多了,存储在数组容器中.

Java数组 : 只能存储同一个数据类型的数据

数组的定义

  • 定义数组的格式1:

    • 数据类型,定义的数组容器存储的数据的类型 int 这个数组就只能存储整数

    • [] 就表示数组

    • 数组的名字, 理解为就是一个变量的名字 (标识符,驼峰命名)

    • new 创建数组容器的关键字

    • 数据类型,定义的数组容器存储的数据的类型 int 这个数组就只能存储整数

    • 整数值, 表示的是数组的长度, 就是容量,也就数组能存储多少个数据

         数据类型[] 数组的名字 = new 数据类型[整数值];
         int[] arr = new int[3];
  • JVM内存划分
JVM内存划分.jpg

数组内存

数组内存图.JPG
  • 栈内存和堆内存区别

    • 栈内存,使用完毕就释放,效率高

    • 堆内存,等待JVM垃圾回收,效率低

    • 栈内存中的变量,必须赋值,否则不能使用

    • 堆内存的数据,必须有默认值

    • 栈内存,方法运行的时候计算

    • 堆内存,负责存储对象和数组

数组的访问

操作数组中的数据了, 存储到数组中的任何数据,都称为数组的元素(Element)

数组元素的访问,依靠数组的索引 (index) (下标)

  • 数组的索引

    • 每个数组都有自己的索引

    • 索引是从0开始的

    • 索引是数组的特性,天生就有, 本质上就是数组中每个元素的编号

  • 数组访问的语法:

    • 数组名[索引]
public static void main(String[] args) {
        //定义存储int类型的数组,数组的长度是3
        int[] arr = new int[3];

        //输出,数组0索引上的元素
        System.out.println(arr[0]);

        //输出,数组1索引上的元素
        System.out.println(arr[1]);

        //输出,数组2索引上的元素
        System.out.println(arr[2]);

        //数组0索引上的元素,赋值
        arr[0] = 5;
        System.out.println(arr[0]);
    }

数组的长度

Java中的数组是定长的, 数组的长度,也就是存储元素的个数,一旦创建完毕,不可改变

定长也是数组的一个弊端

对于数组 : JVM赋予数组一个属性 (属性 : 属于这个事务的特性)

属性的名字 length, 表示数组的长度 (int类型)

使用方法 : 数组名.length

public static void main(String[] args) {
        //定义数组,存储的类型是int类型,长度5
         int[] arr = new int[5];
         //使用数组的长度属性 length
         //int l = arr.length;
         System.out.println(arr.length);         
    }

数组长度length属性, 数组的最大索引,是长度-1 arr.length-1

数组的定义

  • 定义格式2 : 定义数组的同时直接存储元素

    • {}可以直接写入数组的元素值
数据类型[] 数组的名字 = new 数据类型[]{元素1,元素2,元素3};
   public static void main(String[] args) {
        int[] arr = new int[] {1,2,3,4,5,6,7};
        System.out.println(arr);

        //输出5, 在4索引的位置
        System.out.println(arr[4]);

        //数组的长度length属性
        System.out.println(arr.length);
    }
  • 定义格式3:
    数据类型[] 数组的名字 = {元素1,元素2,元素3};
    public static void main(String[] args) {
            int[] arr = {1,2,3,4,5,6,7,8,9,0};
            System.out.println(arr[7]);
            System.out.println(arr.length);
        }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343