JavaNote2

class Life{   
  public static void main(String[] args){
      int alive;
          while(alive)
          {
              eat();  
              sleep();
              code();
              repeat();
      }
    }
}

老人说,这不丢脸,也无损真正的骄傲.

1.简单语句

  1. 条件语句(if, if()else{}, if() else, if{} else if{}else{})

  2. switch多分支语句

    // Switch不是循环 楼主之前一直认为switch是循环里面的一种
    public static void main(String[] args){
        String i = "星期一"; //之前在其他博客里面看见有人说switch条件只能是字符和数字型,
                            //楼主这已经做了案例,字符串也是可以的.   
        switch(i){
            case "星期一" : System.out.println("星期一"); break;
            case "2" : System.out.println("星期二"); break;    
            case "3" : System.out.println("星期三"); break;
            case "4" : System.out.println("星期四"); break;
            case "5" : System.out.println("星期五"); break;
            case "6" : System.out.println("星期六"); 
            // 如果不打break,则直接进入下一条执行语句不再看下一条的条件
            case "7" : System.out.println("星期天"); break;
            default : System.out.println("你是个瓜皮!");
        }
        switch(i){
            case "1" : case "2" : case "3" : case "4" :
            case 5 : System.out.println("如果1,2,3,4,5执行的是相同语句则可以这样省略写");
            default : System.out.println("给石头点个赞哦!");
        }
    }
  3. 循环语句(单纯的理解循环简单, 合理运用就有点难度了, 楼主更多的喜欢for循环.)

    • for循环

      • for循环在大多数编程语言都有, for运用太广了, 就不细说.

      • 在这里想起一个我们老师讲的搞笑的小故事.印度人写99乘法表.有兴趣的同学可以网上搜一搜

      • 附上for循环写的两种排序, 冒泡排序,插入排序

      //冒泡排序 bubble sort
      static int[] bubbleSort(int[] arr){
          int i;
          int j; 
          int temp = 0;
          for(i = 0; i < arr.length; i++){
              for(j = 0; j < arr.length - 1 - i; j++){//除去右移的大数的数量
                  if(arr[j] > arr[j+1]){ //两数比较 大数右移 移后不参与下次运算
                      temp = arr[j];
                      arr[j] = arr[j+1];
                      arr[j+1] = temp;
                  }
              }
          }
          return arr;
      }
      //选择排序 select sort
      static int[] selectSort(int[] arr){ 
          int i;
          int j;
          int temp = 0;
          int minIndex = 0;
      
          for(i = 0; i < arr.length; i++){
              minIndex = i;   
              for(j = i + 1; j < arr.length; j++){ 
                  if(arr[minIndex] > arr[j]){ // 关键 储存每一轮的最小数的索引
                      minIndex = j;                
                  }   
              }
              if(minIndex != i){          // 调换位置
                  temp = arr[i];
                  arr[i] = arr[minIndex];
                  arr[minIndex] = temp;
              }
          }
          return arr;
      }
    • while循环

      • PS一个while 和 do..while 的不同点:while是先判断条件再执行循环体, do..while是先执行一遍再判断条件是否执行.
    • do .. while循环

      • 和 while 同理

2.方法(Method),也有人称之为函数(function), 表示一个功能

  1. 作用: 解决代码功能重复的问题.

  2. 术语(因楼主这方面了解得太少所以是从别处Copy,见谅! 如果有不对的地方, 希望有大手子提出)

    • 修饰符: 方法的访问权限等,静态的(static).

    • 返回值类型: 当方法操作完毕之后,可能会给调用者返回一个结果.如果没有返回值,此时我们把返回值类型声明为void. 如果方法定义了返回类型,则方法体必须使用return返回该类型的一个值. 如果方法使用void来表示返回值类型,此时在方法体中不需要使用return.

    • 方法名字: 命名的使用符合标识符规范,使用一个动词或者动词短语表示,首字母小写,如:sendMsg(发生信息),register(注册)

    • 形式参数: 其实是多个变量,统称为形参,包括:参数个数,参数的类型,参数的顺序,此时参数的名字没有实质的意义.

    • 方法签名: 方法签名 = 方法名字 + 形式参数; 在同一个类中,多个方法的签名不能相同. 推论:1)方法必须定义在类中,2)方法之间是兄弟关系(平行).

    • 实际参数: 调用方法的时候,实际传递的参数值. 方法只有被调用才会执行!方法可以被重复调用!

      //一个简单的整数求和功能
      static int getSum(int x, int y)
      {
      int sum = x + y;
      return sum;
      }
  3. 方法重载(overload), 同一种功能的多个方法.

    • 遵循原则

      • 方法必须在同一个类中, 并且方法的名字相同
      • 方法各自的参数列表不同(参数类型,参数个数,参数顺序).
      • 关于返回值的问题.有两种不同意见,一种是说和返回类型没有关系, 另外一种是说返回值类型不同就不能说是方法的重载.
      • 附上重载小案例(小数求和)
      //一个简单的整数求和功能,稍加完善小数求和
      static int getSum(int x, int y)
      {
      return x + y;
      }
      static double getSum(double i, double j)
      {
      return i + j;
      }
      static double getSum(double i, int x)
      {
      return i + x; 
      }

3.递归(本来递归是该写在方法里面的, 但是怎么说呢, 可能对于我来说有些难理解,所以以下内容不是全部正确, 只是拿来讨论的, 而不是下结论)

  1. 先来看看百科里面的递归名词解释.程序调用自身的编程技巧称为递归( recursion)。由此可推出来, 递归是一种技巧,说白了就是让代码看着更优雅, 更有逻辑性, 更有b格, 楼主目前接触的递归, 都是能够用for循环写出来的, 但for循环写的b格能有递归高?不过for循环和递归同写一个案例, 可能for循环效率会高点.

  2. 一句经典且好理解的话: 递归就是自己玩自己.

  3. 不能无限制地调用本身, 须有个出口, 化简为非递归状况处理. (没出口, 死循环?).

  4. 递归比较经典的案例: 阶乘, 斐波那契数列, 汉诺塔问题.

    //看这个递归案例最好能理解 方法(函数)的执行结果(return)就等价于这个方法本身(如有错,求指正)
    
    public class Test()
    {
     public static void main(String[] args){
            method(5);
     }
     public static int method(int num){
            int temp = num;
            if(num > 0){
                System.out.println(method(--num));
        }
        return temp;
     }
    }

4.数组

  1. 初始化, 数组必须初始化才可以使用.

    • 静态初始化.程序员自己设置需要存储的数据(元素),而数组的长度由系统决定.
      • int[] nums = new int[]{1,3,5,7,9};
    • 动态初始化.程序员指定数组的长度,而数组的元素的默认值由系统决定.
      • int[] nums = new int[5];
    • 如果事先知道需要存储哪些数据, 使用静态初始化. 若事先不知道存储哪些数据, 使用动态初始化.
    • 不能同时使用静态和动态初始化.int[] nums = new int[5]{1,3,5,7,9};(大红×)
  2. 数组中的数组(也可以叫做多维数组,但是JAVA中是不存在多维数组这个概念的)

    1. 简单定义:数组作为数组元素.

      • C语言中的多维数组好像是固定长度,而JAVA却不是.(这话可能有错, 如有错, 求大佬们指正)
    2. Java5对数组的新语法支持(语法糖)

      • 增强for循环-foreach
      for(int ele : nums){
          System.out.println(ele);
      }
      • 方法的可变参数
      static double getSum(double ... arr){
        double sum = 0.0
        for(double price : arr){
          sum+=price;
        }
        return sum;
      }
    3. 数组相关算法以及操作.

      • 在上面介绍for循环时候, 插入了冒泡排序, 选择排序的代码,重要的理解部分也备注了,这里再插入一段插入排序的代码
      static int[] insertSort(int[] arr){
              int i;
              int j;
              int insertNode;
              for(i = 1; i < arr.length; i++){//待比较的数
                  insertNode = arr[i];
                  for(j = i - 1;j >= 0; j--){ //循环排序过的并进行比较
                      if(insertNode < arr[j]){
                          arr[j + 1] = arr[j]; // 排序过所有元素右移
                      }else{
                          break;
                      }
                  }
                  arr[j+1] = insertNode;  // 插入到正确的位置
              }
              return arr;
          }
      • 数组的排序算法还蛮多的, 如归并排序,快速排序,计数排序, 基数排序等等..虽然有ArraysUtil工具,但是楼主还是在学习写排序的源码, 怎么说呢, 会造车还不会开车吗?

      • 数组的操作, 也有很多, 还是一样, 试着去写源码比较爽.就不贴上代码了.

CNcots CNINA Caprice of the stone的简写, 译为石头的随想曲.

博客中有网上摘抄的资料. 有个人的一些小心得 ,有什么不对的地方, 还请各位观客老爷们指出.

JavaNote系列博客, 纯属个人学习时间段整理的一些笔记, 会坚持每周至少一更,多多关照.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值