2018年8月6日笔记(循环结构、流程控制、数组、内存初讲)

复习:

1. 运算符

      算术:

              % - 取余 - 注意结果的正负号

              ++/--在变量之前需要先自增后运算;在变量之后先运算后自增;byte/short/char参与运算

      赋值:

              除了=,其他的符号都要求变量先有值才能使用

              byte/short/char可以参与赋值运算

              不允许连等定义但是允许连等赋值

      比较:

               不允许用比较运算符表示一个连续的范围 --- 3 < n < 5

      逻辑:

                ^:相同为假不同为真

                &&和||的短路特性

      位:

                针对整数的补码进行运算

                交换值的方式:追尾法、加减法、异或法

      三元:

                执行顺序:先执行逻辑值,如果逻辑值为true则执行表达式1;反之执行表达式2

                三元表达式中的两个式子的结果类型必须能够转化

流程控制

                顺序结构:指代码从上到下从左到右依次编译运行

分支结构

      判断结构

               if(){}

               if(){}else {}

               if(){}else if(){}

      练习:输入一个数字,然后输出这个数字表示星期几

               3 -> 星期三

      选择结构

            switch(选择){

                   case 选项1:Code1;break;

                   case 选项2:Code2;break;

                   ...

             }

             switch()中需要一个选项,选项只能是byte/short/char/int,从JDK1.7开始,允许使用String

             如果每一个case之后都有break,case顺序不影响结果

             如果有一个或者多个case之后没有break,那么这个时候case之间的顺序影响结果

             练习:输入两个数字以及一个符号,输出这两个数字在这个符号下运算产生的结果

                        5 9 + -> 14

                        switch(){

                        case “+”:...

                        case “-”:...

                        }

             练习:输入三个数字表示年月日,输出这一天在这一年是第几天

                        2012 3 5 ---> 65

                        2014 3 5 ---> 64

                        需要判断平年闰年:逢百整除400;不逢百整除4

                        2012 % 4 == 0 --- true

                        2100 % 400 == 0 --- false

循环结构

             用于完成一些相同或者相似的重复的操作

              while(逻辑值){

                    Code;

              }

              执行顺序:

                    

 

             练习:

             1. 求1-100以内所有的奇数的和 --- i = 1; i += 2;

             2. 打印100以内能被3整除而不能被7整除的数字 --- 先获取3的倍数  int i = 0; i += 3;

             3. 输入一个数字,输出这个数字是一个几位数

             4. 输入一个数字,输出这个数字的所有的因数 --- 从1开始,逐个数字取余这个输入的数字,看是否能够整除

             20:1 2 4 5 10 20

             定义一个循环,需要三个要素:定义一个变量来控制次数,利用判断条件决定循环结束;在循环过程中需要改变变量

             do{

                  Code;

              } while(逻辑值);

             注意:无论条件是否满足,do-while的循环体必然至少执行一次。

             for(定义循环变量; 控制条件; 改变循环变量){

                     Code;

             }

             

 

            习惯上如果变化不规律或者次数不确定一般使用while循环;如果变化规律或者是次数固定,一般是用for循环

  求1-10的和 --- for循环       

int sum = 0;

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

    sum += i;

}

   从控制台获取一个大于10的奇数

Scanner s = new Scanner(System.in);

int n = s.nextInt();

// 使用while循环

while(n < 10 || n % 2 == 0){

    n = s.nextInt();

}

// 使用for循环

for(; n < 10 || n % 2 == 0; n = s.nextInt()){

}

   练习:打印九九乘法表

    1*1=1

    1*2=2 2*2=4

    1*3=3 2*3=6 3*3=9

     。。。

   练习:

   百钱百鸡 --- 3文钱1只公鸡,2文钱1只母鸡,1文钱3只小鸡;100文钱如何买恰好100只鸡? --- 先定义一个循环表示公鸡,嵌套一个循环表示母鸡,计算小鸡的个数,根据各种鸡的个数来计算钱数是否为100

break和continue

           break:用于选择结构和循环结构,表示结束当前的一层结构

           continue:只能用于循环结构,表示跳过本次循环继续下次循环(只能跳过一层循环)

           扩展作业:一个循环打印九九乘法表

数组

           存储同一类型的多个数据的容器---大小是固定的

           数组会对放入其中的数据(元素)进行编号,编号是从0开始的 - 下标

           数组的容量 --- 长度

定义格式

           数据类型[] 数组名 = new 数据类型[长度];

                int[] arr = new int[5]; --- 表示定义一个能存储5个整型元素的数组

           数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3......};

                int[] arr = new int[]{1,2,5,6,8,9,6};

                int[] arr={1,5,8,6,3};

           给定了数组的数据,也确定了数组的长度。

内存

           Java将所占用的内存划分为了5块:栈内存、堆内存、方法区、本地方法栈、PC计数器(寄存器)

栈内存

           用于存储变量的。变量在栈内存使用完成之后会立即移除出栈内存。

堆内存

          用于存储对象(数组是一种特殊的对象)的。元素在存入堆内存中之后会自动的赋予默认值:

          byte/short/int   -  0       long  -  0L           float  -  0.0f       

          double  -  0.0    char  -  ‘\u0000’    boolean  -  false,其他类型的默认值都是null。

          对象在用完之后是在不确定的某个时刻被回收。

            

            

 

          预习: logab = logcb/logca  logabn = nlogab logab = loga + logb

猜你喜欢

转载自blog.csdn.net/DGHxj_/article/details/81462072