JavaNote2

来源:互联网 发布:汉王pdf ocr mac版 编辑:程序博客网 时间:2024/05/21 22:44
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 sortstatic 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 sortstatic 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系列博客, 纯属个人学习时间段整理的一些笔记, 会坚持每周至少一更,多多关照.

原创粉丝点击