学习内容总结(week 2)

1.流程控制语句

2.方法

3.数组

4.形式参数

5.面向对象

6.封装


1.流程控制语句(if & switch week_1).

1) for循环
    格式: 
            for(初始化语句;条件表达式;步长/控制体语句){
                循环体语句;
            }
    执行流程:
            a.执行初始化语句;
            b.若满足条件,执行循环体语句;
            c.执行步长/控制体语句;
            d.再次执行(b)的过程,若条件满足,一直执行下去,直到条件表达式不成立,for循环结束.
        例1:
            求1-10之间整数的和.
            int sum = 0;
            for(int a = 1;a <= 10;a++){      //→满足条件,执行sum=sum+a,a++
                sum = sum +a ;
            }
            System.out.println("和为:"+sum);
        
        例2:
            求所有水仙花数.
            for(int x = 100;x<=999;x++){
              int a = x % 10 ;
              int b = x / 10 % 10;
              int c = x / 10 / 10 % 10;
               if((a*a*a+b*b*b+c*c*c) == x){
                       System.out.println("水仙花数为:"+x);
               }
            }
2)while
    格式:    (常使用在循环次数不明确的时候)
        初始化语句;
        while(条件表达式){
        循环体语句;
        控制体语句/步长语句;
        }
    执行流程:
        1)初始化语句赋值;
        2)条件表达式成立则执行循环语句,执行控制体语句;
        3)再次判断条件表达式是否成立,循环执行到条件不成立while结束.
        例:
            int x = 1;
            while(x<=10){
            System.out.println("哈哈");
            x++;
            }

    与for循环的区别:
        1)循环格式上不同:for循环结束后,不能再访问for语句中的变量,for
            循环结束变量需要被释放掉了;while 循环中的变量可以继续访问;
        2)内存方面:for循环结束后变量被释放掉,节省内存空间;while循环
            结束后依然可以访问这个变量,比较消耗内存空间.
3)死循环
        格式:(结束死循环需要 break)
            1)for(,,){
            循环体语句;
            }
            2)while(true){
            循环体语句;
            }
        例:
            int num = (int)(Math.random()*100+1);
            if(guessNumber>num){
            System.out.println("数字猜大了");
            }else if(guessNumber<num){
            System.out.println("数字猜小了");
            }else{
            System.out.println("猜对了");
            break;
            }
4)do-while
        格式:
            do{
            循环体语句;
            控制体语句;
            }while(条件表达式);
        特点:优先执行循环语句,即使条件不成立,循环体也至少执行一次.
            例:
                int sum = 0;
                int x = 1;
                do{
                sum = sum +x;
                x++;
                }while(x<=100);
                System.out.println("1-100之间数字和为:"+sum);
5)for循环嵌套
    一个for循环语句作为另一个for循环语句的循环体
    格式:
        for(初始化语句;条件表达式;控制体语句){
        for(初始化语句;条件表达式;控制体语句){
        }
        }
        例: 9 9 乘法表
            for(int x =1;x<=9;x++){
            for(int y =1;y<=x;y++){
            System.out.print(x+"*"+y+"="+(x*y)+"\t");
            }
            System.out.println();
            }


2.方法.

需要使用{}代码块将业务体包起来,并为之起一个见名知意的名字.

1)有具体返回值类型的方法
     格式:
         public static 返回值类型 方法名(参数类型1 变量名1,参数类型2 变量名2 ...)
         方法中的业务逻辑代码
             return 结果;
         例:
             省略 main 方法...
             int a =10;
             int b =20;
             int result = sum (a,b);//返回值代入 sum = 30;
             System.out.println(result);
             
         public static int sum(int a,int b){
         int result = a +b;
              return result;
         }
2)没有具体返回值类型的方法
    针对某个功能代码块{}没有具体返回值类型,使用 void 代替.
        格式:
            public static void 方法名(形式参数列表){
            方法体中的内容直接输出,或者进行其他操作(不需要return语句)
            }
        例: 键录入打印 n n 乘法表
            次数省略类,导包和main方法...
            Scanner s = new Scanner(System.in);
            System.out.println("输入一个0-9的数字");
            int n = s.nextInt();
            cF(n);
            
            public static void cF(int n){
            for(int x = 1;x<=n;x++){
            for(int y = 2;y<=x;y++){
            System.out.print(x+"*"+y+"="+(x*y)+"\t");
            }
            System.out.println();
            }
            }
3)方法重载
      方法名相同,参数列表不同(参数个数/参数类型),与返回值无关,目的是为了
    提高某个功能的扩展性,所以有时候同一个方法可以传递任何数据类型.
        例:
            pulic static void open(double a,int b);
            pulic static void open(int a,double b);
    


3.数组.

数组是存储多个数据的容器,必须保证容器中的数据类型一致.
 1)定义格式
     a.动态初始化
         给定数组的长度,系统默认对元素进行初始化.
         数据类型[] 数组名称 = new 数据类型[数组长度];
       或 数据类型 数组名称[] = new 数据类型[数组长度];
       例:
           int[] ar = new int[3];
           
     b.静态初始化
         给定具体的元素,数据长度由系统确定.
         数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3...}
       或 数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3...}
       简化格式:
           数据类型[] 数组名称 = {元素1,元素2,元素3...};
           数据类型 数组名称[] = {元素1,元素2,元素3...};
           例:
               int[] ar = {1,2,3,4};
 2)数组的遍历
         将数组中的元素一一获取到并输出.
         例:
             ......
             int[] ar = {1,2,3,4,5};
             System.out.print("[");
             for(int x =0;x<ar.length;x++);
             if(x==ar.length-1){
             System.out.println(ar[x]+"]");
             }else{
             System.out.print(ar[x]+", ");
             }
 3)数组的最值
         例: 数组int[] ar = {2,5,6,4,9}的最大值
             int max = ar[0];
             for(int x =1;x<ar.length;x++){
             if(ar[x]>max){
             max = ar[x];
             }
             }
                 return max;//(有具体返回值类型)
 4)数组的逆序
         例: 数组int[] ar = {2,5,6,4,9}逆序
             int[] ar = {2,5,6,4,9};
             for(int x=0;x<ar.length/2;x++){
             int a = ar[x];
             ar[x] = ar[x+1];
             ar[x+1]= a;
             }
 5)数组的查表法
         通过数组名称[索引值]来确定元素内容.
          例: 在数组中查询某个元素第一次出现的索引值
          int[] ar={13,25,19,33,27};
          public static int sY(int[] ar,int a){
          for(int x =0;x<ar.length;x++){
          if(a==ar[x]){
              return x;
          }
          }
          }
 6)数组冒泡排序
         两两计较,较大的值往后放,第一次比较完毕,最大值出现在最大索引处.
         int[] ar = {10,20,15,27,34};
         for(int x=0;x<ar.length;x++){
         if(ar[x]>ar[x+1]){
         int a = ar[x];
         ar[x] = ar[x+1];
         ar[x+1] = a;
         }


4.形式参数.

1)方法的形式参数问题
    a.如果方法的形式参数是基本数据类型,形式参数的改变不会影响实际参数;
    b.如果方法的形式参数是引用数据类型(Sting类型除外),形式参数的改变会影响实际参数.


5.面向对象.

1)面向对象的思想特点
        a.更符合我们生活中的思想行为习惯;
        b.让复杂的事情简单化;
        c.我们从执行者变成了指挥者.
2)成员变量和局部变量的区别
    a.程序中的书写位置不同
        局部变量在方法定义中或者方发声明上;
        成员变量在类中成员方法外;
    b.内存位置不同
        局部变量在栈内存中;
        成员变量在堆内存中;
    c.生命周期不同
        局部变量随着方法调用而存在,随着方法结束而消失;
        成员变量随着对象的创建而存在,随着对象创建完毕不会立即消失,需要
        等待GC(垃圾回收器空闲时候回收掉);
    d.初始化不同
        局部变量在使用前必须初始化;
        成员变量可以不初始化,系统默认初始化.
3)匿名对象
    没有名字的对象.
        格式:
            new 类名();
        特点:
            a.可以作为参数进行传递;
            b.在开发中,匿名对象使用一次即可.
            例:
                class Student{
                public void study{
                 System.out.println("学习java");
                }
                }
                class StudentDemo{
                public void method(Student student){
                    student.study();
                }
                }
                class NoName{
                public static void main(String[] args){
                StudentDemo s = new StudentDemo();
                s.method(new.Student());
                }
                }
 


6.封装.

将某个类的成员属性隐藏(成员变量私有化),保证了数据的安全性,提供一个公共访问方法.
1)例:给学生类成员加入私有修饰,对外提供公共的方法setXXX/getXXX
    class Student{
        private String name;
        private int age;
        private String gender;
        public void study(){
            System.out.println("学习java");
        }
        public String play(String gameName){
            return "玩"+gameName;
        }
        public void sport(){
            System.out.println("打篮球");
        }
        public void setName(String n){
            name = n;
        }
        public String getName(){
            return name;
        }
        public void setAge(int a){
            age = a;
        }
        public int getAge(){
            return age;
        }
        public void setGender(String g){
            gender = g;
        }
        public String getGender(){
            return gender;
        }
    }
    class StudentTest{
        pulic static void main(String[] args){
            Student s = new Student();
            s.setName("啊");
            s.setAge(20);
            s.setGender("公");
            System.out.println("名字是:"+s.getName()+",年龄是:"+
            s.getAge()+",性别是:"+s.getGender());
            s.study();
            String s = s.play("dnf");
            System.out.println(s);
            s.sport();
        }
    }
2)"this"关键字
        this:代表当前类的对象的地址引用.
            this.成员变量名 = 局部变量;
     class Phone{
         private String brand;
         private int prince;
         private String color;
         public void setBrand(String brand){
             this.brand = brand;
         }
         public String gerBrand(){
             return brand;
         }
         public void setPrice(int price){
             this.price = price;
         }
         public int getPrice(){
             return price;
         }
         public void setColor(String color){
             this.color = color;
         }
         public String gerColor(){
             return color;
         }
         public void call(String toName){
             System.out.println("给"+toName+"打电话");
         }
         public void study(){
             System.out.println("学习java");
         }
     }
     class PhoneTest{
         public static void main(String[] args){
             Phone p = new Phone;
             p.setBrand("小米");
             p.setPrice(200);
             p.setColor;
             System.out.println("品牌是:"+p.getBrand()+",价格是:"+p.getPrice()+",颜色是:"+p.getColor());
             p.call("我");
             p.study();
         }
     }
3)构造
        给类的成员的一些数据进行初始化.
    规则:    
        a.构造方法名和类名一致;
        b.没有具体的返回值类型;
        c.没有 void;
    注意事项:
        a.当代码中没有给类提供构造方法,系统会默认提供一个无参构造;
        b.如果提供了有参构造方法任何一宗,系统就不会提供无参构造,需永远给            出无参构造方法.
    例:
        class Phone{
          private String brand;
          private int price;
          private String color;
          public Phone(){}
          public Phone(String brand,int pricce,String color){
              this.brand = brand ;
              this.price = price;
              this.color = color;
            }
            public void setBrand(String brand){
                this.brand = brand;
            }
            public String getBrand(){
                return brand;
            }
            public void setPrice(int price){
                this.price = price;
            }
            public int gerPrice(){
                return price;
            }
            public void setColor(String color){
                this.color = color;
            }
            public String getPrice(){
                return color;
            }
            }
        class PhoneTest{
            public static void main(String[] args){
                Phone p = new Phone();
                p.setBrand("小米");
                p.setPrice(100);
                p.setColor("黑色");
            System.out.println("品牌是:"+p.getBrand()+",价格是:"+p.getPrice()+",颜色是:"+p.getColor());    
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值