zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    
  • 相关阅读:
    【Linux/Ubuntu学习5】Ubuntu 下android 开发,eclipse不能识别手机
    【高德地图开发3】---地图显示
    【高德地图开发2】---配置工程
    【高德地图开发1】---简介
    【Linux/Ubuntu学习4】ubuntu 下面安装 vim 的问题
    【Linux/Ubuntu学习3】解决ubuntu解压windows生成的zip文件时乱码问题
    【开源项目8】Android开源项目分类汇总【畜生级别】
    【开源项目7】Android视图注入库:butterknife
    【Android 界面效果34】Android里Service的bindService()和startService()混合使用深入分析
    【开源项目6】介绍MenuDrawer这个牛x的控件,实现左右出菜单,上下出菜单
  • 原文地址:https://www.cnblogs.com/Alpacapyer/p/13983433.html
Copyright © 2011-2022 走看看