java学习(5) -- 面向对象思想

java(5)

面向对象与面向过程的思想对比
面向对象主要以对象为主,赋予过程
面向过程不需要以对象尾注,注重过程

类和对象

什么是类
类是对现实生活中一类具有共同属性和行为的事物的抽象

类是对事物,也就是对象的一种秒速,可以将类理解为一张设计图,根据设计图,可以创建出具体存在的事物

类的定义和组成

类的组成: 属性和行为

  • 属性
    该事物的各种特性,在代码中通过成员变量来体现(类中方法外的变量)

  • 行为
    该事物存在的功能,在代码中通过成员方法来体现

package hzj;

import javax.swing.*;
import java.util.Random;
import java.util.Scanner;

public class DemoScanner {
    public static void main(String[] args) {
        Student s = new Student();
        System.out.println(s.name);
        System.out.println(s); // hzj.Student@d716361  @后面的是内存地址 @前面是全类名,包名+类名
    }
}

class Student{
    String name = "hzj";
    int age = 12;
}

单个对象的内存图

多个对象的内存图

两个引用指向同一个对象内存图

垃圾回收

当堆内存中,对象或数组产生的地址,通过任何方式都不能被找到后,会被判定为内存中的垃圾
垃圾会被java垃圾回收期,空闲的时候自动进行清理

成员变量与局部变量

成员变量 类中方法外的变量
局部变量 方法中的变量

class Student{

    String name = "hzj"; // 成员变量

    public void desc(){
        String name = "123"; // 局部变量
        System.out.printf("my name is",name);
    }
}

封装

保护类中的成员变量不被轻易改变,成员变量设置为私有


public class DemoScanner {
    public static void main(String[] args) {
        Student s = new Student();
        System.out.println(s.getName());
        s.setName("yl");
        System.out.println(s.getName());
    }

}

class Student{

    private  String name = "hzj"; // 成员变量

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

API

Application programming interface 应用程序编程接口

String

string 在 java.lang 核心包下面,核心包下面的内容不需要import 导入
通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内存相同,但是地址值不同

public class DemoScanner {
    public static void main(String[] args) {
        // 创建一个空白的字符串对象
        String str = new String();
        System.out.println(str);

        // 创建字符串
        char[] clist1 = new char[]{'h','e'};
        String str2 = new String(clist1);
        System.out.println(str2);
    }

}

内存详情


StringBuilder

StringBuilder 是一个可变的字符串类,我们可以把它看成一个容器
作用 提高字符串操作效率

package hzj;

public class DemoScanner {
    public static void main(String[] args) {
        // 获取1970年 1月1日0时0分到现在的时间
        long start = System.currentTimeMillis();

        String str = "";
        for (int i =0;i<50000;i++){
            str+=i;
        }

        long end = System.currentTimeMillis();
        long times = end-start;
        System.out.println(times); // 982

        // 获取1970年 1月1日0时0分到现在的时间
        start = System.currentTimeMillis();

        str = "";
        for (int i =0;i<50000;i++){
            str+=i;
        }

        end = System.currentTimeMillis();
        times = end-start;
        System.out.println(times); // 508
    }
}

集合和数组特点的对比

  • 集合类的特点,提供了一种存储空间可变的存储模型,存储的数据容量可以发生改变
  • 集合和数组的区别,共同点 都是存储数据的容器 不同点 数组的容量是固定的,集合的容量是可变的

集合 ArraryList

package hzj;

import java.util.ArrayList;

public class DemoScanner {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("abc");
        list.add(123);
        list.add(true);

        // 规定集合类型
        ArrayList<Integer>  list2 = new ArrayList<Integer>();
        list2.add(1);
        list2.add(1);
        list2.add(1);
        list2.add(1);
        list2.add(1);
        System.out.println(list);
        System.out.println(list2);
    }
}
posted @ 2020-11-16 09:00  hzjsea  阅读(114)  评论(0编辑  收藏  举报