第三周总结

原创 2017年01月03日 00:00:05

本周重点

1.数组
2.类与对象
3.方法

一.数组

1.数组的概念:存储同一种数据类型的数据的容器(集合)叫数组。
数组特点:
1.     用来存放同一种数据类型的容器。
2.     数组的每一个元素都有一个下标(索引),索引从0开始,最大为数组的元素个数length-1。
3.     数组中元素的个数一旦被固定,就无法再修改。
4.     数组中元素在内存中是连续的内存地址。
数组的好处
数组的最大好处就是能都给存储进来的元素自动进行编号. 注意编号是从0开始。方便操作这些数据。 
什么时候使用数组:当元素较多时为了方便操作这些数组,会先进行来临时存储,所使用的容器就是数组。
数据类型[] 数组名 = new 数据类型[ 数组长度];
    数组的定义方式:
         数据类型[] 数组名;
         数据类型 数组名[]; //不推荐使用
  数组的初始化方式:
        1.静态初始化
         数据类型[] 数组名 = {元素1,元素2,....}; 
        2.动态初始化化
         数据类型[] 数组名 = new 数据类型[长度];
         //int[] array = new int[10];
         左边:
            int : 决定数组中存放的数据类型。
            [ ]:表示数组类型
          array : 数组的名字 
         右边:
            new : 创建一个对象
            int :决定数组中存放的数据类型。
            [ ]  : 表示数组类型
            10  : 表示数组中存放元素的个数。
 
  数组初始化化的注意点:
        1.如果是静态初始化数组,初始化和定义要一起完成。
        2.数组初始化后数组中如果存放的是整形数据默认存放的值是0.
        3.如果数组中存放的是引用数据类型,初始化数组中默认存放的元素是null.
 
  数组中元素存放的特点:
           1.元素在内存中是一块连续的内存空间。
           2.数组中的元素都有一个下标,下标从0开始,最大为数组长度-1
           3.数组的取值和赋值都是通过下标来完成的。
            取值:
                  数据类型 变量名 =  数组名[下标];
            赋值:
                数组名[下标] = 值。
 
  2. 数组的遍历: 将数组中的元素都取出来。 

   数组中有一个属性:length 可以获取到数组的长度  
   方式一: 通过循环来遍历
    一种普通的循环:
      for(int i = 0;i<数组名.length;i++){        
          //获取数组中的元素
          数据类型 变量名 = 数组名[i];
      } 
方式二:
    foreach循环(增强for循环)   
    for(数据类型 变量名 : 数组名){      
        //每循环一次会将数组中对应的元素赋值给变量
       for(int a : arr){       
          System.out.println(a);
} 
   
  数组中常见的错误:
      1.数组下标越界: ArrayInedxOutOfBoundsExecption
       //下标超过最大的下标
      2.空指针异常  :  NullPotinterExecption
      //数组变量指向了一个空的内存地址。并且你还操作了空的内存地址
      3.    注意:数组的角标从0开始。

3.直接排序/冒泡排序

1.选择排序(直接排序): 将数组中的每一个元素依次和数组中其他的元素做比较,将符合条件的进行交换。

       /*
   选择排序。
   以一个角标的元素和其他元素进行比较。
   在内循环第一次结束,最值出现的头角标位置上。
   */
/*
int[] arr = {2,12,6,9,11,3,5};
       // 直接排序(选择排序)。
       for(int j = 0 ;j<arr.length-1;j++){
             //将最大值放在首位
           for(int i =j+1;i<=arr.length-1;i++){
               //让第一个元素和其他的元素做比较,如果其他元素比第一个元素大就交换位置。
//为什么y的初始化值是 x+1?    因为每一次比较,都用x角标上的元素和下一个元素进行比较。
               if(arr[i] > arr[j]){
                  //定义一个中间量
                  int temp = arr[j];
                  arr[j] = arr[i];
                  arr[i] = temp;
*/
2.冒泡排序
冒泡排序。
比较方式:相邻两个元素进行比较。如果满足条件就进行位置置换。
原理:内循环结束一次,最值出现在尾角标位置。
*/
public static void bubbleSort(int[] arr){
for(int x=0; x<arr.length-1; x++){
for(int y=0; y<arr.length-x-1; y++){ //-x:让每次参与比较的原减。
//-1:避免角标越界。
if(arr[y]>arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
/*  
3.   拆半查找法(二分法):
使用注意点: 它只能查找有序的数组。
例子:
importjava.util.*;
class Demo1 {
    public static void main(String[] args) {
        int[] arr = {2,5,8,10,12};
        //定义三个位置
        int s = 0;  //开始=位置
        int e = arr.length-1; // 结束位置
        int m = (s + e) / 2;    //中间位置
 
        //定义一个比较的值
        Scanner input = new Scanner(System.in);
        System.out.println("请输入您要查找的数:");
        int value = input.nextInt();       
        while(true){
            //作比较
            if(value > arr[m]){     // 值大于中间量           
                //将起始位置移动到中位置的后一位
                s = m + 1;
            }else if (value < arr[m]) {
                //将结束位置移动到中间位置的前一位
                e = m -1;
            }else {           
                System.out.println("找到了该元素");
                break;
            } 
            if(e < s){     //结束小于起始位置代表没有找到结束循环          
               System.out.println("很抱歉,没有找到您需要的数");
               break;
            } 
            //更新中间的位置
            m = (s + e) / 2;
        }
    }
}

4.二维数组 :     

  数组中的元素是一维数组。
    二维数组的定义:
       int[][] 数组名;
    二维数组的初始化:
     1.静态初始化 
     int[][] arr = {{1,2,3,4},{1,3,3,4},{2,4,4}....};
     2.动态初始化
     int[][] arr = new int[3][4];
     3  -->  表示的是二维数组中元素的个数
     4  -->  表示的是二维数组中一维数组中元素的个数
   二维数组的取值和赋值:
      取值:
方式一:
       先获取到一维数组,在从一维数组中取值。
       例如:int[][] arr ={{1,2,3,4},{1,3,3,4},{2,4,4}}
       int[] a = arr[0];
       int value = a[0];    // 1
方式二:
       直接获取元素
       int value = arr[0][0];      // 1
      赋值:
       给二维数组中的元素一个一个的赋值
       直接赋值元素
        arr[0][0] = 10;  将二维数组中第一个一维数组中的第一个元素赋值维10.
例:
importjava.util.*;
class Demo1{
    public static void main(String[] args)  {       
        //1.静态初始化 : 数组中获取元素是通过下标来获取 ,下标从0开始的
        int[][] arr = {{1,2,4},{3,7,5}};
        //取值  : 4 :在二维数组中的第一个一维数组中
        //1.获取到二维数组中的第一个一维数组
        //2.通过一维数组中获取最后一个元素。
        //获取二维数组中的第一个一维数组
        int[] first  = arr[0];
       System.out.println(first[first.length-1]); 
        //简化方式一:
       int value =  arr[0][2]; //4  //获取二维数组中第一个一维数组中的第三个元素
       System.out.println(value); 
       int value1 = arr[1][1];
       System.out.println(value1);
        //2.动态初始化 : int--->是二维数组中一维数组的元素类型
        int[][] arr1 = new int[3][4];
        int[] a1 = {1,2,3,4};
        int[] a2 = {5,6,7,8};
        int[] a3 = {9,10,11,12};
        arr1[0] = a1;
        arr1[1] = a2;
        arr1[2] = a3;
        System.out.println(arr1[2][3]); //12

二:面向对象:★★★★★

特点:1:将复杂的事情简单化。
     2:面向对象将以前的过程中的执行者,变成了指挥者。
    3:面向对象这种思想是符合现在人们思考习惯的一种思想。
记住:所有对象创建时,都需要初始化才可以使用。
   类名 对象名 = new  类名();
对象:在现实生活中存在具体的一个事物。就是类的一个具体实例。通过属性和方法来描述的。
类:实际就是对某种类型事物的共性属性与行为的抽取。类是没有具体的行为和属性。
人类认识世界: 对象----à类(人)。
在java中:     类-----à对象(张三)。
1.  使用class 关键字 定义类,
1. class空格 类名。类名就是标识符,命名规则,单词的首字母大写,多个单词的首字母大写。注意:不是规定,但是最好遵守
2. 类名后紧跟一对{}表示类的开始和结束。
publicclass  类名{
//  程序体
}
1.面向对象(OO)--->类和对象。
  万物皆对象 : 现实生活中把能够看的到,摸着着的东西都可以成为对象。
  计算机程序 : 描述现实生活中的事物。 --->面向对象的概念:就是一事物为中心的编程过程。
程序中的对象 :用来描述一类事物的实体,通过属性和方法来描述事物的实体
   现实中是先有对象再有类的。
     程序中是先有类再有对象。 
  Java中如何来定义类。
      通过关键字 class , java编程是以类为基本单元。
    定义类的格式:
       class 类名 {
            属性(对象的特征),成员变量
            行为(方法)
               方法的定义格式:
               返回值类型: 指的就是数据类型。  void ---> 空类型
               参数列表 : 可有可无。
               返回值类型 方法名 (参数列表){   
               具体的行为
               }  
    创建对象的方式: 通过new的方式.
        结构 :
          new 类的名字();
     需要定义一个该类型的变量来接收
       类的类型 对象名 =  new类的名字();
     赋值属性:
                   对象名.属性名字 = 值;
     取值:
          数据类型 变量名 = 对象名.属性名
     方法的调用:
         对象名.方法名();

2. 类中方法的定义和使用。

  方法的定义 : 返回值类型 方法名(参数列表){                     
                 方法体。
                 }
  Java中方法通过参数分类:
      1.无参方法
           定义的格式:  小括号中不要任何参数。
                 返回值类型 方法名(){                  
             }
 
      2.有参方法 :小括号中的参数可以有一个或者多个,多个参数之间以,隔开
          定义方式:
              参数: 值就是变量。
             返回值类型 方法名(参数1,参数2,...){
               //方法体    
   }
          参数的作用: 做值的传递作用,将变量从一个方法传递到另外一个方法中。
 
   Java中按返回值类型来分类:
       1.无返回值类型
           定义的方式:  void 空类型
             void 方法名(参数列表){
                  //方法体
             }
 
       2.有返回值类型
             返回值类型 :数据类型
                  Java中数据类型: 1.基本数据类型 2.引用数据类型
              
             方法的返回值类型可以是引用数据类型,也可以是基本数据类型。
             
             只需要返回值类型不为空就可以了,即返回值类型不为void。
             返回值类型 方法名(参数列表){
                     
                        方法体。
                        return 结果。
              } 
         如果你有返回值,就必须有一个return与之对应。
         return关键字的使用:
         return 返回的结果。
 注意:返回的结果类型一定要和返回值得类型一致。
 
         return关键字的使用注意点:
              1.return关键后面的代码永远不会被执行。
              2.return 关键字只能在方法中使用。
 
3. 方法的调用:
        1.同一个类中方法的调用:
          直接通过方法名调用。
     2.不同类中方法的调用:
        首先要创建方法所在类的对象,在通过对象来调用方法。

小结:要清晰的知道每个知识点是怎么用的,是解决什么样的问题等。 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

第三周工作学习总结

工作学习总结任务
  • Dorthyn
  • Dorthyn
  • 2017年05月08日 13:43
  • 125

机器学习集训营---第三周总结

第三周学习总结,主要内容: pandas数据统计与分析的学习 结合selenium编写爬虫 学习pandas在机器学习数据预处理与特征处理 作业实战分析链家数据 本周三晚上去参加了混沌大学的线下活...

HihoCoder第三周与POJ2406:KMP算法总结

HihoCoder第三周: 输入 第一行一个整数N,表示测试数据组数。 接下来的N*2行,每两行表示一个测试数据。在每一个测试数据中,第一行为模式串,由不超过10^4个大写字母组成,第二行为原串...

普林斯顿大学算法课程第三周个人总结

这次的总结拖到现在才写,主要是因为刚刚才拿到第三周编程作业的满分,算法效率的最后一个测试迟迟不达标,昨晚又在论坛里翻看了很多讨论帖,今早进行了一些优化,终于通过了最后一个测试。         经过三...

MATLAB学习笔记 学习总结归纳(第三周)

MATLAB学习笔记 彩色变换interp1q(x, y, xi) 线性内插,获得xi点的yi值(直线)x 为列向量 设置x轴各个点 y 为列向量 设置y轴的各个点 xi 为列向量,代表取xi的位...

第三周工作总结——IBeacon协议分析

1. 总述 这周的主要工作包括两方面,一是用
  • qiank10
  • qiank10
  • 2014年07月22日 20:54
  • 4006

【Java第三周知识总结】

抽象类: 1、抽象类特性: 1)、抽象方法所在的类一定是抽象类,抽象类里面不一定有抽象方法 2)、抽象类必须被继承,抽象方法必须被重写 3)、抽象方法只需要声明不需要实现 4)、抽象类不能被...

武大集训第三周总结(转)

来到武大集训已经三周了。前两周主要是个人赛,第三周是组队赛。正如个人赛被虐一样,组队赛也是一样被虐。坦白来说,在武大的这三周时间里,如果单从学习知识的多少来说,确实是没有预想中的那么多,但是从武大集训...

远程实习第三周总结

本周学习内容如下 1.熟悉Android四种数据存储方式 2.熟悉Android项目中各种资源文件的规范使用 3.熟悉Animation与Animator动画 四种数据存储方式键值对...

leetcode第三周解题总结(5,7,66)

5. Longest Palindromic Substring 7. Reverse Integer 66. Plus One
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第三周总结
举报原因:
原因补充:

(最多只允许输入30个字)