• 主页
  • 个人简介
    • 圣墨 photo

      圣墨

      一个爱折腾,有诗有远方的人

    • Learn More
    • Github
    • Cnblogs
    • Weibo
  • 文章
    • 所有文章
    • 所有标签
  • Html&Css
  • Javascript
  • 设计模式
  • 前端性能优化
  • 原生实现专题
  • 数据结构与算法
  • Book
  • 面试题
  • 前端工具
  • 随记

java学习第三天

15 Jan 2019

Reading time ~2 minutes

java学习第三天

数组

一、数组的概念

数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。

二、数组的定义方式

1、方式一

  int[] arr = new int[3]; //定义可以存储3个整数的数组容器

2、方式二

  int[] arr = new int[]{1,2,3,4,5}; // 可以先声明,后赋值

3、方式三

  int[] arr = {1,2,3,4,5}; // 声明和赋值同一行

三、java虚拟机的内存划分

四、数组的常见操作

1、越界操作

  public static void main(String[] args) {
    int[] arr = {1,2,3};
    System.out.println(arr[3]); // 抛出异常
  }

2、空指针异常

  public static void main(String[] args) {
    int[] arr = {1,2,3};
    arr = null;
    System.out.println(arr[0]);
  }

3、遍历数组

  public static void main(String[] args) {
    int[] arr = { 1, 2, 3, 4, 5 };
    for (int i = 0; i < arr.length; i++) {
      System.out.println(arr[i]);
    }
  }

4、数组获取最大值元素

  public static void main(String[] args) {
    int[] arr = { 5, 15, 2000, 10000, 100, 4000 };
    //定义变量,保存数组中0索引的元素
    int max = arr[0];
    //遍历数组,取出每个元素
    for (int i = 0; i < arr.length; i++) {
    //遍历到的元素和变量max比较
    //如果数组元素大于max
    if (arr[i] > max) {
    //max记录住大值
      max = arr[i];
      }
    }
      System.out.println("数组最大值是: " + max);
  }

5、数组的反转

  public static void main(String[] args) {
    int[] arr = { 1, 2, 3, 4, 5 };
    /*
    循环中定义变量min=0最小索引
    max=arr.length‐1最大索引
    min++,max‐‐
    */
    for (int min = 0, max = arr.length ‐ 1; min <= max; min++, max‐‐) {
    //利用第三方变量完成数组中的元素交换
      int temp = arr[min];
      arr[min] = arr[max];
      arr[max] = temp;
    }
    // 反转后,遍历数组
    for (int i = 0; i < arr.length; i++) {
      System.out.println(arr[i]);
    }
  }

对象

一、面向对象的特征

  * 封装性
  * 继承性
  * 多态性

二、类和对象的关系

  * 类是对一类事物的描述,是抽象的
  * 对象是一类事物的实例,是具体的
  * 类是对象的模板,对象是类的实体

1、类的定义格式

  • java
  pubic class Student {
    String name;
    int age;
    // 方法
    public void study() {
      Sysm.out.println('好好学习,天天向上')
    }
  }
  • typeScript
  public class Student {
    name: string;
    age: number;
    public study(): void {
      console.log('好好学习,天天向上')
    }
  }

2、类的使用

  public class Test01_Student {
    public static void main(String[] args) {
    //创建对象格式:类名 对象名 = new 类名();
      Student s = new Student();
      System.out.println("s:"+s); //cn.itcast.Student@100363
      //直接输出成员变量值
      System.out.println("姓名:"+s.name); //null
      System.out.println("年龄:"+s.age); //0
      System.out.println("‐‐‐‐‐‐‐‐‐‐");
      //给成员变量赋值
      s.name = "赵丽颖";
      s.age = 18;
      //再次输出成员变量的值
      System.out.println("姓名:"+s.name); //赵丽颖
      System.out.println("年龄:"+s.age); //18
      System.out.println("‐‐‐‐‐‐‐‐‐‐");
      //调用成员方法
      s.study(); // "好好学习,天天向上"
      s.eat(); // "学习饿了要吃饭"
    }
  }

3、成员变量和局部变量的区别

  * 在类中的位置不同 `重点`
    - 成员变量:类中,方法外
    - 局部变量:方法中或者方法声明上(形式参数)
  * 作用范围不一样 `重点`
    - 成员变量:类中
    - 局部变量:方法中
  * 初始化值的不同 `重点`
    - 成员变量:有默认值
    - 局部变量:没有默认值。必须先定义,赋值,最后使用
  * 在内存中的位置不同 `了解`
    - 成员变量:堆内存
    - 局部变量:栈内存
  * 生命周期不同 `了解`
    - 成员变量:随着对象的创建而存在,随着对象的消失而消失
    - 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

三、封装

1、步骤

  * 使用 private 关键字来修饰成员变量。
  * 对需要访问的成员变量,提供对应的一对 getXxx 方法 、 setXxx 方法。
  • private的含义
  * private是一个权限修饰符,代表最小权限。
  * 可以修饰成员变量和成员方法。
  * 被private修饰后的成员变量和成员方法,只在本类中才能访问。

2、实例代码

  • 使用 private 修饰成员变量,代码如下:
  public class Student {
    private String name;
    private int age;
  }
  • 提供 getXxx 方法 setXxx 方法,可以访问成员变量,代码如下:
  public class Student {
    private String name;
    private int age;
    public void setName(String n) {
      name = n;
    }
    public String getName() {
      return name;
    }
    public void setAge(int a) {
      age = a;
    }
    public int getAge() {
      return age;
    }
  }

3、this关键字

  * this代表所在类的当前对象的引用(地址值),即对象自己的引用。
  * 方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。


java  微博  QQ  朋友圈