拿捏java 2.0

22 阅读5分钟

第一阶段

14、控制结构

1switch(表达式){
       case 常量:
}
表达式数据类型应该和常量的数据类型一致,或可以自动转换成可以相互比较的类型
表达式返回值必须是byteshortintcharenumString
case中必须是常量,不能是变量
break语句用来执行完一个case分支后跳出switch语句,如果没有,程序会自动执行到switch结尾
2for循环
循环初始值可以有多条初始化语句,但是要求类型一致,并且中间用逗号隔开
3do while循环
do{
}while();
先执行,再判断,一定会执行一次,
4、多层循环控制
只有内层循环的循环条件是false时,会跳出内层循环,才可结束外层循环的当次循环
5random():返回带正号的double值,该值大于等于0.0小于1.0
6、跳转控制语句break:终止某个语句块的执行
    (1break出现在多层嵌套的语句中时,可以通过标签指明要终止的是哪一层的语句块
    (2)标签的使用:
    label1:
    for(int i=0;i<4;i++){
    label2:
            for(int i=0;i<10;i++){
                if(i==3){
                    break label 1;
                }
            System.out.println("i =" + i);
            }
    }
    (3break语句可以指定退出哪一层
        break后指定到哪一个label就退出到哪里
        若没有指定break,默认退出最近的循环体
 7、跳转控制语句continue:结束本次循环,继续执行下一次循环
     可通过标签指明跳出的是哪一层循环
 8、跳转控制语句return:跳出所在的方法

15、数组

1、存放多个同一类型的数据,数组是引用数据类型
    例如:double[] hens={1.1,2.2};
2、使用方式1-动态初始化
    数据类型 数组名[]=new 数据类型[大小]
    int a[]=new int[5];
   使用方式2-动态初始化
    声明数组:int a[];或者 int[] a;
    创建数组:a=new int[10];
   使用方式3-静态初始化
    int a[5]={1,2,3,4,5};
3、注意细节
    数组中的数据类型可以是任何数据类型,但是不能混用;
    数组创建后若没有赋值,有默认值:char \u0000; boolean false; String null;
    数组属于引用类型,数组型数据是对象
    数组在默认情况下是引用传递,赋的值是地址
        例如:int[] arr1={1,2,3};
              int[] arr2=arr1;
              此时是将arr1指向的地址赋值给了arr2,修改arr2中的内容也会修改了arr1中的内容
    若要进行数组拷贝,且要求数据空间独立,可以先开辟独立的数组空间:
        例如:int arr2[]=new int[arr1.length];
              for(int i=0;i<arr1.length;i++){
                  arr2[i]=arr1[i];
              }
 4、数组添加
    例如:int[] arr={1,2,3};
         int[] newArr=new int[arr.length+1];
         for(int i=0;i<arr.length;i++){
             newArr[i]=arr[i];
         }
         newArr[arr.length]=4;             
         arr=newArr;//原来的arr会被销毁

16、排序

内部排序:将所有数据加载到内部存储器排序,交换式排序法、选择式排序法、插入式排序法
外部排序:数据量过大,无法加载到内存中,借助外部存储排序,合并排序法、直接合并排序法

17、查找

1、顺序查找;    2、二分查找

18、二维数组

1、int[][] arr={{1,2,3,0},{1,2,3,3}}
 原来的一维数组的元素仍然是一个一维数组,构成二维数组
2、动态初始化-列数不确定
    允许二维数组中的每个一维数组的元素个数不同
    例如:
          int[][] arr=int[3][];
          for(int i=0;i<arr.length;i++){
              arr[i]=new int[i + 1];//要给每个一维数组开空间,new,如果没有开空间,则arr[i]=null;
              //遍历一维数组,并且给一维数组中的每个元素赋值
              for(j=0;j<arr[i].length;j++){
                  arr[i][j]=i+1;
              }
          }
 3、声明方式:
     int[][] y
     int[] y[]
     int y[][]

19、类与对象

1、类->数据类型
   对象->具体的实例
2private关键字:
    被private修饰的成员只能在类内使用
3this关键字
    成员变量:定义在方法外,类里面
    局部变量:定义在方法内
    就近原则:成员变量和局部变量同名时,使用就近原则;
             若要使用成员变量,则使用this.xxx
             例如:
             private int age;
             public void setName(int age){
                     this.age=age;//第一个age代表成员变量,第二个age触发就近原则,为局部变量age
             }
 4、构造方法:创建对象时给成员变量初始化
     修饰符 类名(参数){
         方法体;
     }
     (1)构造方法名必须与类名一致;
         没有返回值类型和void;
         没有具体的返回值;
     (2)创建对象时由虚拟机调用,不能手动调用构造方法;
         每创建一次对象,调用一次构造方法
     (3)自己没有定义,系统默认给出无参的构造方法;
         自己定义,系统不再提供默认的构造方法;
         一旦定义有参构造器,无参构造器就没有了,此时需要自己写无参构造器
     (4)构造方法重载:带参和不带参的构造方法,两者方法名相同,但是参数不同
 5、标准javaBean
 (1)成员变量用private修饰
 (2)至少两个构造方法:空+全参
 (3)成员方法必须要有提供每一个成员变量的setX()getX()方法
 6、Syestem.out.printf("");
     两部分参数:第一部分是要输出的内容%s(占位)
                第二部分是填充的数据
    System.out.printf("你好%s","张三");//可以有多个占位和填充数据
    Syetem.out.println();//表示换行 
 7、键盘录入
    (1)遇到空格、制表符、回车就停止接受,这些符号后面的数据就不再接受了:
         nextInt();接收整数
         nextDouble();接收小数
         next();接受字符串
         例如:
         Scanner sc=new Scanner(System.in);
         System.out.println("请输入第一个整数");
         int num1=sc.nextInt();
         System.out.println(num1);
         System.out.println("请输入第二个整数");
         int num2=sc.nextInt();
         System.out.println(num2);
         如果输入时123 123
         则输出为num1=123
                num2=123
         //程序会遇到空格就停止,并且将空格后的数字默认赋值给第二个num2,并不会继续要求输入第二个数字;2)遇到空格、制表符会接受,但是遇到回车会停止接收数据       
         nextLine();接收字符串
      注意:(1)(2)不能混用,先用nextInt,再用nextLine会导致nextLine接收不到数据